YAML Format
~~~~~~~~~~~
-R-95303 A VNF's Heat Orchestration Template **MUST** be defined using valid YAML.
+R-95303 A VNF's Heat Orchestration Template **MUST** be defined
+using valid YAML.
YAML (YAML Ain't
Markup Language) is a human friendly data serialization standard for all
- You must indent your properties and lists with 1 or more spaces
- - All Resource IDs and resource property parameters are case-sensitive. (e.g., "ThIs", is not the same as "thiS")
+ - All Resource IDs and resource property parameters are
+ case-sensitive. (e.g., "ThIs", is not the same as "thiS")
Heat Orchestration Template Structure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
validation constraints that apply to the value of the parameter.
The parameter values provided in the VNF Heat Orchestration Template
are validated against the constraints at instantiation time.
-The stack creation fails if the parameter value doesn’t comply to the constraints.
+The stack creation fails if the parameter value doesn’t comply to
+the constraints.
The constraints are defined as a list with the following syntax
outputs
+++++++
-R-36982 A VNF’s Heat Orchestration template **MAY** contain the “outputs:” section.
+R-36982 A VNF’s Heat Orchestration template **MAY**
+contain the “outputs:” section.
This section allows for specifying output parameters
available to users once the template has been instantiated. If the
R-67231 A VNF’s Heat Orchestration template’s Environment File’s **MUST NOT**
contain the “resource_registry:” section.
-ONAP implementation does not support the Environment File resource_registry
-section. The resource_registry section allows for the definition of custom resources.
+ONAP implementation does not support the Environment File
+resource_registry section. The resource_registry section
+allows for the definition of custom resources.
SDC Treatment of Environment Files
{vm-type}
~~~~~~~~~
-R-01455 When a VNF's Heat Orchestration Template creates a Virtual Machine (i.e., 'OS::Nova::Server'),
-each 'class' of VMs **MUST** be assigned a VNF unique
-'{vm-type}'; where 'class' defines VMs that **MUST** have the following
-identical characteristics:
+R-01455 When a VNF's Heat Orchestration Template creates a
+Virtual Machine (i.e., 'OS::Nova::Server'), each 'class' of VMs
+**MUST** be assigned a VNF unique '{vm-type}'; where 'class'
+defines VMs that **MUST** have the following identical characteristics:
1.) OS::Nova::Server property flavor value
The assignment of a {network-role} is discussed in `Networking`_.
-R-21330 A VNF’s Heat Orchestration Template’s Resource property parameter
-that is associated with external network **MUST** include the ‘{network-role}’’ as part of the parameter name
+R-21330 A VNF’s Heat Orchestration Template’s Resource property
+parameter that is associated with external network **MUST**
+include the ‘{network-role}’’ as part of the parameter name
R-11168 A VNF's Heat Orchestration Template's Resource ID that is
associated with an external network **MUST** include the
- the '{vm-type}' **MUST** appear before the 'int\_{network-role}' and
**MUST** be separated by an underscore '_'
- - (e.g., '{vm-type}\_int\_{network-role}', '{vm-type}_{index}\_int\_{network-role}')
+ - (e.g., '{vm-type}\_int\_{network-role}',
+ '{vm-type}_{index}\_int\_{network-role}')
- note that an '{index}' value **MAY** separate the '{vm-type}' and the
'int\_{network-role}' and when this occurs underscores **MUST** separate
SHOULD should be followed. However, deviations are permissible to meet
the needs of the VNF’s Heat Orchestration Template.
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| Resource Type | Resource ID Format | Requirements | Notes |
-| | | | |
-+==============================+=================================================================+====================================+=========================+
-| OS::Cinder::Volume | {vm-type}\_volume\_{index} | **SHOULD** | |
-| | | | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Cinder::VolumeAttachment | {vm-type}\_volumeattachment\_{index} | **SHOULD** | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Heat::CloudConfig | {vm-type}_RCC | **SHOULD** | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Heat::MultipartMime | {vm-type}_RMM | **SHOULD** | |
-| | | | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Heat::ResourceGroup | {vm-type}_RRG | **SHOULD** | |
-| | | | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | | | |
-| | | | |
-| | | | Resource ID for the |
-| | {vm-type}_{index}\_subint\_{network-role}_ | **MUST** for subinterface creation | OS::Heat::ResourceGroup |
-| | port\_{index}_subinterfaces | | that creates |
-| | | | subinterfaces |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Heat::SoftwareConfig | {vm-type}_RSC | **SHOULD** | |
-| | | | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Neutron::Port | {vm-type}_{vm-type-index}_{network-role}\_port\_{port-index} | **MUST** | Resource ID for port |
-| | | | connecting to an |
-| | | | external network. The |
-| | | | {vm-type-index} |
-| | | | is the |
-| | | | instance of the |
-| | | | {vm_type}. The |
-| | | | {port-index} |
-| | | | is the |
-| | | | instance of the |
-| | | | “port” on the |
-| | | | {vm-type}. There is |
-| | | | no index after |
-| | | | {network_role} since |
-| | | | since {network-role} |
-| | | | is unque to the VNF, |
-| | | | there should |
-| | | | only be one instance. |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {vm-type}_{index}\_int\_{network-role}\_port\_{index} | | Resource ID for port |
-| | | **MUST** | connecting to an |
-| | | | internal network. The |
-| | | | {index} that follows |
-| | | | {vm-type} is the |
-| | | | instance of the |
-| | | | {vm_type}. The |
-| | | | {index} that follows |
-| | | | “port” is the |
-| | | | instance of the |
-| | | | “port” on the |
-| | | | {vm-type}. There is |
-| | | | no index after |
-| | | | {network_role} since |
-| | | | since {network-role} |
-| | | | is unque to the AIC |
-| | | | LCP; there should |
-| | | | only be one instance. |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | Reserve_Port\_{vm-type}_{network-role}\_floating_ip\_{index} | | Resource ID for a |
-| | | **MUST** | reserve port that is |
-| | | | used for an |
-| | | | allowed_address_pair. |
-| | Reserve_Port\_{vm-type}_{network-role}\_floating_v6_ip\_{index} | | See Section 5.6.5.5 |
-| | | | for additional |
-| | | | details. |
-| | | | |
-| | | | There is no {index} |
-| | | | that follows |
-| | | | {vm-type} |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Neutron::SecurityGroup | {vm-type}_Sec_Grp | | Security Group |
-| | | **SHOULD** | applicable to one |
-| | | | {vm-type} and more |
-| | | | than one network |
-| | | | (internal and/or |
-| | | | external) |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {network-role}_Sec_Grp | | Security Group |
-| | | **SHOULD** | applicable to more |
-| | | | than one {vm-type} |
-| | | | and one external |
-| | | | network |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | int\_{network-role}_Sec_Grp | | Security Group |
-| | | **SHOULD** | applicable to more |
-| | | | than one {vm-type} |
-| | | | and one internal |
-| | | | network |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {vm-type}_{network-role}_Sec_Grp | | Security Group |
-| | | **SHOULD** | applicable to one |
-| | | | {vm-type} and one |
-| | | | external network |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {vm-type}\_int\_{network-role}_Sec_Grp | | Security Group |
-| | | **SHOULD** | applicable to one |
-| | | | {vm-type} and one |
-| | | | internal network |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | Shared_Sec_Grp | | Security Group |
-| | | **SHOULD** | applicable to more |
-| | | | than one {vm-type} |
-| | | | and more than one |
-| | | | network (internal |
-| | | | and/or external) |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Neutron::Subnet | int\_{network-role}\_subnet\_{index} | | VNF Heat |
-| | | **MUST** | Orchestration |
-| | | | Templates can only |
-| | | | create internal |
-| | | | networks. |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Neutron::Net | int\_{network-role}\_network | | VNF Heat |
-| | | **MUST** | Orchestration |
-| | | | Templates can only |
-| | | | create internal |
-| | | | networks. There is no |
-| | | | {index} because |
-| | | | {nework-role} should |
-| | | | be unique. |
-| | | | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Nova::Keypair | {vm-type}\_keypair\_{index} | **SHOULD** | Key Pair applicable to |
-| | | | one {vm-type} |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {vnf-type}_keypair | **SHOULD** | Key Pair applicable |
-| | | | to all {vm-type} in the |
-| | | | VNF |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Nova::Server | {vm-type}\_server\_{index} | Mandatory | |
-| | | | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Nova::ServerGroup | {vm-type}_RSG | **SHOULD** | Both formats are |
-| | | | valid. |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {vm-type}_Server_Grp | **SHOULD** | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| | {vm-type}_ServerGroup | **SHOULD** | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
-| OS::Swift::Container | {vm-type}_RSwiftC | **SHOULD** | |
-+------------------------------+-----------------------------------------------------------------+------------------------------------+-------------------------+
++-----------------+-------------------------+-------------+------------------+
+|Resource Type |Resource ID Format | Requirements| Notes |
+| | | | |
++=================+=========================+=============+==================+
+| OS::Cinder:: | {vm-type}\_volume\ | **SHOULD** | |
+| Volume | _{index} | | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Cinder:: | {vm-type}\ | **SHOULD** | |
+| VolumeAttachment| _volumeattachment\ | | |
+| | _{index} | | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Heat:: | {vm-type}_RCC | **SHOULD** | |
+| CloudConfig | | | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Heat:: | {vm-type}_RMM | **SHOULD** | |
+| MultipartMime | | | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Heat:: | {vm-type}_RRG | **SHOULD** | |
+| ResourceGroup | | | |
++-----------------+-------------------------+-------------+------------------+
+| | {vm-type}\_{index}\ | **MUST** for| Resource ID for |
+| | _subint\_{network-role}\| subinterface| the OS::Heat:: |
+| | _port\_{index}\ | creation | ResourceGroup |
+| | _subinterfaces | | that creates |
+| | | | subinterfaces |
++-----------------+-------------------------+-------------+------------------+
+| OS::Heat:: | {vm-type}_RSC | **SHOULD** | |
+| SoftwareConfig | | | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Neutron:: | {vm-type}\ | **MUST** | Resource ID for |
+| Port | _{vm-type-index}\ | | port connecting |
+| | _{network-role}\_port\ | | to an external |
+| | _{port-index} | | network. The |
+| | | | {vm-type-index} |
+| | | | is the instance |
+| | | | of the {vm_type}.|
+| | | | The {port-index} |
+| | | | is the instance |
+| | | | of the “port” on |
+| | | | the {vm-type}. |
+| | | | There is no index|
+| | | | after |
+| | | | {network_role} |
+| | | | since |
+| | | | {network-role} is|
+| | | | unique to the |
+| | | | VNF, there should|
+| | | | only be one |
+| | | | instance. |
++-----------------+-------------------------+-------------+------------------+
+| | {vm-type}\_{index}\_int\| **MUST** | Resource ID for |
+| | _{network-role}\_port\ | | port connecting |
+| | _{index} | | to an internal |
+| | | | network. The |
+| | | | {index} that |
+| | | | follows {vm-type}|
+| | | | is the instance |
+| | | | of the {vm_type}.|
+| | | | The {index} that |
+| | | | follows “port” is|
+| | | | the instance of |
+| | | | the “port” on the|
+| | | | {vm-type}. There |
+| | | | is no index after|
+| | | | {network_role} |
+| | | | since |
+| | | | {network-role} is|
+| | | | unque to the AIC |
+| | | | LCP; there should|
+| | | | only be one |
+| | | | instance. |
++-----------------+-------------------------+-------------+------------------+
+| | Reserve_Port\_{vm-type}\| | Resource ID for a|
+| | _{network-role}\ | **MUST** | reserve port that|
+| | _floating_ip\_{index} | | is used for an |
+| | | | allowed_address |
+| | Reserve_Port\_{vm-type}\| | \_pair. See |
+| | _{network-role}\ | | Section 5.6.5.5 |
+| | _floating_v6_ip\ | | for additional |
+| | _{index} | | details. |
+| | | | |
+| | | | There is no |
+| | | | {index} that |
+| | | | follows {vm-type}|
++-----------------+-------------------------+-------------+------------------+
+| OS::Neutron:: | {vm-type}\_Sec\_Grp | **SHOULD** | Security Group |
+| SecurityGroup | | | applicable to one|
+| | | | {vm-type} and |
+| | | | more than one |
+| | | | network (internal|
+| | | | and/or external) |
++-----------------+-------------------------+-------------+------------------+
+| | {network-role}\_Sec\_Grp| **SHOULD** | Security Group |
+| | | | applicable to |
+| | | | more than one |
+| | | | {vm-type} and one|
+| | | | external network |
++-----------------+-------------------------+-------------+------------------+
+| | int\_{network-role}\ | **SHOULD** | Security Group |
+| | _Sec\_Grp | | applicable to |
+| | | | more than one |
+| | | | {vm-type} and one|
+| | | | internal network |
++-----------------+-------------------------+-------------+------------------+
+| | {vm-type}\ | **SHOULD** | Security Group |
+| | _{network-role}\_Sec\ | | applicable to one|
+| | _Grp | | {vm-type} and one|
+| | | | external network |
++-----------------+-------------------------+-------------+------------------+
+| | {vm-type}\_int\ | **SHOULD** | Security Group |
+| | _{network-role}\_Sec\ | | applicable to one|
+| | _Grp | | {vm-type} and one|
+| | | | internal network |
++-----------------+-------------------------+-------------+------------------+
+| | Shared\_Sec\_Grp | **SHOULD** | Security Group |
+| | | | applicable to |
+| | | | more than one |
+| | | | {vm-type} and |
+| | | | more than one |
+| | | | network (internal|
+| | | | and/or external) |
++-----------------+-------------------------+-------------+------------------+
+| OS::Neutron:: | int\_{network-role}\ | **MUST** | VNF Heat |
+| Subnet | _subnet\_{index} | | Orchestration |
+| | | | Templates can |
+| | | | only create |
+| | | | internal |
+| | | | networks. |
++-----------------+-------------------------+-------------+------------------+
+| OS::Neutron::Net| int\_{network-role}\ | **MUST** | VNF Heat |
+| | _network | | Orchestration |
+| | | | Templates can |
+| | | | only create |
+| | | | internal |
+| | | | networks. There |
+| | | | is no {index} |
+| | | | because |
+| | | | {nework-role} |
+| | | |should be unique. |
++-----------------+-------------------------+-------------+------------------+
+| OS::Nova:: | {vm-type}\_keypair\ | **SHOULD** | Key Pair |
+| Keypair | _{index} | | applicable to one|
+| | | | a{vm-type} |
++-----------------+-------------------------+-------------+------------------+
+| | {vnf-type}_keypair | **SHOULD** | Key Pair |
+| | | | applicable to all|
+| | | | {vm-type} in the |
+| | | | VNF |
++-----------------+-------------------------+-------------+------------------+
+| OS::Nova::Server| {vm-type}\_server\ | Mandatory | |
+| | _{index} | | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Nova:: | {vm-type}_RSG | **SHOULD** | Both formats are |
+| ServerGroup | | | valid. |
++-----------------+-------------------------+-------------+------------------+
+| | {vm-type}_Server_Grp | **SHOULD** | |
++-----------------+-------------------------+-------------+------------------+
+| | {vm-type}_ServerGroup | **SHOULD** | |
++-----------------+-------------------------+-------------+------------------+
+| OS::Swift:: | {vm-type}\_RSwiftC | **SHOULD** | |
+| Container | | | |
++-----------------+-------------------------+-------------+------------------+
Table 2: Example OpenStack Heat Resource ID
However, deviations in the Resource ID format that is shown is
permitted.
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| Resource | Resource ID | Mandatory / | Notes | |
-| Type | Format | Optional | | |
-+=================+==========================================================================+=================+=================+===+
-| OS::ContrailV2: | {vm-type}_{index}_{network-role}\_vmi\_{index}\_IP\_{index} | **MUST** – | The {index} | |
-| :InstanceIp | | IPv4 address on | that follows | |
-| | | vmi external | {vm-type} is | |
-| | | network | the instance of | |
-| | | | the {vm_type}. | |
-| | | | The {index} | |
-| | | | that follows | |
-| | | | “vmi” is the | |
-| | | | instance of the | |
-| | | | “vmi” on the | |
-| | | | {vm-type}. | |
-| | | | There is no | |
-| | | | index after | |
-| | | | {network_role} | |
-| | | | since since | |
-| | | | {network-role} | |
-| | | | is unque. The | |
-| | | | {index} that | |
-| | | | follows the | |
-| | | | “IP” is the | |
-| | | | instance of the | |
-| | | | “IP” on the | |
-| | | | “vmi” | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}_{network-role}\_vmi\_{index}\_v6\_IP\_{index} | **MUST** – | | |
-| | | IPv6 address on | | |
-| | | vmi external | | |
-| | | network | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}\_int\_{network-role}\_vmi\_{index}\_IP\_{index} | **MUST** – | | |
-| | | IPv4 address on | | |
-| | | vmi internal | | |
-| | | network | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}\_int\_{network-role}\_vmi\_{index}\_v6\_IP\_{index} | **MUST** – | | |
-| | | IPv6 address on | | |
-| | | vmi internal | | |
-| | | network | | |
-| | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}\_subint\_{network-role}\_vmi\_{index}\_IP\_{index} | **MUST** – | | |
-| | | IPv4 address on | | |
-| | | sub-interface | | |
-| | | vmi external | | |
-| | | network | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}\_subint\_{network-role}\_vmi\_{index}\_v6\_IP\_{index} | **MUST** – | | |
-| | | IPv6 address on | | |
-| | | sub-interface | | |
-| | | vmi external | | |
-| | | network | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | {network-role}_RIRT | **MAY** | | |
-| :InterfaceRoute | | | | |
-| Table | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | {network-role}_RNI | **MAY** | | |
-| :NetworkIpam | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | {vm-type}_RPT | **MAY** | | |
-| :PortTuple | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | {vm-type}\_RSHC\_{LEFT/RIGHT} | **MAY** | | |
-| :ServiceHealthC | | | | |
-| heck | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | {vm-type}\_RST\_{index} | **MAY** | | |
-| :ServiceTemplat | | | | |
-| e | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | {vm-type}\_{index}\_{network-role}\_vmi\_{index} | **MUST** - vmi | Resource ID for | |
-| :VirtualMachine | | attached to an | virtual machine | |
-| Interface | | external | interface (vmi) | |
-| | | network | connecting to | |
-| | | | an external | |
-| | | | network. The | |
-| | | | {index} that | |
-| | | | follows | |
-| | | | {vm-type} is | |
-| | | | the instance of | |
-| | | | the {vm_type}. | |
-| | | | The {index} | |
-| | | | that follows | |
-| | | | “vmi” is the | |
-| | | | instance of the | |
-| | | | “vmi” on the | |
-| | | | {vm-type}. | |
-| | | | There is no | |
-| | | | index after | |
-| | | | {network_role} | |
-| | | | since since | |
-| | | | {network-role} | |
-| | | | is unque to the | |
-| | | | AIC LCP; there | |
-| | | | should only be | |
-| | | | one instance. | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}\_int\_{network-role}\_vmi\_{index} | **MUST** - vmi | | |
-| | | attached to an | | |
-| | | internal | | |
-| | | network | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | {vm-type}_{index}\_subint\_{network-role}\_vmi\_{index} | **MUST** - vmi | | |
-| | | attached to a | | |
-| | | sub-interface | | |
-| | | network | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| OS::ContrailV2: | int\_{network-role}\_RVN | **MAY** | VNF Heat | |
-| :VirtualNetwork | | | Orchestration | |
-| | | | Templates can | |
-| | | | only create | |
-| | | | internal | |
-| | | | networks. There | |
-| | | | is no {index} | |
-| | | | because | |
-| | | | {nework-role} | |
-| | | | should be | |
-| | | | unique. Both | |
-| | | | formats are | |
-| | | | valid. | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
-| | int\_{network-role}\_network | **MAY** | | |
-| | | | | |
-+-----------------+--------------------------------------------------------------------------+-----------------+-----------------+---+
++-----------------+---------------------+-----------------+-----------------+
+| Resource | Resource ID | Mandatory / | Notes |
+| Type | Format | Optional | |
++=================+=====================+=================+=================+
+| OS::ContrailV2: | {vm-type}\_{index}\ | **MUST** – | The {index} |
+| :InstanceIp | _{network-role}\ | IPv4 address on | that follows |
+| | _vmi\_{index}\ | vmi external | {vm-type} is |
+| | _IP\_{index} | network | the instance of |
+| | | | the {vm_type}. |
+| | | | The {index} |
+| | | | that follows |
+| | | | “vmi” is the |
+| | | | instance of the |
+| | | | “vmi” on the |
+| | | | {vm-type}. |
+| | | | There is no |
+| | | | index after |
+| | | | {network_role} |
+| | | | since since |
+| | | | {network-role} |
+| | | | is unque. The |
+| | | | {index} that |
+| | | | follows the |
+| | | | “IP” is the |
+| | | | instance of the |
+| | | | “IP” on the |
+| | | | “vmi” |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** – | |
+| | _{network-role}\ | IPv6 address on | |
+| | _vmi\_{index}\_v6\ | vmi external | |
+| | _IP\_{index} | network | |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** – | |
+| | _int\ | IPv4 address on | |
+| | _{network-role}\ | vmi internal | |
+| | _vmi\_{index}\_IP\ | network | |
+| | _{index} | | |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** – | |
+| | _int\ | IPv6 address on | |
+| | _{network-role}\ | vmi internal | |
+| | _vmi\_{index}\_v6\ | network | |
+| | _IP\_{index} | | |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** – | |
+| | _subint\ | IPv4 address on | |
+| | _{network-role}\ | sub-interface | |
+| | _vmi\_{index}\_IP\ | vmi external | |
+| | _{index} | network | |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** – | |
+| | _subint\ | IPv6 address on | |
+| | _{network-role}\ | sub-interface | |
+| | _vmi\_{index}\_v6\ | vmi external | |
+| | _IP\_{index} | network | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | {network-role}\_RIRT| **MAY** | |
+| :InterfaceRoute | | | |
+| Table | | | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | {network-role}\_RNI | **MAY** | |
+| :NetworkIpam | | | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | {vm-type}\_RPT | **MAY** | |
+| :PortTuple | | | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | {vm-type}\_RSHC\ | **MAY** | |
+| :ServiceHealthC | _{LEFT/RIGHT} | | |
+| heck | | | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | {vm-type}\_RST\ | **MAY** | |
+| :ServiceTemplat | _{index} | | |
+| e | | | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | {vm-type}\_{index}\ | **MUST** - vmi | Resource ID for |
+| :VirtualMachine | _{network-role}\ | attached to an | virtual machine |
+| Interface | _vmi\_{index} | external | interface (vmi) |
+| | | network | connecting to |
+| | | | an external |
+| | | | network. The |
+| | | | {index} that |
+| | | | follows |
+| | | | {vm-type} is |
+| | | | the instance of |
+| | | | the {vm_type}. |
+| | | | The {index} |
+| | | | that follows |
+| | | | “vmi” is the |
+| | | | instance of the |
+| | | | “vmi” on the |
+| | | | {vm-type}. |
+| | | | There is no |
+| | | | index after |
+| | | | {network_role} |
+| | | | since since |
+| | | | {network-role} |
+| | | | is unque to the |
+| | | | AIC LCP; there |
+| | | | should only be |
+| | | | one instance. |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** - vmi | |
+| | _int\ | attached to an | |
+| | _{network-role}\ | internal | |
+| | _vmi\_{index} | network | |
++-----------------+---------------------+-----------------+-----------------+
+| | {vm-type}\_{index}\ | **MUST** - vmi | |
+| | _subint\ | attached to a | |
+| | _{network-role}\ | sub-interface | |
+| | _vmi\_{index} | network | |
++-----------------+---------------------+-----------------+-----------------+
+| OS::ContrailV2: | int\_{network-role}\| **MAY** | VNF Heat |
+| :VirtualNetwork | _RVN | | Orchestration |
+| | | | Templates can |
+| | | | only create |
+| | | | internal |
+| | | | networks. There |
+| | | | is no {index} |
+| | | | because |
+| | | | {nework-role} |
+| | | | should be |
+| | | | unique. Both |
+| | | | formats are |
+| | | | valid. |
++-----------------+---------------------+-----------------+-----------------+
+| | int\_{network-role}\| **MAY** | |
+| | _network | | |
++-----------------+---------------------+-----------------+-----------------+
Table 3: Example Contrail Heat resource ID
Contrail Issue with Values for OS::Nova::Server Property Name
_____________________________________________________________
-R-44271 The VNF's Heat Orchestration Template's Resource 'OS::Nova::Server' property
-'name' parameter value **SHOULD NOT** contain special characters
-since the Contrail GUI has a limitation displaying special characters.
+R-44271 The VNF's Heat Orchestration Template's Resource
+'OS::Nova::Server' property 'name' parameter value **SHOULD NOT**
+contain special characters since the Contrail GUI has a limitation
+displaying special characters.
However, if special characters must be used, the only special characters
supported are:
1. network
2. fixed_ips, ip_address
3. fixed_ips, subnet_id or fixed_ips, subnet
+
* Note that in many examples in this document fixed_ips, subnet_id is used.
+
4. allowed_address_pairs, ip_address
Below is a generic example. Note that for some parameters
If a VNF's Port is attached to an external network the IP addresses **MAY**
either be assigned by
+
1. ONAP's SDN-Controller (SDN-C)
2. Cloud Assigned by OpenStack’s DHCP Service
If a VNF's Port is attached to an external network and the port's IP addresses
are assigned by ONAP's SDN-Controller, the 'OS::Neutron::Port' Resource's
+
* property 'fixed_ips' map property 'ip_address' **MUST** be used
- * property 'fixed_ips' map property 'subnet'/'subnet_id'
- **MUST NOT** be used
+ * property 'fixed_ips' map property 'subnet'/'subnet_id' **MUST NOT** be used
If a VNF's Port is attached to an external network and the port's IP addresses
are Cloud Assigned by OpenStack’s DHCP Service,
the 'OS::Neutron::Port' Resource's
+
* property 'fixed_ips' map property 'ip_address' **MUST NOT** be used
* property fixed_ips' map property 'subnet'/'subnet_id' **MAY** be used
are assigned by the VNF's Heat Orchestration Template
(i.e., enumerated in the Heat Orchestration Template's environment file),
the 'OS::Neutron::Port' Resource's
+
* property 'fixed_ips' map property 'ip_address' **MUST** be used
* property 'fixed_ips' map property 'subnet'/'subnet_id'
**MUST NOT** be used
If a VNF's Port is attached to an internal network and the port's IP addresses
are Cloud Assigned by OpenStack’s DHCP Service,
the 'OS::Neutron::Port' Resource's
+
* property 'fixed_ips' map property 'ip_address' **MUST NOT** be used
- * property 'fixed_ips' map property 'subnet'/'subnet_id'
- **MAY** be used
+ * property 'fixed_ips' map property 'subnet'/'subnet_id' **MAY** be used
If a VNF's Heat Orchestration Template 'OS::Neutron::Port' Resource property
'fixed_ips' map property 'ip_address' is specified, then the
R-18008 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
property ‘network’ parameter **MUST** be declared as type: ‘string’.
-R-62983 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an external network, the ‘network’ parameter name **MUST**
+R-62983 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an external network,
+the ‘network’ parameter name **MUST**
- follow the naming convention ‘{network-role}_net_id’ if the Neutron
network UUID value is used to reference the network
where ‘{network-role}’ is the network-role of the external network and
a ‘get_param’ **MUST** be used as the intrinsic function.
-R-86182 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an internal network, and the internal network is created in a different
+R-86182 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an internal network,
+and the internal network is created in a different
Heat Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’
parameter name **MUST**
- follow the naming convention ‘int\_{network-role}_net_name’ if the
OpenStack network name in is used to reference the network.
-where ‘{network-role}’ is the network-role of the internal network and a ‘get_param’ **MUST** be used as the intrinsic function.
+where ‘{network-role}’ is the network-role of the internal network
+and a ‘get_param’ **MUST** be used as the intrinsic function.
In Requirement R-86182, the internal network is created in the VNF's
Base Module (Heat Orchestration Template) and the parameter name is
The output parameter name will be declared as a parameter in the
'parameters' section of the incremental module.
-R-93177 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an internal network, and the internal network is created in the same Heat
+R-93177 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an internal
+network, and the internal network is created in the same Heat
Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’
-parameter name **MUST** obtain the UUID of the internal network by using
-the intrinsic function ‘get_resource’ or ‘get_attr’ and referencing the
-Resource ID of the internal network.
+parameter name **MUST** obtain the UUID of the internal network
+by using the intrinsic function ‘get_resource’ or ‘get_attr’
+and referencing the Resource ID of the internal network.
R-29872 The VNF’s Heat Orchestration Template’s Resource ‘OS::Nova::Server’
property ‘network’ parameter **MUST NOT** be enumerated in the Heat
IPv4 and/or IPv6 addresses.
R-34037 The VNF’s Heat Orchestration Template’s resource ‘OS::Neutron::Port’
-property ‘fixed_ips’ map property ‘ip_address’ parameter **MUST** be declared as
-either type ‘string’ or type ‘comma_delimited_list’.
+property ‘fixed_ips’ map property ‘ip_address’ parameter **MUST**
+be declared as either type ‘string’ or type ‘comma_delimited_list’.
R-40971 When the VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ is attaching to an external network, and an IPv4 address is
type: string
description: Fixed IPv4 assignment for {vm-type} VM {index} on the{network-role} network
-R-04697 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an external network, and an IPv4 address is assigned using
-the property ‘fixed_ips’ map property ‘ip_address’ and the parameter type
-is defined as a comma_delimited_list, the parameter name **MUST** follow the
-naming convention ‘{vm-type}_{network-role}_ips’, where
+R-04697 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an external
+network, and an IPv4 address is assigned using the property
+‘fixed_ips’ map property ‘ip_address’ and the parameter type
+is defined as a comma_delimited_list, the parameter name **MUST**
+follow the naming convention ‘{vm-type}_{network-role}_ips’,
+where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the external network
R-87123 The VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}_{network-role}\_v6\_ip\_{index}’ **MUST NOT** be enumerated
-in the VNF’s Heat Orchestration Template’s Environment File.
+parameter ‘{vm-type}_{network-role}\_v6\_ip\_{index}’
+**MUST NOT** be enumerated in the VNF’s Heat Orchestration
+Template’s Environment File.
ONAP's SDN-Controller assigns the IP Address and ONAP provides
the value at orchestration to the Heat Orchestration Template.
‘OS::Neutron::Port’ is attaching to an external network, and an IPv6
address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention ‘{vm-type}_{network-role}_v6_ips’, where
+name **MUST** follow the naming convention
+‘{vm-type}_{network-role}_v6_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the external network
‘OS::Neutron::Port’ is attaching to an internal network, and an IPv4
address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention ‘{vm-type}\_int\_{network-role}_ips’, where
+name **MUST** follow the naming convention
+‘{vm-type}\_int\_{network-role}_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the internal network
R-97201 The VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’ **MUST** be enumerated
-in the VNF’s Heat Orchestration Template’s Environment File.
+parameter ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’
+**MUST** be enumerated in the VNF’s Heat Orchestration
+Template’s Environment File.
The IP address is local to the VNF's internal network and is (re)used
in every VNF spin up, thus the constant value is declared in the VNF's
‘OS::Neutron::Port’ is attaching to an internal network, and an IPv6
address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention ‘{vm-type}\_int\_{network-role}_v6_ips’, where
+name **MUST** follow the naming convention
+‘{vm-type}\_int\_{network-role}_v6_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the internal network
- {vm-type}_{network-role}_ips
- {vm-type}_{network-role}_v6_ips
-**MUST NOT** be enumerated in the Heat Orchestration Template’s Environment File.
-ONAP provides the IP address assignments at orchestration time.
+**MUST NOT** be enumerated in the Heat Orchestration Template’s
+Environment File. ONAP provides the IP address assignments at
+orchestration time.
R-93496 The VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
Internal Networks
_________________
-R-16805 The VNF Heat Orchestration Template **MUST** adhere to the following naming convention
-for the property allowed\_address\_pairs and Map Property ip\_address
-parameter when the parameter is referencing an “internal” network.
+R-16805 The VNF Heat Orchestration Template **MUST** adhere to the
+following naming convention for the property allowed\_address\_pairs
+and Map Property ip\_address parameter when the parameter is
+referencing an “internal” network.
- {vm-type}\_int\_{network-role}\_floating\_ip for an IPv4 address
description: VIP for {vm-type} VMs on the int_{network-role} network
Multiple allowed\_address\_pairs for a {vm-type} / {network-role} combination
-__________________________________________________________________
+______________________________________________________________________________
The parameter {vm-type}\_{network-role}\_floating\_ip provides only one
allowed address pair IPv4 address per {vm-type} and {network-role} pair.
Not all resources require the property name (e.g., it is optional) and
some resources do not support the property.
-R-85734 The VNF Heat Orchestration Template **MUST** use the intrinsic function str\_replace
-in conjunction with the ONAP supplied metadata parameter
-vnf\_name to generate a unique value,
-when the property name for a non OS::Nova::Server resources is defined
-in a Heat Orchestration Template.
+R-85734 The VNF Heat Orchestration Template **MUST** use the
+intrinsic function str\_replace in conjunction with the ONAP
+supplied metadata parameter vnf\_name to generate a unique
+value, when the property name for a non OS::Nova::Server
+resources is defined in a Heat Orchestration Template.
This prevents the enumeration of a
unique value for the property name in a per instance environment file.
- get_param: fw_sec_grp_id
Interface Route Table Prefixes for Contrail InterfaceRoute Table
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
The parameter associated with the resource
OS::ContrailV2::InterfaceRouteTable property
be embedded within the Base Module or Incremental Module if persistence
is not required.
-R-47788 The VNF Heat Orchestration Template **MUST** have a 1:1 scope of a cinder volume module,
-when it exists, with the Base Module or Incremental Module
+R-47788 The VNF Heat Orchestration Template **MUST** have a 1:1
+scope of a cinder volume module, when it exists, with the
+Base Module or Incremental Module
A single volume module must create only the volumes
required by a single Incremental module or Base module.
- A single Cinder volume module must include all Cinder volumes
needed by the Base/Incremental module.
-- R-79531 The VNF Heat Orchestration Template **MUST** define “outputs” in the volume
- template for each Cinder volume resource universally unique
- identifier (UUID) (i.e. ONAP Volume Template Output Parameters).
+- R-79531 The VNF Heat Orchestration Template **MUST** define
+ “outputs” in the volume template for each Cinder volume
+ resource universally unique identifier (UUID) (i.e. ONAP
+ Volume Template Output Parameters).
- The VNF Incremental Module or Base Module must define input
parameters that match each Volume output parameter (i.e., ONAP Volume
R-35727 The VNF Heat Orchestration Template **MUST** have a
corresponding environment file for an Incremental module.
-R-22656 The VNF Heat Orchestration Template **MUST** have a corresponding environment file
-for a Cinder Volume Module.
+R-22656 The VNF Heat Orchestration Template **MUST** have a
+corresponding environment file for a Cinder Volume Module.
A nested heat template must not have an environment file; OpenStack does
not support it.
resource\_registry in the environment file is not supported and must not
be used.
-R-89868 The VNF Heat Orchestration Template **MUST** have unique file names within the scope
-of the VNF for a nested heat yaml file.
+R-89868 The VNF Heat Orchestration Template **MUST** have unique
+file names within the scope of the VNF for a nested heat yaml file.
-R-52530 The VNF Heat Orchestration Template **MUST NOT** use a directory hierarchy for
-nested templates. All templates must be in a single, flat directory
-(per VNF).
+R-52530 The VNF Heat Orchestration Template **MUST NOT** use a
+directory hierarchy for nested templates. All templates must
+be in a single, flat directory (per VNF).
A nested heat template may be used by any module within a given VNF.
- Constrains must not be defined for any parameter enumerated in a
nested heat template.
-- R-11041 The VNF Heat Orchestration Template **MUST** have the resource calling the
- nested yaml file pass in as properties all parameters defined
- in nested yaml file.
+- R-11041 The VNF Heat Orchestration Template **MUST** have the
+ resource calling the nested yaml file pass in as properties
+ all parameters defined in nested yaml file.
-- R-61183 The VNF Heat Orchestration Template **MUST NOT** change the parameter names, when OS::Nova::Server metadata parameters are past into a nested heat
- template.
+- R-61183 The VNF Heat Orchestration Template **MUST NOT**
+ change the parameter names, when OS::Nova::Server metadata
+ parameters are past into a nested heat template.
- With nested templates, outputs are required to expose any resource
properties of the child templates to the parent template. Those would
Support for Heat Files is subject to the following limitations:
-R-76718 The VNF Heat Orchestration Template **MUST** reference the get\_files targets in
-Heat templates by file name, and the corresponding files should be
-delivered to ONAP along with the Heat templates.
+R-76718 The VNF Heat Orchestration Template **MUST** reference
+the get\_files targets in Heat templates by file name, and the
+corresponding files should be delivered to ONAP along with the
+Heat templates.
R-41888 The VNE Heat **MUST NOT** use URL-based file retrieval.
-R-62177 The VNF Heat Orchestration Template **MUST** have unique file names for the included
-files within the scope of the VNF.
+R-62177 The VNF Heat Orchestration Template **MUST** have unique
+file names for the included files within the scope of the VNF.
-R-87848 The VNF Heat Orchestration Template **MUST** have all included files in a single, flat
-directory per VNF. ONAP does not support a directory hierarchy.
+R-87848 The VNF Heat Orchestration Template **MUST** have all
+included files in a single, flat directory per VNF. ONAP does
+not support a directory hierarchy.
- Included files may be used by all Modules within a given VNF.
Heat
~~~~
-R-95303 A VNF's Heat Orchestration Template **MUST** be defined using valid YAML.
+R-95303 A VNF's Heat Orchestration Template **MUST**
+be defined using valid YAML.
R-27078 A VNF's Heat Orchestration template **MUST** contain
the section "heat_template_version:".
R-78569 A VNF’s Heat Orchestration Template’s Resouce **MAY**
declare the attribute “external_id:”.
-R-36982 A VNF’s Heat Orchestration template **MAY** contain the “outputs:” section.
+R-36982 A VNF’s Heat Orchestration template **MAY** contain the
+“outputs:” section.
R-86285 The VNF Heat Orchestration Template **MUST** have a corresponding
environment file, even if no parameters are required to be enumerated.
R-03251 A VNF’s Heat Orchestration Template’s Resource OS::Cinder::Volume
**MAY** be defined in a Cinder Volume Module.
-* R-11200 The VNF **MUST** keep the scope of a Cinder volume module,
+R-11200 The VNF **MUST** keep the scope of a Cinder volume module,
when it exists, to be 1:1 with the VNF Base Module or Incremental Module.
R-11200 The VNF **MUST** keep the scope of a Cinder volume module, when it
as a parameter in the ‘outputs:’ section of the Base Module and the port
resource **MUST** use a ‘get_param’ to obtain the network UUID.
-R-01455 When a VNF's Heat Orchestration Template creates a Virtual Machine (i.e., 'OS::Nova::Server'),
+R-01455 When a VNF's Heat Orchestration Template creates a
+Virtual Machine (i.e., 'OS::Nova::Server'),
each 'class' of VMs **MUST** be assigned a VNF unique
'{vm-type}'; where 'class' defines VMs that **MUST** have the following
identical characteristics:
-R-82481 A VNF's Heat Orchestration Template's Resource property
-parameter that is
-associated with a unique Virtual Machine type **MUST**
-include '{vm-type}' as part of the parameter name with two
-exceptions:
+R-82481 A VNF's Heat Orchestration Template's Resource
+property parameter that is associated with a unique Virtual
+Machine type **MUST** include '{vm-type}' as part of the
+parameter name with two exceptions:
R-66729 A VNF’s Heat Orchestration Template’s Resource that is
associated with a unique Virtual Machine type **MUST** include
‘{vm-type}’ in Resource IDs and vice versa.
R-21330 A VNF’s Heat Orchestration Template’s Resource property parameter
-that is associated with external network **MUST** include the ‘{network-role}’’ as part of the parameter name
+that is associated with external network **MUST** include the
+‘{network-role}’’ as part of the parameter name
R-11168 A VNF's Heat Orchestration Template's Resource ID that is
associated with an external network **MUST** include the
- the '{vm-type}' **MUST** appear before the 'int\_{network-role}' and
**MUST** be separated by an underscore '_'
- - (e.g., '{vm-type}\_int\_{network-role}', '{vm-type}_{index}\_int\_{network-role}')
+ - (e.g., '{vm-type}\_int\_{network-role}',
+ '{vm-type}_{index}\_int\_{network-role}')
- note that an '{index}' value **MAY** separate the '{vm-type}' and the
'int\_{network-role}' and when this occurs underscores **MUST** separate
‘OS::Nova::Server’ property ‘name’ parameter **MUST NOT** be enumerated
in the Heat Orchestration Template’s Environment File.
-R-44271 The VNF's Heat Orchestration Template's Resource 'OS::Nova::Server' property
-'name' parameter value **SHOULD NOT** contain special characters
-since the Contrail GUI has a limitation displaying special characters.
+R-44271 The VNF's Heat Orchestration Template's Resource
+'OS::Nova::Server' property 'name' parameter value **SHOULD NOT**
+contain special characters since the Contrail GUI has a limitation
+displaying special characters.
R-98450 The VNF’s Heat Orchestration Template’s Resource
‘OS::Nova::Server’ property ‘availability_zone’ parameter name
R-18008 The VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
property ‘network’ parameter **MUST** be declared as type: ‘string’.
-R-62983 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an external network, the ‘network’ parameter name **MUST**
+R-62983 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an external
+network, the ‘network’ parameter name **MUST**
- follow the naming convention ‘{network-role}_net_id’ if the Neutron
network UUID value is used to reference the network
where ‘{network-role}’ is the network-role of the external network and
a ‘get_param’ **MUST** be used as the intrinsic function.
-R-86182 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an internal network, and the internal network is created in a different
-Heat Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’
-parameter name **MUST**
+R-86182 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an internal
+network, and the internal network is created in a different
+Heat Orchestration Template than the ‘OS::Neutron::Port’, the
+‘network’ parameter name **MUST**
- follow the naming convention ‘int\_{network-role}_net_id’ if the Neutron
network UUID value is used to reference the network
- follow the naming convention ‘int\_{network-role}_net_name’ if the
OpenStack network name in is used to reference the network.
-where ‘{network-role}’ is the network-role of the internal network and a ‘get_param’ **MUST** be used as the intrinsic function.
+where ‘{network-role}’ is the network-role of the internal network
+and a ‘get_param’ **MUST** be used as the intrinsic function.
-R-93177 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an internal network, and the internal network is created in the same Heat
+R-93177 When the VNF’s Heat Orchestration Template’s Resource
+‘OS::Neutron::Port’ is attaching to an internal network, and
+the internal network is created in the same Heat
Orchestration Template than the ‘OS::Neutron::Port’, the ‘network’
parameter name **MUST** obtain the UUID of the internal network by using
the intrinsic function ‘get_resource’ or ‘get_attr’ and referencing the
Orchestration Template’s Environment File.
R-34037 The VNF’s Heat Orchestration Template’s resource ‘OS::Neutron::Port’
-property ‘fixed_ips’ map property ‘ip_address’ parameter **MUST** be declared as
-either type ‘string’ or type ‘comma_delimited_list’.
+property ‘fixed_ips’ map property ‘ip_address’ parameter **MUST** be
+declared as either type ‘string’ or type ‘comma_delimited_list’.
R-40971 When the VNF’s Heat Orchestration Template’s Resource
-‘OS::Neutron::Port’ is attaching to an external network, and an IPv4 address is
-assigned using the property
+‘OS::Neutron::Port’ is attaching to an external network, and an
+IPv4 address is assigned using the property
‘fixed_ips’ map property ‘ip_address’ and the parameter type is defined
as a string, the parameter name **MUST** follow the naming
convention ‘{vm-type}_{network-role}\_ip\_{index}’, where
‘{vm-type}_{network-role}\_ip\_{index}’ **MUST NOT** be enumerated in the
VNF’s Heat Orchestration Template’s Environment File.
-R-04697 When the VNF’s Heat Orchestration Template’s Resource ‘OS::Neutron::Port’
-is attaching to an external network, and an IPv4 address is assigned using
-the property ‘fixed_ips’ map property ‘ip_address’ and the parameter type
-is defined as a comma_delimited_list, the parameter name **MUST** follow the
-naming convention ‘{vm-type}_{network-role}_ips’, where
+R-04697 When the VNF’s Heat Orchestration Template’s
+Resource ‘OS::Neutron::Port’ is attaching to an external
+network, and an IPv4 address is assigned using the property
+‘fixed_ips’ map property ‘ip_address’ and the parameter type
+is defined as a comma_delimited_list, the parameter name **MUST**
+follow the naming convention ‘{vm-type}_{network-role}_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the external network
R-87123 The VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}_{network-role}\_v6\_ip\_{index}’ **MUST NOT** be enumerated
-in the VNF’s Heat Orchestration Template’s Environment File.
+parameter ‘{vm-type}_{network-role}\_v6\_ip\_{index}’
+**MUST NOT** be enumerated in the VNF’s Heat Orchestration
+Template’s Environment File.
R-23503 When the VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ is attaching to an external network, and an IPv6
address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention ‘{vm-type}_{network-role}_v6_ips’, where
+name **MUST** follow the naming convention
+‘{vm-type}_{network-role}_v6_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the external network
‘OS::Neutron::Port’ is attaching to an internal network, and an IPv4
address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention ‘{vm-type}\_int\_{network-role}_ips’, where
+name **MUST** follow the naming convention
+‘{vm-type}\_int\_{network-role}_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the internal network
R-97201 The VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
-parameter ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’ **MUST** be enumerated
-in the VNF’s Heat Orchestration Template’s Environment File.
+parameter ‘{vm-type}\_int\_{network-role}\_v6\_ip\_{index}’
+**MUST** be enumerated in the VNF’s Heat Orchestration Template’s
+Environment File.
R-29765 When the VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ is attaching to an internal network, and an IPv6
address is assigned using the property ‘fixed_ips’ map property ‘ip_address’
and the parameter type is defined as a comma_delimited_list, the parameter
-name **MUST** follow the naming convention ‘{vm-type}\_int\_{network-role}_v6_ips’, where
+name **MUST** follow the naming convention
+‘{vm-type}\_int\_{network-role}_v6_ips’, where
- ‘{vm-type}’ is the {vm-type} associated with the OS::Nova::Server
- ‘{network-role}’ is the {network-role} of the internal network
- {vm-type}_{network-role}_ips
- {vm-type}_{network-role}_v6_ips
-**MUST NOT** be enumerated in the Heat Orchestration Template’s Environment File.
-ONAP provides the IP address assignments at orchestration time.
+**MUST NOT** be enumerated in the Heat Orchestration Template’s
+Environment File. ONAP provides the IP address assignments at
+orchestration time.
R-93496 The VNF’s Heat Orchestration Template’s Resource
‘OS::Neutron::Port’ property ‘fixed_ips’ map property ‘ip_address’
- {vm-type}\_{network-role}\_floating\_v6\_ip for an IPv6 address
-R-16805 The VNF Heat Orchestration Template **MUST** adhere to the following naming convention
-for the property allowed\_address\_pairs and Map Property ip\_address
-parameter when the parameter is referencing an “internal” network.
+R-16805 The VNF Heat Orchestration Template **MUST** adhere to the
+following naming convention for the property allowed\_address\_pairs
+and Map Property ip\_address parameter when the parameter is
+referencing an “internal” network.
-R-85734 The VNF Heat Orchestration Template **MUST** use the intrinsic function str\_replace
-in conjunction with the ONAP supplied metadata parameter
-vnf\_name to generate a unique value,
+R-85734 The VNF Heat Orchestration Template **MUST** use the
+intrinsic function str\_replace in conjunction with the ONAP
+supplied metadata parameter vnf\_name to generate a unique value,
when the property name for a non OS::Nova::Server resources is defined
in a Heat Orchestration Template.
-R-47788 The VNF Heat Orchestration Template **MUST** have a 1:1 scope of a cinder volume module,
-when it exists, with the Base Module or Incremental Module
+R-47788 The VNF Heat Orchestration Template **MUST** have a 1:1
+scope of a cinder volume module, when it exists, with the Base
+Module or Incremental Module
R-86285 The VNF Heat Orchestration Template **MUST** have a corresponding
environment file, even if no parameters are required to be enumerated.
R-35727 The VNF Heat Orchestration Template **MUST** have a
corresponding environment file for an Incremental module.
-R-22656 The VNF Heat Orchestration Template **MUST** have a corresponding environment file
-for a Cinder Volume Module.
+R-22656 The VNF Heat Orchestration Template **MUST** have a
+corresponding environment file for a Cinder Volume Module.
-R-89868 The VNF Heat Orchestration Template **MUST** have unique file names within the scope
-of the VNF for a nested heat yaml file.
+R-89868 The VNF Heat Orchestration Template **MUST** have unique
+file names within the scope of the VNF for a nested heat yaml file.
-R-52530 The VNF Heat Orchestration Template **MUST NOT** use a directory hierarchy for
-nested templates. All templates must be in a single, flat directory
-(per VNF).
+R-52530 The VNF Heat Orchestration Template **MUST NOT** use a
+directory hierarchy for nested templates. All templates must be
+in a single, flat directory (per VNF).
-R-76718 The VNF Heat Orchestration Template **MUST** reference the get\_files targets in
-Heat templates by file name, and the corresponding files should be
-delivered to ONAP along with the Heat templates.
+R-76718 The VNF Heat Orchestration Template **MUST** reference the
+get\_files targets in Heat templates by file name, and the corresponding
+files should be delivered to ONAP along with the Heat templates.
R-41888 The VNE Heat **MUST NOT** use URL-based file retrieval.
-R-62177 The VNF Heat Orchestration Template **MUST** have unique file names for the included
-files within the scope of the VNF.
+R-62177 The VNF Heat Orchestration Template **MUST** have unique
+file names for the included files within the scope of the VNF.
**ONAP Management Requirements**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
R-18525 The xNF provider **MUST** provide a JSON file for each
supported action for the xNF. The JSON file must contain key value
pairs with all relevant values populated with sample data that illustrates
-its usage. The fields and their description are defined in Tables A1 and A2 in the Appendix.
+its usage. The fields and their description are defined in Tables A1
+and A2 in the Appendix.
R-75608 The xNF provider **MUST** provide playbooks to be loaded
on the appropriate Ansible Server.
R-16777 The xNF provider **MUST** provide a JSON file for each
supported action for the xNF. The JSON file must contain key value
pairs with all relevant values populated with sample data that illustrates
-its usage. The fields and their description are defined in Table B1 in the Appendix.
+its usage. The fields and their description are defined in Table B1 in
+the Appendix.
R-46567 The xNF Package **MUST** include configuration scripts
for boot sequence and configuration.
onboarding the xNF into the ONAP environment and automating processes
for putting the licenses into use and managing the full lifecycle of
the licenses. The details of this license model are described in
-Tables C1 to C8 in the Appendix. Note: License metadata support in
- ONAP is not currently available and planned for 1Q 2018.
+Tables C1 to C8 in the Appendix. Note: License metadata support in
+ONAP is not currently available and planned for 1Q 2018.
Configuration Management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
R-56218 The VNF **MUST** support ONAP Controller’s Migrate command that
moves container (VM) from a live Physical Server / Compute Node to
another live Physical Server / Compute Node.
-
+
R-38001 The VNF MUST support ONAP Controller’s **Rebuild** command.
R-76901 VNF MUST support a container rebuild mechanism based on existing