1 .. Licensed under a Creative Commons Attribution 4.0 International License.
 
   2 .. http://creativecommons.org/licenses/by/4.0
 
   3 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
 
   5 .. _Nova Server - Metadata Parameters:
 
   7 Resource: OS::Nova::Server Metadata Parameters
 
   8 --------------------------------------------------------------------------------
 
  10 The ``OS::Nova::Server`` resource property ``metadata`` is an optional
 
  12 Table 2 summarizes the mandatory and optional ``metadata`` supported by ONAP.
 
  13 The sections that follow provides the requirements associated with each
 
  14 ``metadata`` parameter.
 
  17 .. csv-table:: **Table 2 OS::Nova::Server Mandatory and Optional Metadata**
 
  18    :header: Resource, Property, Parameter Name, Parameter Type, Required, Parameter Value Provided to Heat
 
  22    OS::Nova::Server, metadata, vnf_id, string, **MUST**, ONAP
 
  23    OS::Nova::Server, metadata, vf_module_id, string, **MUST**, ONAP
 
  24    OS::Nova::Server, metadata, vnf_name, string, **MUST**, ONAP
 
  25    OS::Nova::Server, metadata, vf_module_name, string, **SHOULD**, ONAP
 
  26    OS::Nova::Server, metadata, vm_role, string, **MAY**, YAML or Environment File
 
  27    OS::Nova::Server, metadata, vf_module_index, number, **MAY**, ONAP
 
  28    OS::Nova::Server, metadata, workload_context, string, **MUST**, ONAP
 
  29    OS::Nova::Server, metadata, environment_context, string, **MUST**, ONAP
 
  34 The ``OS::Nova::Server`` resource property ``metadata`` key/value pair
 
  35 ``vnf_id`` is an ONAP generated UUID that identifies the VNF.  The value
 
  36 is provided by ONAP to the VNF's Heat Orchestration
 
  37 Template at orchestration time.
 
  43     :validation_mode: static
 
  46     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
  47     resource property ``metadata`` **MUST**
 
  48     contain the  key/value pair ``vnf_id``
 
  49     and the value **MUST** be obtained via a ``get_param``.
 
  55     :validation_mode: static
 
  58     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
  60     ``metadata`` key/value pair ``vnf_id`` parameter
 
  61     **MUST** be declared as ``vnf_id`` and the parameter **MUST**
 
  62     be defined as type: ``string``.
 
  68     :validation_mode: static
 
  71     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
  73     ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST NOT**
 
  74     have parameter constraints defined.
 
  80     :validation_mode: static
 
  83     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
  85     ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST NOT**
 
  86     be enumerated in the Heat Orchestration Template's environment file.
 
  88 *Example 'vnf_id' Parameter Definition*
 
  96       description: Unique ID for this VNF instance
 
 101 The OS::Nova::Server Resource ``metadata`` map value parameter ``vf_module_id``
 
 102 is an ONAP generated UUID that identifies the VF Module (e.g., Heat
 
 103 Orchestration Template).  The value
 
 104 is provided by ONAP to the VNF's Heat Orchestration
 
 105 Template at orchestration time.
 
 111     :validation_mode: static
 
 114     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 115     property ``metadata`` **MUST**
 
 116     contain the key/value pair ``vf_module_id``
 
 117     and the value MUST be obtained via a ``get_param``.
 
 123     :validation_mode: static
 
 126     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 127     ``metadata`` key/value pair ``vf_module_id`` parameter **MUST**
 
 128     be declared as ``vf_module_id`` and the parameter **MUST**
 
 129     be defined as type: ``string``.
 
 135     :validation_mode: static
 
 138     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 139     ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id``
 
 141     have parameter constraints defined.
 
 147     :validation_mode: static
 
 150     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 151     ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id``
 
 153     be enumerated in the Heat Orchestration Template's environment file.
 
 155 *Example 'vf_module_id' Parameter Definition*
 
 163       description: Unique ID for this VNF module instance
 
 169 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vnf_name``
 
 170 is the ONAP (SDN-C) generated alphanumeric name of the deployed VNF instance.
 
 172 is provided by ONAP to the VNF's Heat Orchestration
 
 173 Template at orchestration time.
 
 179     :validation_mode: static
 
 182     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 183     ``metadata`` **MUST** contain the key/value pair ``vnf_name`` and the
 
 184     value **MUST** be obtained via a ``get_param``.
 
 190     :validation_mode: static
 
 193     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 194     property ``metadata`` key/value pair ``vnf_name`` parameter **MUST**
 
 195     be declared as ``vnf_name`` and the parameter **MUST** be defined as
 
 202     :validation_mode: static
 
 205     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 206     property ``metadata`` key/value pair ``vnf_name``
 
 207     parameter ``vnf_name`` **MUST NOT**
 
 208     have parameter constraints defined.
 
 214     :validation_mode: static
 
 217     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 218     property ``metadata`` key/value pair ``vnf_name`` parameter
 
 219     ``vnf_name`` **MUST NOT**
 
 220     be enumerated in the Heat Orchestration Template's environment file.
 
 223 *Example 'vnf_name' Parameter Definition*
 
 231       description: Unique name for this VNF instance
 
 236 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter
 
 238 is the deployment name of the heat stack created (e.g., ``<STACK_NAME>``)
 
 240 VNF's Heat Orchestration template
 
 241 in the command ``Heat stack-create``
 
 242 (e.g., ``Heat stack-create [-f <FILE>] [-e <FILE>] <STACK_NAME>``).
 
 243 The ``vf_module_name`` (e.g., ``<STACK_NAME>`` is specified as
 
 244 part of the orchestration process.
 
 250     :validation_mode: static
 
 253     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 254     property ``metadata`` **SHOULD**
 
 255     contain the key/value pair ``vf_module_name`` and the value **MUST**
 
 256     be obtained via a ``get_param``.
 
 262     :validation_mode: static
 
 265     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 267     ``metadata`` key/value pair ``vf_module_name`` parameter **MUST** be
 
 268     declared as ``vf_module_name`` and the parameter **MUST**
 
 269     be defined as type: ``string``.
 
 275     :validation_mode: static
 
 278     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 280     ``metadata`` key/value pair ``vf_module_name`` parameter ``vf_module_name``
 
 281     **MUST NOT** have parameter constraints defined.
 
 287     :validation_mode: static
 
 291     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 292     property ``metadata`` key/value pair ``vf_module_name``
 
 293     parameter ``vf_module_name`` **MUST NOT**
 
 294     be enumerated in the Heat Orchestration Template's environment file.
 
 297 *Example 'vf_module_name' Parameter Definition*
 
 305       description: Unique name for this VNF Module instance
 
 310 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vm-role``
 
 311 is a ``metadata`` tag that describes the role of the Virtual Machine.
 
 312 The ``vm_role`` is stored in ONAP’s A&AI module and is
 
 313 available for use by other ONAP components and/or north bound systems.
 
 321     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 323     contain the key/value pair ``vm_role`` and the value **MUST** be
 
 327     - hard coded in the key/value pair ``vm_role``.
 
 333     :validation_mode: static
 
 336     If a VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 338     ``metadata`` key/value pair ``vm_role`` value is obtained via
 
 339     ``get_param``, the parameter **MUST** be declared as ``vm_role``
 
 340     and the parameter **MUST** be defined as type: ``string``.
 
 346     :validation_mode: static
 
 349     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 350     property ``metadata`` key/value pair ``vm_role`` parameter ``vm_role``
 
 351     **MUST NOT** have parameter constraints defined.
 
 353 Defining the ``vm_role`` as the ``{vm-type}`` is a recommended convention
 
 360     :validation_mode: static
 
 363     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 364     property ``metadata`` key/value pair ``vm_role`` value **MUST**
 
 365     only contain alphanumeric characters and underscores (i.e., '_').
 
 368 *Example 'vm_role' Parameter Definition*
 
 376       description: Unique role for this VM
 
 378 *Example: 'vm-role' Definition: Hard Coded in
 
 379 OS::Nova::Resource metadata property*
 
 386       type: OS::Nova::Server
 
 392 *Example 'vm-role' Definition: Defined in Environment file
 
 393 and retrieved via 'get_param'*
 
 400       type: OS::Nova::Server
 
 404           vm_role: { get_param: vm_role }
 
 406 Example vnf_id, vf_module_id, vnf_name, vf_module_name, vm_role
 
 407 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 409 The example below depicts part of a Heat Orchestration Template that
 
 410 uses the five of the ``OS::Nova::Server`` resource
 
 411 ``metadata`` map value parameters discussed in this
 
 412 section. The ``{vm-type}`` has been defined as ``lb`` for load balancer.
 
 419       description: VM Name for lb VM 0
 
 422       description: Unique name for this VNF instance
 
 425       description: Unique ID for this VNF instance
 
 428       description: Unique name for this VNF Module instance
 
 431       description: Unique ID for this VNF Module instance
 
 434       description: Unique role for this VM
 
 437       type: OS::Nova::Server
 
 439         name: { get_param: lb_name_0 }
 
 442           vnf_name: { get_param: vnf_name }
 
 443           vnf_id: { get_param: vnf_id }
 
 444           vf_module_name: { get_param: vf_module_name }
 
 445           vf_module_id: { get_param: vf_module_id }
 
 457     :validation_mode: static
 
 459     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 460     resource  property ``metadata`` **MAY**
 
 461     contain the key/value pair ``vf_module_index``
 
 462     and the value **MUST** be obtained via a ``get_param``.
 
 468     :validation_mode: static
 
 471     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 473     ``metadata`` key/value pair ``vf_module_index`` parameter **MUST**
 
 474     be declared as ``vf_module_index`` and the parameter **MUST** be
 
 475     defined as type: ``number``.
 
 482     :validation_mode: static
 
 486     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 487     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
 
 488     have parameter constraints defined.
 
 494     :validation_mode: static
 
 497     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 499     ``metadata`` key/value pair ``vf_module_index`` parameter
 
 500     ``vf_module_index`` **MUST NOT**
 
 501     be enumerated in the Heat Orchestration Template's environment file.
 
 507     :validation_mode: static
 
 510     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 511     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
 
 512     be used in a ``OS::Cinder::Volume`` resource and **MUST NOT** be
 
 513     used in VNF's Volume template;
 
 516 The ``vf_module_index`` parameter indicates which instance of the module is
 
 517 being deployed into the VNF.
 
 518 This parameter may be used in cases where multiple instances of the same
 
 519 incremental module may be instantiated for scaling purposes. The index
 
 520 can be used in the Heat Orchestration Template for indexing into a
 
 521 pseudo-constant array parameter when unique values are required for each
 
 522 module instance, e.g., for fixed private IP addresses on VM types.
 
 524 The ``vf_module_index`` will start at 0 for the first instance of a module
 
 525 type. Subsequent instances of the same module type will receive the
 
 526 lowest unused index. This means that indexes will be reused if a module
 
 527 is deleted and re-added. As an example, if three copies of a module are
 
 528 deployed with ``vf_module_index`` values of 0, 1, and 2 then subsequently
 
 529 the second one is deleted (index 1), and then re-added, index 1 will be
 
 534 In this example, the ``{vm-type}`` has been defined as ``oam_vm`` to represent
 
 535 an OAM VM. An incremental heat module is used to deploy the OAM VM. The
 
 536 OAM VM attaches to an internal control network which has a
 
 537 ``{network-role}`` of ``ctrl``. A maximum of four OAM VMs can be deployed. The
 
 538 environment file contains the four IP addresses that each successive OAM
 
 539 VM will be assigned. The ``vf_module_index`` is used as the index to
 
 540 determine the IP assignment.
 
 547     oam_vm_int_ctrl_ips: 10.10.10.1,10.10.10.2,10.10.10.3,10.10.10.4
 
 556       description: Unique index for this VNF Module instance
 
 559       description: VM Name for lb VM 0
 
 562       description: Neutron UUID for the internal control network
 
 564       type: comma_delimited_list
 
 565       description: Fixed IP assignments for oam VMs on the internal control
 
 569       type: OS::Nova::Server
 
 571         name: { get_param: oam_vm_name_0 }
 
 573           - port: { get_resource: oam_vm_0_int_ctrl_port_0 }
 
 576           vf_module_index: { get_param: vf_module_index }
 
 577     oam_vm_0_int_ctrl_port_0:
 
 578       type: OS::Neutron::Port
 
 580         network: { get_param: int_ctrl_net_id }
 
 581         fixed_ips: [ { "ip_address": {get_param: [ oam_vm_int_ctrl_ips, { get_param: vf_module_index} ]}}]
 
 584 ^^^^^^^^^^^^^^^^^^^^^
 
 592     A VNF's Heat Orchestration Template's OS::Nova::Server
 
 593     Resource **SHOULD** contain the metadata map value parameter
 
 600     :validation_mode: static
 
 603     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 604     property ``metadata`` key/value pair ``workload_context``
 
 606     be declared as ``workload_context`` and the parameter **MUST**
 
 607     be defined as type: ``string``.
 
 613     :validation_mode: static
 
 616     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 617     property ``metadata`` key/value pair ``workload_context``
 
 618     parameter ``workload_context`` **MUST NOT**
 
 619     have parameter constraints defined.
 
 625     :validation_mode: static
 
 629     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 630     property ``metadata`` key/value pair ``workload_context``
 
 631     parameter ``workload_context`` **MUST NOT**
 
 632     be enumerated in the Heat Orchestration Template's environment file.
 
 634 The 'workload\_context' parameter value will be chosen by the Service Model
 
 635 Distribution context client in VID and will be supplied to the
 
 636 Heat Orchestration Template by ONAP at orchestration time.
 
 638 *Example Parameter Definition*
 
 645       description: Workload Context for this VNF instance
 
 648 *Example OS::Nova::Server with metadata*
 
 655     {vm-type}_server_{index}:
 
 656        type: OS::Nova::Server
 
 663           vnf_name: { get_param: vnf_name }
 
 664           vnf_id: { get_param: vnf_id }
 
 665           vf_module_name: { get_param: vf_module_name }
 
 666           vf_module_id: { get_param: vf_module_id }
 
 667           workload_context: {get_param: workload_context}
 
 670 ^^^^^^^^^^^^^^^^^^^^^
 
 678     A VNF's Heat Orchestration Template's OS::Nova::Server
 
 679     Resource **SHOULD** contain the metadata map value parameter
 
 680     'environment_context'.
 
 686     :validation_mode: static
 
 689     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 690     property ``metadata`` key/value pair ``environment_context``
 
 691     parameter **MUST** be declared as ``environment_context`` and the
 
 692     parameter type **MUST** be defined as type: ``string``.
 
 698     :validation_mode: static
 
 701     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 702     property ``metadata``key/value pair ``environment_context``
 
 703     parameter ``environment_context`` **MUST NOT**
 
 704     have parameter constraints defined.
 
 710     :validation_mode: static
 
 713     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 715     ``metadata`` key/value pair ``environment_context`` **MUST NOT**
 
 716     be enumerated in the Heat Orchestration Template's environment file.
 
 718 The 'environment_context' parameter value will be defined by the
 
 719 service designer as part of the service model during the SDC
 
 720 on-boarding process and will be supplied to the Heat Orchestration
 
 721 Template by ONAP at orchestration time.
 
 724 *Example Parameter Definition*
 
 731       description: Environment Context for this VNF instance
 
 734 *Example OS::Nova::Server with metadata*
 
 741     {vm-type}_server_{index}:
 
 742        type: OS::Nova::Server
 
 749           vnf_name: { get_param: vnf_name }
 
 750           vnf_id: { get_param: vnf_id }
 
 751           vf_module_name: { get_param: vf_module_name }
 
 752           vf_module_id: { get_param: vf_module_id }
 
 753           workload_context: {get_param: workload_context}
 
 754           environment_context: {get_param: environment_context }