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.
 
  92     :validation_mode: static
 
  95     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
  97     ``metadata`` key/value pair ``vnf_id`` is passed into a Nested YAML
 
  98     file, the key/value pair name ``vnf_id`` **MUST NOT** change.
 
 100 *Example 'vnf_id' Parameter Definition*
 
 108       description: Unique ID for this VNF instance
 
 113 The OS::Nova::Server Resource ``metadata`` map value parameter ``vf_module_id``
 
 114 is an ONAP generated UUID that identifies the VF Module (e.g., Heat
 
 115 Orchestration Template).  The value
 
 116 is provided by ONAP to the VNF's Heat Orchestration
 
 117 Template at orchestration time.
 
 123     :validation_mode: static
 
 126     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 127     property ``metadata`` **MUST**
 
 128     contain the key/value pair ``vf_module_id``
 
 129     and the value MUST be obtained via a ``get_param``.
 
 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 **MUST**
 
 140     be declared as ``vf_module_id`` and the parameter **MUST**
 
 141     be defined as type: ``string``.
 
 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     have parameter constraints defined.
 
 159     :validation_mode: static
 
 162     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 163     ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id``
 
 165     be enumerated in the Heat Orchestration Template's environment file.
 
 172     :validation_mode: static
 
 175     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 177     ``metadata`` key/value pair ``vf_module_id`` is passed into a
 
 179     file, the key/value pair name ``vf_module_id`` **MUST NOT** change.
 
 182 *Example 'vf_module_id' Parameter Definition*
 
 190       description: Unique ID for this VNF module instance
 
 196 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vnf_name``
 
 197 is the ONAP (SDN-C) generated alphanumeric name of the deployed VNF instance.
 
 199 is provided by ONAP to the VNF's Heat Orchestration
 
 200 Template at orchestration time.
 
 206     :validation_mode: static
 
 209     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 210     ``metadata`` **MUST** contain the key/value pair ``vnf_name`` and the
 
 211     value **MUST** be obtained via a ``get_param``.
 
 217     :validation_mode: static
 
 220     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 221     property ``metadata`` key/value pair ``vnf_name`` parameter **MUST**
 
 222     be declared as ``vnf_name`` and the parameter **MUST** be defined as
 
 229     :validation_mode: static
 
 232     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 233     property ``metadata`` key/value pair ``vnf_name``
 
 234     parameter ``vnf_name`` **MUST NOT**
 
 235     have parameter constraints defined.
 
 241     :validation_mode: static
 
 244     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 245     property ``metadata`` key/value pair ``vnf_name`` parameter
 
 246     ``vnf_name`` **MUST NOT**
 
 247     be enumerated in the Heat Orchestration Template's environment file.
 
 253     :validation_mode: static
 
 257     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 259     ``metadata`` key/value pair ``vnf_name`` is passed into a Nested YAML
 
 260     file, the key/value pair name ``vnf_name`` **MUST NOT** change.
 
 262 *Example 'vnf_name' Parameter Definition*
 
 270       description: Unique name for this VNF instance
 
 275 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter
 
 277 is the deployment name of the heat stack created (e.g., ``<STACK_NAME>``)
 
 279 VNF's Heat Orchestration template
 
 280 in the command ``Heat stack-create``
 
 281 (e.g., ``Heat stack-create [-f <FILE>] [-e <FILE>] <STACK_NAME>``).
 
 282 The ``vf_module_name`` (e.g., ``<STACK_NAME>`` is specified as
 
 283 part of the orchestration process.
 
 291     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 292     property ``metadata`` **SHOULD**
 
 293     contain the key/value pair ``vf_module_name`` and the value **MUST**
 
 294     be obtained via a ``get_param``.
 
 300     :validation_mode: static
 
 303     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 305     ``metadata`` key/value pair ``vf_module_name`` parameter **MUST** be
 
 306     declared as ``vf_module_name`` and the parameter **MUST**
 
 307     be defined as type: ``string``.
 
 313     :validation_mode: static
 
 316     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 318     ``metadata`` key/value pair ``vf_module_name`` parameter ``vf_module_name``
 
 319     **MUST NOT** have parameter constraints defined.
 
 325     :validation_mode: static
 
 329     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 330     property ``metadata`` key/value pair ``vf_module_name``
 
 331     parameter ``vf_module_name`` **MUST NOT**
 
 332     be enumerated in the Heat Orchestration Template's environment file.
 
 338     :validation_mode: static
 
 341     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 342     property ``metadata`` key/value pair ``vf_module_name`` is passed into a
 
 344     file, the key/value pair name ``vf_module_name`` **MUST NOT** change.
 
 346 *Example 'vf_module_name' Parameter Definition*
 
 354       description: Unique name for this VNF Module instance
 
 359 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vm-role``
 
 360 is a ``metadata`` tag that describes the role of the Virtual Machine.
 
 361 The ``vm_role`` is stored in ONAP’s A&AI module and is
 
 362 available for use by other ONAP components and/or north bound systems.
 
 370     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
 
 372     contain the key/value pair ``vm_role`` and the value **MUST** be
 
 376     - hard coded in the key/value pair ``vm_role``.
 
 382     :validation_mode: static
 
 385     If a VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 387     ``metadata`` key/value pair ``vm_role`` value is obtained via
 
 388     ``get_param``, the parameter **MUST** be declared as ``vm_role``
 
 389     and the parameter **MUST** be defined as type: ``string``.
 
 395     :validation_mode: static
 
 398     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 399     property ``metadata`` key/value pair ``vm_role`` parameter ``vm_role``
 
 400     **MUST NOT** have parameter constraints defined.
 
 402 Defining the ``vm_role`` as the ``{vm-type}`` is a recommended convention
 
 409     :validation_mode: static
 
 412     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 413     property ``metadata`` key/value pair ``vm_role`` value **MUST**
 
 414     only contain alphanumeric characters and underscores (i.e., '_').
 
 421     :validation_mode: static
 
 424     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 425     property ``metadata`` key/value pair ``vm_role`` is passed into a Nested
 
 427     file, the key/value pair name ``vm_role`` **MUST NOT** change.
 
 430 *Example 'vm_role' Parameter Definition*
 
 438       description: Unique role for this VM
 
 440 *Example: 'vm-role' Definition: Hard Coded in
 
 441 OS::Nova::Resource metadata property*
 
 448       type: OS::Nova::Server
 
 454 *Example 'vm-role' Definition: Defined in Environment file
 
 455 and retrieved via 'get_param'*
 
 462       type: OS::Nova::Server
 
 466           vm_role: { get_param: vm_role }
 
 468 Example vnf_id, vf_module_id, vnf_name, vf_module_name, vm_role
 
 469 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 471 The example below depicts part of a Heat Orchestration Template that
 
 472 uses the five of the ``OS::Nova::Server`` resource
 
 473 ``metadata`` map value parameters discussed in this
 
 474 section. The ``{vm-type}`` has been defined as ``lb`` for load balancer.
 
 481       description: VM Name for lb VM 0
 
 484       description: Unique name for this VNF instance
 
 487       description: Unique ID for this VNF instance
 
 490       description: Unique name for this VNF Module instance
 
 493       description: Unique ID for this VNF Module instance
 
 496       description: Unique role for this VM
 
 499       type: OS::Nova::Server
 
 501         name: { get_param: lb_name_0 }
 
 504           vnf_name: { get_param: vnf_name }
 
 505           vnf_id: { get_param: vnf_id }
 
 506           vf_module_name: { get_param: vf_module_name }
 
 507           vf_module_id: { get_param: vf_module_id }
 
 520     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
 
 521     resource  property ``metadata`` **MAY**
 
 522     contain the key/value pair ``vf_module_index``
 
 523     and the value **MUST** be obtained via a ``get_param``.
 
 529     :validation_mode: static
 
 532     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 534     ``metadata`` key/value pair ``vf_module_index`` parameter **MUST**
 
 535     be declared as ``vf_module_index`` and the parameter **MUST** be
 
 536     defined as type: ``number``.
 
 543     :validation_mode: static
 
 547     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 548     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
 
 549     have parameter constraints defined.
 
 555     :validation_mode: static
 
 558     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 560     ``metadata`` key/value pair ``vf_module_index`` parameter
 
 561     ``vf_module_index`` **MUST NOT**
 
 562     be enumerated in the Heat Orchestration Template's environment file.
 
 568     :validation_mode: static
 
 571     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 572     property ``metadata`` key/value pair ``vf_module_index`` is passed into a
 
 573     Nested YAML file, the key/value pair
 
 574     ``vf_module_index`` **MUST NOT** change.
 
 580     :validation_mode: static
 
 583     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 584     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
 
 585     be used in a ``OS::Cinder::Volume`` resource and **MUST NOT** be
 
 586     used in VNF's Volume template;
 
 589 The ``vf_module_index`` parameter indicates which instance of the module is
 
 590 being deployed into the VNF.
 
 591 This parameter may be used in cases where multiple instances of the same
 
 592 incremental module may be instantiated for scaling purposes. The index
 
 593 can be used in the Heat Orchestration Template for indexing into a
 
 594 pseudo-constant array parameter when unique values are required for each
 
 595 module instance, e.g., for fixed private IP addresses on VM types.
 
 597 The ``vf_module_index`` will start at 0 for the first instance of a module
 
 598 type. Subsequent instances of the same module type will receive the
 
 599 lowest unused index. This means that indexes will be reused if a module
 
 600 is deleted and re-added. As an example, if three copies of a module are
 
 601 deployed with ``vf_module_index`` values of 0, 1, and 2 then subsequently
 
 602 the second one is deleted (index 1), and then re-added, index 1 will be
 
 607 In this example, the ``{vm-type}`` has been defined as ``oam_vm`` to represent
 
 608 an OAM VM. An incremental heat module is used to deploy the OAM VM. The
 
 609 OAM VM attaches to an internal control network which has a
 
 610 ``{network-role}`` of ``ctrl``. A maximum of four OAM VMs can be deployed. The
 
 611 environment file contains the four IP addresses that each successive OAM
 
 612 VM will be assigned. The ``vf_module_index`` is used as the index to
 
 613 determine the IP assignment.
 
 620     oam_vm_int_ctrl_ips: 10.10.10.1,10.10.10.2,10.10.10.3,10.10.10.4
 
 629       description: Unique index for this VNF Module instance
 
 632       description: VM Name for lb VM 0
 
 635       description: Neutron UUID for the internal control network
 
 637       type: comma_delimited_list
 
 638       description: Fixed IP assignments for oam VMs on the internal control
 
 642       type: OS::Nova::Server
 
 644         name: { get_param: oam_vm_name_0 }
 
 646           - port: { get_resource: oam_vm_0_int_ctrl_port_0 }
 
 649           vf_module_index: { get_param: vf_module_index }
 
 650     oam_vm_0_int_ctrl_port_0:
 
 651       type: OS::Neutron::Port
 
 653         network: { get_param: int_ctrl_net_id }
 
 654         fixed_ips: [ { "ip_address": {get_param: [ oam_vm_int_ctrl_ips, { get_param: vf_module_index} ]}}]
 
 657 ^^^^^^^^^^^^^^^^^^^^^
 
 665     A VNF's Heat Orchestration Template's OS::Nova::Server
 
 666     Resource **SHOULD** contain the metadata map value parameter
 
 673     :validation_mode: static
 
 676     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 677     property ``metadata`` key/value pair ``workload_context``
 
 679     be declared as ``workload_context`` and the parameter **MUST**
 
 680     be defined as type: ``string``.
 
 686     :validation_mode: static
 
 689     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 690     property ``metadata`` key/value pair ``workload_context``
 
 691     parameter ``workload_context`` **MUST NOT**
 
 692     have parameter constraints defined.
 
 698     :validation_mode: static
 
 702     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 703     property ``metadata`` key/value pair ``workload_context``
 
 704     parameter ``workload_context`` **MUST NOT**
 
 705     be enumerated in the Heat Orchestration Template's environment file.
 
 711     :validation_mode: static
 
 714     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 715     property ``metadata`` key/value pair ``workload_context``
 
 716     is passed into a Nested YAML
 
 717     file, the key/value pair name ``workload_context`` **MUST NOT** change.
 
 720 The 'workload\_context' parameter value will be chosen by the Service Model
 
 721 Distribution context client in VID and will be supplied to the
 
 722 Heat Orchestration Template by ONAP at orchestration time.
 
 724 *Example Parameter Definition*
 
 731       description: Workload 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}
 
 756 ^^^^^^^^^^^^^^^^^^^^^
 
 764     A VNF's Heat Orchestration Template's OS::Nova::Server
 
 765     Resource **SHOULD** contain the metadata map value parameter
 
 766     'environment_context'.
 
 772     :validation_mode: static
 
 775     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 776     property ``metadata`` key/value pair ``environment_context``
 
 777     parameter **MUST** be declared as ``environment_context`` and the
 
 778     parameter type **MUST** be defined as type: ``string``.
 
 784     :validation_mode: static
 
 787     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 788     property ``metadata``key/value pair ``environment_context``
 
 789     parameter ``environment_context`` **MUST NOT**
 
 790     have parameter constraints defined.
 
 796     :validation_mode: static
 
 799     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
 
 801     ``metadata`` key/value pair ``environment_context`` **MUST NOT**
 
 802     be enumerated in the Heat Orchestration Template's environment file.
 
 808     :validation_mode: static
 
 811     If a VNF's Heat Orchestration Template's ``OS::Nova::Server Resource``
 
 812     ``metadata`` map value parameter ``environment_context`` is passed into a
 
 814     file, the parameter name ``environment_context`` **MUST NOT** change.
 
 816 The 'environment_context' parameter value will be defined by the
 
 817 service designer as part of the service model during the SDC
 
 818 on-boarding process and will be supplied to the Heat Orchestration
 
 819 Template by ONAP at orchestration time.
 
 822 *Example Parameter Definition*
 
 829       description: Environment Context for this VNF instance
 
 832 *Example OS::Nova::Server with metadata*
 
 839     {vm-type}_server_{index}:
 
 840        type: OS::Nova::Server
 
 847           vnf_name: { get_param: vnf_name }
 
 848           vnf_id: { get_param: vnf_id }
 
 849           vf_module_name: { get_param: vf_module_name }
 
 850           vf_module_id: { get_param: vf_module_id }
 
 851           workload_context: {get_param: workload_context}
 
 852           environment_context: {get_param: environment_context }