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.
 
 252     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 253     property metadata **SHOULD** contain the key/value pair ``vf_module_name``.
 
 259     :validation_mode: static
 
 263     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 264     property ``metadata`` key/value pair ``vf_module_name``
 
 266     be obtained via a ``get_param``.
 
 272     :validation_mode: static
 
 275     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 277     ``metadata`` key/value pair ``vf_module_name`` parameter **MUST** be
 
 278     declared as ``vf_module_name`` and the parameter **MUST**
 
 279     be defined as type: ``string``.
 
 285     :validation_mode: static
 
 288     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 290     ``metadata`` key/value pair ``vf_module_name`` parameter ``vf_module_name``
 
 291     **MUST NOT** have parameter constraints defined.
 
 297     :validation_mode: static
 
 301     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 302     property ``metadata`` key/value pair ``vf_module_name``
 
 303     parameter ``vf_module_name`` **MUST NOT**
 
 304     be enumerated in the Heat Orchestration Template's environment file.
 
 307 *Example 'vf_module_name' Parameter Definition*
 
 315       description: Unique name for this VNF Module instance
 
 320 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vm_role``
 
 321 is a ``metadata`` tag that describes the role of the Virtual Machine.
 
 329     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 331     contain the key/value pair ``vm_role`` and the value **MUST** be
 
 335     - hard coded in the key/value pair ``vm_role``.
 
 341     :validation_mode: none
 
 344     If a VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 346     ``metadata`` key/value pair ``vm_role`` value is obtained via
 
 347     ``get_param``, the parameter **MAY** be declared as
 
 349     * ``vm_role`` and the parameter defined as ``type: string``.
 
 350     * ``vm_roles`` and the parameter defined as ``type: comma_delimited_list``.
 
 351     * ``{vm-type}_vm_role`` and the parameter defined as ``type: string``.
 
 357     :validation_mode: static
 
 360     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 361     property ``metadata`` key/value pair ``vm_role`` parameter ``vm_role``
 
 362     **MUST NOT** have parameter constraints defined.
 
 364 Defining the ``vm_role`` as the ``{vm-type}`` is a recommended convention
 
 371     :validation_mode: static
 
 374     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 375     property ``metadata`` key/value pair ``vm_role`` value **MUST**
 
 376     only contain alphanumeric characters and underscores (i.e., '_').
 
 379 *Example 'vm_role' Parameter Definition*
 
 387       description: Unique role for this VM
 
 389 *Example: 'vm_role' Definition: Hard Coded in
 
 390 OS::Nova::Resource metadata property*
 
 397       type: OS::Nova::Server
 
 403 *Example 'vm_role' Definition: Defined in Environment file
 
 404 and retrieved via 'get_param'*
 
 411       type: OS::Nova::Server
 
 415           vm_role: { get_param: vm_role }
 
 417 Example vnf_id, vf_module_id, vnf_name, vf_module_name, vm_role
 
 418 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 420 The example below depicts part of a Heat Orchestration Template that
 
 421 uses the five of the ``OS::Nova::Server`` resource
 
 422 ``metadata`` map value parameters discussed in this
 
 423 section. The ``{vm-type}`` has been defined as ``lb`` for load balancer.
 
 430       description: VM Name for lb VM 0
 
 433       description: Unique name for this VNF instance
 
 436       description: Unique ID for this VNF instance
 
 439       description: Unique name for this VNF Module instance
 
 442       description: Unique ID for this VNF Module instance
 
 445       description: Unique role for this VM
 
 448       type: OS::Nova::Server
 
 450         name: { get_param: lb_name_0 }
 
 453           vnf_name: { get_param: vnf_name }
 
 454           vnf_id: { get_param: vnf_id }
 
 455           vf_module_name: { get_param: vf_module_name }
 
 456           vf_module_id: { get_param: vf_module_id }
 
 469     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 470     resource  property ``metadata`` **MAY**
 
 471     contain the key/value pair ``vf_module_index``.
 
 478     :validation_mode: static
 
 481     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 482     resource  property ``metadata``
 
 483     key/value pair ``vf_module_index``
 
 484     value **MUST** be obtained via a ``get_param``.
 
 490     :validation_mode: static
 
 493     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 495     ``metadata`` key/value pair ``vf_module_index`` parameter **MUST**
 
 496     be declared as ``vf_module_index`` and the parameter **MUST** be
 
 497     defined as type: ``number``.
 
 504     :validation_mode: static
 
 508     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 509     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
 
 510     have parameter constraints defined.
 
 516     :validation_mode: static
 
 519     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 521     ``metadata`` key/value pair ``vf_module_index`` parameter
 
 522     ``vf_module_index`` **MUST NOT**
 
 523     be enumerated in the Heat Orchestration Template's environment file.
 
 529     :validation_mode: static
 
 532     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 533     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
 
 534     be used in a ``OS::Cinder::Volume`` resource and **MUST NOT** be
 
 535     used in VNF's Volume template;
 
 538 The ``vf_module_index`` parameter indicates which instance of the module is
 
 539 being deployed into the VNF.
 
 540 This parameter may be used in cases where multiple instances of the same
 
 541 incremental module are being instantiated for scaling purposes. The index
 
 542 can be used in the Heat Orchestration Template for indexing into a
 
 543 ``comma_delimited_list`` defined parameter to provide a unique value
 
 544 for each module instance.
 
 545 The parameter list may be defined in the VNF's Heat Orchestration
 
 546 Template's environmental file or be provided by SDN-C.
 
 548 ONAP does not support the ``vf_module_index`` to be utilized as an index by all
 
 549 parameters defined as ``comma_delimited_list``.
 
 550 The ``vf_module_index`` must not be used for indexing the following
 
 551 resource property parameters:
 
 553 - ``OS::Nova::Server`` property ``name`` parameter (defined as a
 
 554   ``comma_delimited_list``).
 
 555 - ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address``
 
 556   parameter (defined as a ``comma_delimited_list``) when the port is
 
 557   attaching to an ONAP external network (per the ONAP
 
 558   definition, see Requirement R-57424 and R-16968)
 
 560 The ``vf_module_index`` may be used for indexing ``OS::Neutron::Port`` property
 
 561 ``fixed_ips`` map property ``ip_address`` parameter (defined as a
 
 562 ``comma_delimited_list``) when the port is attaching to an
 
 563 ONAP internal network (per the ONAP definition, see Requirements R-52425 and
 
 564 R-46461 and R-35666).  An example is provided below.
 
 570     :validation_mode: static
 
 571     :introduced: frankfurt
 
 573     A VNF's Heat Orchestration Template's parameter ``vf_module_index``
 
 574     **MUST NOT** be used for indexing an:
 
 576     - ``OS::Nova::Server`` property ``name`` parameter (when defined as a
 
 577       ``comma_delimited_list``).
 
 578     - ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address``
 
 579       parameter (when defined as a ``comma_delimited_list``) when the port is
 
 580       attaching to an ONAP external network (per the ONAP
 
 581       definition, see Requirement R-57424 and R-16968)
 
 583 The ``vf_module_index`` will start at 0 for the first instance of a module
 
 584 type. Subsequent instances of the same module type will receive the
 
 585 lowest unused index. This means that indexes will be reused if a module
 
 586 is deleted and re-added. As an example, if three copies of a module are
 
 587 deployed with ``vf_module_index`` values of 0, 1, and 2 then subsequently
 
 588 the second one is deleted (index 1), and then re-added, index 1 will be
 
 593 In this example, the ``{vm-type}`` has been defined as ``oam_vm`` to represent
 
 594 an OAM VM. An incremental heat module is used to deploy the OAM VM. The
 
 595 OAM VM attaches to an ONAP internal network which has a
 
 596 ``{network-role}`` of ``ctrl``. A maximum of four OAM VMs can be deployed. The
 
 597 environment file contains the four IP addresses that each successive OAM
 
 598 VM will be assigned. The ``vf_module_index`` is used as the index to
 
 599 determine the IP assignment.
 
 606     oam_vm_int_ctrl_ips: 10.10.10.1,10.10.10.2,10.10.10.3,10.10.10.4
 
 615       description: Unique index for this VNF Module instance
 
 618       description: VM Name for lb VM 0
 
 621       description: Neutron UUID for the internal control network
 
 623       type: comma_delimited_list
 
 624       description: Fixed IP assignments for oam VMs on the internal control
 
 628       type: OS::Nova::Server
 
 630         name: { get_param: oam_vm_name_0 }
 
 632           - port: { get_resource: oam_vm_0_int_ctrl_port_0 }
 
 635           vf_module_index: { get_param: vf_module_index }
 
 636     oam_vm_0_int_ctrl_port_0:
 
 637       type: OS::Neutron::Port
 
 639         network: { get_param: int_ctrl_net_id }
 
 640         fixed_ips: [ { "ip_address": {get_param: [ oam_vm_int_ctrl_ips, { get_param: vf_module_index} ]}}]
 
 643 ^^^^^^^^^^^^^^^^^^^^^
 
 651     A VNF's Heat Orchestration Template's OS::Nova::Server
 
 652     Resource **SHOULD** contain the metadata map value parameter
 
 659     :validation_mode: static
 
 662     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 663     property ``metadata`` key/value pair ``workload_context``
 
 665     be declared as ``workload_context`` and the parameter **MUST**
 
 666     be defined as type: ``string``.
 
 672     :validation_mode: static
 
 675     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 676     property ``metadata`` key/value pair ``workload_context``
 
 677     parameter ``workload_context`` **MUST NOT**
 
 678     have parameter constraints defined.
 
 684     :validation_mode: static
 
 688     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 689     property ``metadata`` key/value pair ``workload_context``
 
 690     parameter ``workload_context`` **MUST NOT**
 
 691     be enumerated in the Heat Orchestration Template's environment file.
 
 693 The 'workload\_context' parameter value will be chosen by the Service Model
 
 694 Distribution context client in VID and will be supplied to the
 
 695 Heat Orchestration Template by ONAP at orchestration time.
 
 697 *Example Parameter Definition*
 
 704       description: Workload Context for this VNF instance
 
 707 *Example OS::Nova::Server with metadata*
 
 714     {vm-type}_server_{index}:
 
 715        type: OS::Nova::Server
 
 722           vnf_name: { get_param: vnf_name }
 
 723           vnf_id: { get_param: vnf_id }
 
 724           vf_module_name: { get_param: vf_module_name }
 
 725           vf_module_id: { get_param: vf_module_id }
 
 726           workload_context: {get_param: workload_context}
 
 729 ^^^^^^^^^^^^^^^^^^^^^
 
 737     A VNF's Heat Orchestration Template's OS::Nova::Server
 
 738     Resource **SHOULD** contain the metadata map value parameter
 
 739     'environment_context'.
 
 745     :validation_mode: static
 
 748     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 749     property ``metadata`` key/value pair ``environment_context``
 
 750     parameter **MUST** be declared as ``environment_context`` and the
 
 751     parameter type **MUST** be defined as type: ``string``.
 
 757     :validation_mode: static
 
 760     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 761     property ``metadata``key/value pair ``environment_context``
 
 762     parameter ``environment_context`` **MUST NOT**
 
 763     have parameter constraints defined.
 
 769     :validation_mode: static
 
 772     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 774     ``metadata`` key/value pair ``environment_context`` **MUST NOT**
 
 775     be enumerated in the Heat Orchestration Template's environment file.
 
 777 The 'environment_context' parameter value will be defined by the
 
 778 service designer as part of the service model during the SDC
 
 779 on-boarding process and will be supplied to the Heat Orchestration
 
 780 Template by ONAP at orchestration time.
 
 783 *Example Parameter Definition*
 
 790       description: Environment Context for this VNF instance
 
 793 *Example OS::Nova::Server with metadata*
 
 800     {vm-type}_server_{index}:
 
 801        type: OS::Nova::Server
 
 808           vnf_name: { get_param: vnf_name }
 
 809           vnf_id: { get_param: vnf_id }
 
 810           vf_module_name: { get_param: vf_module_name }
 
 811           vf_module_id: { get_param: vf_module_id }
 
 812           workload_context: {get_param: workload_context}
 
 813           environment_context: {get_param: environment_context }