.. 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., ) MUST only contain alphanumeric characters and underscores (‘_’).* Requirement R-16447 states a VNF’s 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 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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. (e.g., ``{vm-type}_{index}_{network-role}``). .. req:: :id: R-82551 :target: VNF :keyword: MUST :validation_mode: static :updated: casablanca 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. (e.g., ``{vm-type}_{index}_int_{network-role}``). .. req:: :id: R-67793 :target: VNF :keyword: MUST NOT :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca 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 :validation_mode: static :updated: casablanca A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::VirtualNetwork`` Resource ID **MUST** use the naming convention 1) ``int_{network-role}_network`` or 2) ``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 option 1 is preferred.