summaryrefslogtreecommitdiffstats
path: root/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst
diff options
context:
space:
mode:
authorBozawglanian, Hagop (hb755d) <hb755d@att.com>2018-09-04 21:44:28 +0000
committerBozawglanian, Hagop (hb755d) <hb755d@att.com>2018-09-04 21:44:28 +0000
commitc4e85b64d93f7bb4cdcf13cbc65f2256e5bb7a33 (patch)
treebe3abe0eb6ea4407da81dcb3917dbf1d8f35e77a /docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst
parent7b7ff003d1133f68bdd17812112e5a5abc47a7f6 (diff)
VNFRQTS - Breaking up Chapter 5 - Heat
Breaking up the Heat section to make it more granular. Issue-ID: VNFRQTS-275 Change-Id: I020469d7aea199cd71c4d7c67664ad4dbc4071c9 Signed-off-by: Bozawglanian, Hagop (hb755d) <hb755d@att.com>
Diffstat (limited to 'docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst')
-rw-r--r--docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst1080
1 files changed, 1080 insertions, 0 deletions
diff --git a/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst
new file mode 100644
index 0000000..e9635aa
--- /dev/null
+++ b/docs/Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs.rst
@@ -0,0 +1,1080 @@
+.. Licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2017 AT&T Intellectual Property. All rights reserved.
+
+Resource IDs
+-------------------------------
+
+Requirement R-75141 states a VNF's Heat Orchestration Template's
+resource name (i.e., <resource ID>) MUST only contain alphanumeric
+characters and underscores ('_').*
+
+Requirement R-16447 states a VNF's <resource ID> MUST be unique
+across all Heat Orchestration Templates and all HEAT Orchestration
+Template Nested YAML files that are used to create the VNF.
+
+As stated previously, OpenStack requires the <resource ID> to be unique
+to the Heat Orchestration Template and not unique across all Heat
+Orchestration Templates the compose the VNF.
+
+Heat Orchestration Template resources are described in :ref:`resources`.
+
+.. req::
+ :id: R-54517
+ :target: VNF
+ :keyword: MUST
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with a single '{vm-type}', the Resource ID **MUST** contain the '{vm-type}'.
+
+.. req::
+ :id: R-96482
+ :target: VNF
+ :keyword: MUST
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with a single external network, the Resource ID **MUST** contain the text
+ '{network-role}'.
+
+.. req::
+ :id: R-98138
+ :target: VNF
+ :keyword: MUST
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with a single internal network, the Resource ID **MUST** contain the text
+ 'int\_{network-role}'.
+
+.. req::
+ :id: R-82115
+ :target: VNF
+ :keyword: MUST
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with a single '{vm-type}' and a single external network, the Resource
+ ID text **MUST** contain both the '{vm-type}' and the '{network-role}'
+
+ - the '{vm-type}' **MUST** appear before the '{network-role}' and **MUST**
+ be separated by an underscore '_'
+
+ - e.g.,'{vm-type}\_{network-role}', '{vm-type}\_{index}\_{network-role}'
+
+ - note that an '{index}' value **MAY** separate the '{vm-type}' and the
+ '{network-role}' and when this occurs underscores **MUST** separate the
+ three values.
+
+.. req::
+ :id: R-82551
+ :target: VNF
+ :keyword: MUST
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with a single '{vm-type}' and a single internal network, the Resource ID
+ **MUST** contain both the '{vm-type}' and the 'int\_{network-role}' and
+
+ - 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}'
+
+ - note that an '{index}' value **MAY** separate the '{vm-type}' and the
+ 'int\_{network-role}' and when this occurs underscores **MUST** separate
+ the three values.
+
+.. req::
+ :id: R-67793
+ :target: VNF
+ :keyword: MUST NOT
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with more than one '{vm-type}' and/or more than one internal and/or
+ external network, the Resource ID **MUST NOT** contain the '{vm-type}'
+ and/or '{network-role}'/'int\_{network-role}'. It also should contain the
+ term 'shared' and/or contain text that identifies the VNF.
+
+.. req::
+ :id: R-27970
+ :target: VNF
+ :keyword: MAY
+
+ When a VNF's Heat Orchestration Template's resource is associated
+ with more than one '{vm-type}' and/or more than one internal and/or
+ external network, the Resource ID **MAY** contain the term 'shared'
+ and/or **MAY** contain text that identifies the VNF.
+
+.. req::
+ :id: R-11690
+ :target: VNF
+ :keyword: MUST
+
+ When a VNF's Heat Orchestration Template's Resource ID contains
+ an {index} value (e.g. multiple VMs of same {vm-type}), the '{index}'
+ **MUST** start at zero and increment by one.
+
+OpenStack Heat Resources Resource ID Naming Convention
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Some OpenStack Heat Resources Resource IDs
+have mandatory or suggested naming conventions. They are provided
+in the following sections.
+
+OS::Cinder::Volume
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-87004
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Cinder::Volume Resource ID **SHOULD** use the naming convention
+
+ * {vm-type}_volume_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {index} starts at zero and increments by one
+
+OS::Cinder::VolumeAttachment
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-86497
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Cinder::VolumeAttachment Resource ID **SHOULD** use the naming convention
+
+ * {vm-type}_volume_attachment_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {index} starts at zero and increments by one
+
+OS::Heat::CloudConfig
+~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-04747
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::Heat::CloudConfig' Resource ID **MUST** contain the '{vm-type}'.
+
+.. req::
+ :id: R-20319
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource 'OS::Heat::CloudConfig'
+ Resource ID **MAY** use the naming convention
+
+ * {vm-type}_RCC
+
+ where
+
+ * {vm-type} is the vm-type
+ * 'RCC' signifies that it is the Resource Cloud Config
+
+OS::Heat::MultipartMime
+~~~~~~~~~~~~~~~~~~~~~~~
+
+
+.. req::
+ :id: R-30804
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::Heat::MultipartMime' Resource ID **MUST** contain the '{vm-type}'.
+
+.. req::
+ :id: R-18202
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::Heat::MultipartMime' Resource ID **MAY** use the naming convention
+
+ * {vm-type}_RMM
+
+ where
+
+ * {vm-type} is the vm-type
+ * 'RMM' signifies that it is the Resource Multipart Mime
+
+OS::Heat::ResourceGroup
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+There is only a mandatory naming convention for a 'OS::Heat::ResourceGroup'
+that is is creating sub-interfaces.
+
+.. req::
+ :id: R-64197
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Heat::ResourceGroup Resource ID that creates sub-interfaces **MUST**
+ use the naming convention
+
+ * {vm-type}_{vm-type_index}_subint_{network-role}_port_{port-index}_subinterfaces
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the networks
+ that the sub-interfaces attach to
+ * {port-index} is the instance of the the port on the vm-type
+ attached to the network of {network-role}
+
+OS::Heat::SoftwareConfig
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-08975
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::Heat::SoftwareConfig' Resource ID **MUST** contain the '{vm-type}'.
+
+.. req::
+ :id: R-03656
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::Heat::SoftwareConfig' Resource ID **MAY** use the naming convention
+
+ * {vm-type}_RSC
+
+ where
+
+ * {vm-type} is the vm-type
+ * 'RSC' signifies that it is the Resource Software Config
+
+OS::Neutron::Net
+~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-25720
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::Net Resource ID **MUST** use the naming convention
+
+ * int_{network-role}_network
+
+VNF Heat Orchestration Templates can only create internal networks.
+There is no {index} after {network-role} because {network-role}
+**MUST** be unique in the scope of the VNF's
+Heat Orchestration Template.
+
+OS::Neutron::Port
+~~~~~~~~~~~~~~~~~~
+
+
+.. req::
+ :id: R-20453
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::Port that is attaching to an external network Resource ID
+ **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_{network-role}_port_{port-index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {port-index} is the instance of the the port on the vm-type
+ attached to the network of {network-role}
+
+.. req::
+ :id: R-26351
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::Port that is attaching to an internal network Resource ID
+ **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_int_{network-role}_port_{port-index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {port-index} is the instance of the the port on the vm-type
+ attached to the network of {network-role}
+
+.. req::
+ :id: R-27469
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::Port that is creating a *Reserve Port* with an IPv4 address
+ Resource ID **MUST** use the naming convention
+
+ * reserve_port_{vm-type}_{network-role}_floating_ip_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {index} is the instance of the IPv4 *Reserve Port*
+ for the vm-type attached to the network of {network-role}
+
+.. req::
+ :id: R-68520
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource OS::Neutron::Port
+ that is creating a *Reserve Port* with an IPv6 address Resource ID
+ **MUST** use the naming convention
+
+ * reserve_port_{vm-type}_{network-role}_floating_v6_ip_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {index} is the instance of the IPv6 *Reserve Port*
+ for the vm-type attached to the network of {network-role}
+
+OS::Neutron::SecurityGroup
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-08775
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::SecurityGroup that is applicable to one {vm-type} and
+ more than one network (internal and/or external) Resource ID
+ **SHOULD** use the naming convention
+
+ * {vm-type}_security_group
+
+ where
+
+ * {vm-type} is the vm-type
+
+.. req::
+ :id: R-03595
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::SecurityGroup that is applicable to more than
+ one {vm-type} and one external network Resource ID **SHOULD**
+ use the naming convention
+
+ * {network-role}_security_group
+
+ where
+
+ * {network-role} is the network-role
+
+.. req::
+ :id: R-73213
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::SecurityGroup that is applicable to more than
+ one {vm-type} and one internal network Resource ID **SHOULD**
+ use the naming convention
+
+ * int_{network-role}_security_group
+
+ where
+
+ * {network-role} is the network-role
+
+.. req::
+ :id: R-17334
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::SecurityGroup that is applicable to one {vm-type}
+ and one external network Resource ID **SHOULD** use the naming convention
+
+ * {vm-type}_{network-role}_security_group
+
+ where
+
+ * {vm-type} is the vm-type
+ * {network-role} is the network-role
+
+.. req::
+ :id: R-14198
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::SecurityGroup that is applicable to one {vm-type}
+ and one internal network Resource ID **SHOULD** use the naming convention
+
+ * {vm-type}_int_{network-role}_security_group
+
+ where
+
+ * {vm-type} is the vm-type
+ * {network-role} is the network-role
+
+.. req::
+ :id: R-30005
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::SecurityGroup that is applicable to more than one
+ {vm-type} and more than one network (internal and/or external)
+ Resource ID **MAY** use the naming convention
+
+ * shared_security_group
+
+ or
+
+ * {vnf-type}_security_group
+
+ where
+
+ * {vnf-type} describes the VNF
+
+OS::Neutron::Subnet
+~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-59434
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Neutron::Subnet Resource ID **SHOULD** use the naming convention
+
+ * int_{network-role}_subnet_{index}
+
+ where
+
+ * {network-role} is the network-role
+ * {index} is the {index} of the subnet of the network
+
+OS::Nova::Keypair
+~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-24997
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::Nova::Keypair applies to one {vm-type} Resource ID **SHOULD**
+ use the naming convention
+
+ * {vm-type}_keypair_{index}
+
+ where
+
+ * {network-role} is the network-role
+ * {index} is the {index} of the keypair
+
+.. req::
+ :id: R-65516
+ :target: VNF
+ :keyword: SHOULD
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource OS::Nova::Keypair
+ applies to all Virtual Machines in the the VNF, the Resource ID **SHOULD**
+ use the naming convention
+
+ * {vnf-type}_keypair
+
+ where
+
+ * {vnf-type} describes the VNF
+
+OS::Nova::Server
+~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-29751
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource OS::Nova::Server
+ Resource ID **MUST** use the naming convention
+
+ * {vm-type}_server_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {index} is the index
+
+OS::Nova::ServerGroup
+~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-15189
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource OS::Nova::ServerGroup
+ Resource ID **MAY** use the naming convention
+
+ * {vm-type}_RSG
+
+ or
+
+ * {vm-type}_Server_Grp
+
+ or
+
+ * {vm-type}_ServerGroup
+
+ or
+
+ * {vm-type}_servergroup
+
+Contrail Heat Resources Resource ID Naming Convention
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Some Contrail Heat Resources Resource IDs
+have mandatory or suggested naming conventions. They are provided
+in the following sections.
+
+
+OS::ContrailV2::InstanceIp
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-53310
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InstanceIp' that is configuring an IPv4 Address
+ on a port attached to an external network Resource ID **MUST**
+ use the naming convention
+
+ * {vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_IP_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {vmi_index} is the instance of the the virtual machine interface
+ (e.g., port) on the vm-type
+ attached to the network of {network-role}
+ * 'IP' signifies that an IPv4 address is being configured
+ * {index} is the index of the IPv4 address
+
+.. req::
+ :id: R-46128
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InstanceIp' that is configuring an
+ IPv6 Address on a port attached to an external network
+ Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_v6_IP_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {vmi_index} is the instance of the the virtual machine interface
+ (e.g., port) on the vm-type
+ attached to the network of {network-role}
+ * 'v6_IP' signifies that an IPv6 address is being configured
+ * {index} is the index of the IPv6 address
+
+.. req::
+ :id: R-62187
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InstanceIp' that is configuring an
+ IPv4 Address on a port attached to an internal network
+ Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_IP_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {vmi_index} is the instance of the the virtual machine interface
+ (e.g., port) on the vm-type
+ attached to the network of {network-role}
+ * 'IP' signifies that an IPv4 address is being configured
+ * {index} is the index of the IPv4 address
+
+.. req::
+ :id: R-87563
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InstanceIp' that is configuring an
+ IPv6 Address on a port attached to an internal network
+ Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_v6_IP_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {vmi_index} is the instance of the the virtual machine interface
+ (e.g., port) on the vm-type
+ attached to the network of {network-role}
+ * 'v6_IP' signifies that an IPv6 address is being configured
+ * {index} is the index of the IPv6 address
+
+.. req::
+ :id: R-20947
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InstanceIp' that is configuring an IPv4 Address
+ on a sub-interface port attached to a sub-interface network
+ Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_subint_{network-role}_vmi_{vmi_index}_IP_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {vmi_index} is the instance of the the virtual machine interface
+ (e.g., port) on the vm-type
+ attached to the network of {network-role}
+ * 'IP' signifies that an IPv4 address is being configured
+ * {index} is the index of the IPv4 address
+
+.. req::
+ :id: R-88540
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InstanceIp' that is configuring an IPv6 Address
+ on a sub-interface port attached to a sub-interface network
+ Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_subint_{network-role}_vmi_{vmi_index}_v6_IP_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port is attached to
+ * {vmi_index} is the instance of the the virtual machine interface
+ (e.g., port) on the vm-type
+ attached to the network of {network-role}
+ * 'v6_IP' signifies that an IPv6 address is being configured
+ * {index} is the index of the IPv6 address
+
+OS::ContrailV2::InterfaceRouteTable
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-81214
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InterfaceRouteTable' Resource ID **MUST**
+ contain the '{network-role}'.
+
+.. req::
+ :id: R-28189
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::InterfaceRouteTable' Resource ID **MAY**
+ use the naming convention
+
+ * {network-role}_RIRT
+
+ where
+
+ * {network-role} is the network-role
+ * 'RIRT' signifies that it is the Resource Interface Route Table
+
+OS::ContrailV2::NetworkIpam
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-30753
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::NetworkIpam' Resource ID **MUST**
+ contain the '{network-role}'.
+
+.. req::
+ :id: R-81979
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::NetworkIpam' Resource ID **MAY**
+ use the naming convention
+
+ * {network-role}_RNI
+
+ where
+
+ * {network-role} is the network-role
+ * 'RNI' signifies that it is the Resource Network IPAM
+
+OS::ContrailV2::PortTuple
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-20065
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::PortTuple' Resource ID **MUST**
+ contain the '{vm-type}'.
+
+.. req::
+ :id: R-84457
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::PortTuple' Resource ID **MAY**
+ use the naming convention
+
+ * {vm-type}_RPT
+
+ where
+
+ * {vm-type} is the vm-type
+ * 'RPT' signifies that it is the Resource Port Tuple
+
+OS::ContrailV2::ServiceHealthCheck
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-76014
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::ServiceHealthCheck' Resource ID **MUST**
+ contain the '{vm-type}'.
+
+.. req::
+ :id: R-65618
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::ServiceHealthCheck' Resource ID
+ **MAY** use the naming convention
+
+ * {vm-type}_RSHC_{LEFT|RIGHT}
+
+ where
+
+ * {vm-type} is the vm-type
+ * 'RSHC' signifies that it is the Resource Service Health Check
+ * 'LEFT' is used if the Service Health Check is on the left interface
+ * 'RIGHT' is used if the Service Health Check is on the right interface
+
+OS::ContrailV2::ServiceTemplate
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-16437
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::ServiceTemplate' Resource ID **MUST**
+ contain the '{vm-type}'.
+
+.. req::
+ :id: R-14447
+ :target: VNF
+ :keyword: MAY
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ 'OS::ContrailV2::ServiceTemplate' Resource ID **MAY**
+ use the naming convention
+
+ * {vm-type}_RST_{index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * 'RST' signifies that it is the Resource Service Template
+ * '{index}' is is the index
+
+OS::ContrailV2::VirtualMachineInterface
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-96253
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::ContrailV2::VirtualMachineInterface that is attaching
+ to an external network Resource ID **MUST**
+ use the naming convention
+
+ * {vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port (i.e. virtual machine interface) is attached to
+ * {vmi_index} is the instance of the the vmi on the vm-type
+ attached to the network of {network-role}
+
+.. req::
+ :id: R-50468
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::ContrailV2::VirtualMachineInterface that is attaching
+ to an internal network Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port (i.e. virtual machine interface) is attached to
+ * {vmi_index} is the instance of the the vmi on the vm-type
+ attached to the network of {network-role}
+
+.. req::
+ :id: R-54458
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::ContrailV2::VirtualMachineInterface that is attaching to
+ a sub-interface network Resource ID **MUST** use the naming convention
+
+ * {vm-type}_{vm-type_index}_subint_{network-role}_vmi_{vmi_index}
+
+ where
+
+ * {vm-type} is the vm-type
+ * {vm-type_index} is the instance of the {vm-type}
+ * {network-role} is the network-role of the network
+ that the port (i.e. virtual machine interface) is attached to
+ * {vmi_index} is the instance of the the vmi on the vm-type
+ attached to the network of {network-role}
+
+OS::ContrailV2::VirtualNetwork
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. req::
+ :id: R-99110
+ :target: VNF
+ :keyword: MUST
+ :test: no test found
+ :test_case: no test found
+ :test_file: no test found
+
+ A VNF's Heat Orchestration Template's Resource
+ OS::ContrailV2::VirtualNetwork Resource ID **MUST**
+ use the naming convention
+
+ * 'int_{network-role}_network'
+
+ or
+
+ * 'int_{network-role}_RVN' where RVN represents Resource Virtual Network
+
+VNF Heat Orchestration Templates can only create internal networks.
+There is no {index} after {network-role} because {network-role}
+**MUST** be unique in the scope of the VNF's
+Heat Orchestration Template.
+
+Note that the first option is preferred.