Requirement ID,Requirement,Test Module,Test Name `R-00977 `_,"A VNF's Heat Orchestration Template's ``{network-role}`` **MUST NOT** be a substring of ``{vm-type}``.",`test_nova_servers_vm_types `_,test_vm_type_network_role_collision `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`` resource property ``flavor`` value 2.) ``OS::Nova::Server`` resource property ``image`` value 3.) Cinder Volume attachments - Each VM in the ""class"" **MUST** have the identical Cinder Volume configuration 4.) Network attachments and IP address requirements - Each VM in the ""class"" **MUST** have the identical number of ports connecting to the identical networks and requiring the identical IP address configuration.",`test_vm_class_has_unique_type `_,test_vm_class_has_unique_type `R-02164 `_,"When a VNF's Heat Orchestration Template's Contrail resource has a property that references an external network that requires the network's Fully Qualified Domain Name (FQDN), the property parameter * **MUST** follow the format ``{network-role}_net_fqdn`` * **MUST** be declared as type ``string`` * **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File",`test_contrail_fqdn `_,test_contrail_fqdn `R-02691 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``workload_context`` parameter ``workload_context`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_workload_context_parameter_doesnt_exist_in_environment_file `R-03324 `_,"A VNF's Heat Orchestration template's Environment File **MUST** contain the ``parameters:`` section.",`test_environment_file_structure `_,test_environment_file_contains_required_sections `R-04697 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), 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",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-04747 `_,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::CloudConfig`` Resource ID **MUST** contain the ``{vm-type}``.",`test_cloud_config_resource_id `_,test_cloud_config `R-05257 `_,"A VNF's Heat Orchestration Template's **MUST NOT** contain the Resource ``OS::Neutron::FloatingIP``.",`test_forbidden_resources `_,test_neutron_floating_ip_resource_type `R-07443 `_,"A VNF's Heat Orchestration Templates' Cinder Volume Module Output Parameter's name and type **MUST** match the input parameter name and type in the corresponding Base Module or Incremental Module.",`test_volume_outputs_consumed `_,test_volume_outputs_consumed `R-07507 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vnf_id`` parameter **MUST** be declared as ``vnf_id`` and the parameter **MUST** be defined as type: ``string``.",`test_server_parameters `_,test_vnf_id_parameter_type_and_parameter_name `R-08975 `_,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::SoftwareConfig`` Resource ID **MUST** contain the ``{vm-type}``.",`test_software_config_resource_id `_,test_software_config_vm_type `R-09811 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_vf_module_index_parameter_has_no_constraints `R-10754 `_,"If a VNF has two or more ports that attach to an external network that require a Virtual IP Address (VIP), and the VNF requires ONAP automation to assign the IP address, all the Virtual Machines using the VIP address **MUST** be instantiated in the same Base Module Heat Orchestration Template or in the same Incremental Module Heat Orchestration Template.",`test_neutron_port_addresses `_,test_neutron_port_floating `R-10834 `_,"If a VNF's Heat Orchestration Template resource attribute ``property:`` uses a nested ``get_param``, the nested ``get_param`` **MUST** reference an index. That is, to obtain a property value, two ``get_param`` intrinsic functions are used. The second ``get_param`` must be used to obtain an index value used to reference a parameter value in a parameter defined as ``type: comma_delimited_list``. For example: * ``name: {get_param: [ name, get_param: index ] }``",`test_nested_parameter_args `_,test_nested_parameter_args `R-11041 `_,"All parameters defined in a VNFs Nested YAML file **MUST** be passed in as properties of the resource calling the nested yaml file.",`test_nested_template_parameters `_,test_nested_template_parameters `R-11200 `_,"A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1 with a Base module or Incremental module.",`test_volume_outputs_consumed `_,test_volume_outputs_consumed `R-11441 `_,"A VNF's Heat Orchestration Template's parameter type **MUST** be one of the following values: * ``string`` * ``number`` * ``json`` * ``comma_delimited_list`` * ``boolean``",`test_heat_template_structure `_,test_parameter_type `R-11690 `_,"When a VNF's Heat Orchestration Template's Resource ID contains an ``{index}``, the ``{index}`` is a numeric value that **MUST** start at zero and **MUST** increment by one. As stated in R-16447, *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*. While the ``{index}`` will start at zero in the VNF, the ``{index}`` may not start at zero in a given Heat Orchestration Template or HEAT Orchestration Template Nested YAML file.",`test_resource_indices `_,test_indices_start_at_0_increment `R-13194 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``environment_context`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_environment_context_parameter_doesnt_exist_in_environment_file `R-15287 `_,"When the VNF's Heat Orchestration Template's resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), and an IPv6 address is being cloud assigned by OpenStack's DHCP Service and the external network IPv6 subnet is to be specified using the property ``fixed_ips`` map property ``subnet``, the parameter **MUST** follow the naming convention * ``{network-role}_v6_subnet_id`` where * ``{network-role}`` is the network role of the network.",`test_neutron_port_fixed_ips `_,test_neutron_port_external_fixed_ips `R-15480 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_name`` parameter ``vf_module_name`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_vf_module_name_parameter_has_no_constraints `R-16241 `_,"A VNF's internal network **MUST** have one subnet. A VNF's internal network **MAY** have more than one subnet.",`test_network_format `_,test_network_has_subnet `R-16437 `_,"A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::ServiceTemplate`` Resource ID **MUST** contain the ``{vm-type}``.",`test_contrail_resource_id `_,test_contrail_servicetemplate_resource_id `R-16447 `_,"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.",`test_unique_resources_across_all_templates `_,test_unique_resources_across_all_yaml_files `R-16968 `_,"A VNF's Heat Orchestration Templates **MUST NOT** include heat resources to create external networks.",`test_network_format `_,test_network_resource_id_format `R-17528 `_,"A VNF's Heat Orchestration Template's first level Nested YAML file **MUST NOT** contain more than one ``OS::Nova::Server`` resource. A VNF's Heat Orchestration Template's second level Nested YAML file **MUST NOT** contain an ``OS::Nova::Server`` resource.",`test_nesting_nova_server `_,test_nesting_nova_server `R-18008 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``network`` parameter **MUST** be declared as type: ``string``.",`test_neutron_port_network_parameter `_,test_neutron_port_network_param_is_string `R-18683 `_,"If a VNF has one IPv4 OAM Management IP Address and the IP Address needs to be inventoried in ONAP's A&AI database, an output parameter **MUST** be declared in only one of the VNF's Heat Orchestration Templates and the parameter **MUST** be named ``oam_management_v4_address``.",`test_oam_address_outputs `_,test_oam_address_v4_zero_or_one `R-19756 `_,"If a VNF's Heat Orchestration Template ``OS::ContrailV2::InterfaceRouteTable`` resource ``interface_route_table_routes`` property ``interface_route_table_routes_route`` map property parameter ``{vm-type}_{network-role}_route_prefixes`` **MUST** be defined as type ``json``.",`test_contrail_irt_routes `_,test_contrail_irt_route_param_type `R-20065 `_,"A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::PortTuple`` Resource ID **MUST** contain the ``{vm-type}``.",`test_contrail_resource_id `_,test_contrail_porttuple_resource_id `R-20308 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``environment_context`` parameter **MUST** be declared as ``environment_context`` and the parameter type **MUST** be defined as type: ``string``.",`test_nova_servers_environment_context `_,test_environment_context `R-20453 `_,"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 port on the vm-type attached to the network of ``{network-role}``",`test_port_resource_ids `_,test_port_resource_ids `R-20856 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_vnf_id_parameter_doesnt_exist_in_environment_file `R-20947 `_,"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 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",`test_contrail_instance_ip_resource_id `_,test_contrail_instance_ip_resource_id_subint `R-22288 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``subnet`` parameter ``int_{network-role}_v6_subnet_id`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file `R-22688 `_,"If a VNF's port is connected to an internal network and the port is created in an Incremental Module and the internal network is created in the Base Module then the UUID of the internal network **MUST** be exposed 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.",`test_neutron_port_internal_network `_,test_neutron_port_internal_network `R-22838 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``name`` parameter **MUST NOT** be enumerated in the Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_nova_server_name_parameter_doesnt_exist_in_environment_file `R-23311 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``availability_zone`` parameter **MUST** be declared as type: ``string``.",`test_server_parameters `_,test_availability_zone_parameter_type `R-23503 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), 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 * ``{vm-type}`` is the {vm-type} associated with the OS::Nova::Server * ``{network-role}`` is the {network-role} of the external network",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-23664 `_,"A VNF's Heat Orchestration template **MUST** contain the section ``resources:``.",`test_heat_template_structure `_,test_heat_template_structure_contains_resources `R-25720 `_,"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.",`test_neutron_net_resource_id `_,test_neutron_net_resource_id `R-25877 `_,"A VNF's Heat Orchestration Template's parameter name (i.e., ) **MUST** contain only alphanumeric characters and underscores ('_').",`test_heat_parameter_section `_,test_parameter_names `R-26351 `_,"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 port on the vm-type attached to the network of ``{network-role}``",`test_port_resource_ids `_,test_port_resource_ids `R-26506 `_,"A VNF's Heat Orchestration Template's ``{network-role}`` **MUST** contain only alphanumeric characters and/or underscores '_' and **MUST NOT** contain any of the following strings: ``_int`` or ``int_`` or ``_int_``.",`test_port_resource_ids `_,test_port_resource_ids `R-270358 `_,"A VNF's Heat Orchestration Template's Cinder Volume Template **MUST** contain either * An ``OS::Cinder::Volume`` resource * An ``OS::Heat::ResourceGroup`` resource that references a Nested YAML file that contains an ``OS::Cinder::Volume`` resource * A resource that defines the property ``type`` as a Nested YAML file (i.e., static nesting) and the Nested YAML contains an ``OS::Cinder::Volume`` resource",`test_volume_templates `_,test_volume_templates_contains_cinder_or_resource_group `R-27078 `_,"A VNF's Heat Orchestration template **MUST** contain the section ``heat_template_version:``.",`test_heat_template_structure `_,test_heat_template_structure_contains_heat_template_version `R-27818 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461), and an IPv6 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}_int_{network-role}_v6_ip_{index}`` where * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` * ``{network-role}`` is the {network-role} of the internal network * ``{index}`` is a numeric value that **MUST** start at zero in a VNF's Heat Orchestration Template and **MUST** increment by one",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-28222 `_,"If a VNF's Heat Orchestration Template ``OS::ContrailV2::InterfaceRouteTable`` resource ``interface_route_table_routes`` property ``interface_route_table_routes_route`` map property parameter name **MUST** follow the format * ``{vm-type}_{network-role}_route_prefixes``",`test_contrail_irt_routes `_,test_contrail_irt_route_param_format `R-28795 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter ``{vm-type}_int_{network-role}_ip_{index}`` **MUST** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file `R-29751 `_,"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",`test_nova_server_resource_id `_,test_nova_server_resource_id `R-29765 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461), 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 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` * ``{network-role}`` is the {network-role} of the internal network",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-29872 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``network`` parameter **MUST NOT** be enumerated in the Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_network_parameter_doesnt_exist_in_environment_file `R-304011 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource's * Resource ID (defined in R-29751) * property ``image`` parameter name (defined in R-58670) * property ``flavor`` parameter name (defined in R-45188) * property ``name`` parameter name (defined in R-54171 & R-87817) * property port referenced OS::Neutron::Port Resource ID (defined in R-20453) **MUST** contain the identical ``{vm-type}`` and **MUST** follow the naming conventions defined in R-58670, R-45188, R-54171, R-87817, and R-29751. And the ``{index}`` in the ``OS::Nova::Server`` Resource ID (defined in R-29751) **MUST** match the ``{vm-type_index}`` defined in the ``OS::Nova::Server`` property ``port`` referenced ``OS::Neutron::Port`` Resource ID (defined in R-20453).",`test_server_and_port_vm_indices_match `_,test_server_and_port_vmtype_indices_match `R-30753 `_,"A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::NetworkIpam`` Resource ID **MUST** contain the ``{network-role}``.",`test_contrail_resource_id `_,test_contrail_networkipam_resource_id `R-30804 `_,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::MultipartMime`` Resource ID **MUST** contain the ``{vm-type}``.",`test_multipart_mime_resource_id `_,test_multipart_mime `R-31141 `_,"VNF Heat Orchestration Template's Cinder Volume Module's Environment File **MUST** be named identical to the VNF Heat Orchestration Template's Cinder Volume Module with ``.y[a]ml`` replaced with ``.env``.",`test_heat_pairs_provided `_,test_heat_pairs_provided `R-32394 `_,"A VNF's Heat Orchestration Template's use of ``{vm-type}`` in all Resource property parameter names **MUST** be the same case.",`test_vm_type_case `_,test_vm_type_case `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``.",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-34055 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``workload_context`` parameter ``workload_context`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_workload_context_parameter_has_no_constraints `R-348813 `_,"The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include a binary image file.",`test_no_image_files `_,test_no_image_files_included `R-35414 `_,"A VNF Heat Orchestration's template **MUST** contain the section ``parameters:``.",`test_heat_template_structure `_,test_heat_template_structure_contains_parameters `R-35666 `_,"If a VNF has an internal network, the VNF Heat Orchestration Template **MUST** include the heat resources to create the internal network.",`test_network_format `_,test_network_resource_id_format `R-35735 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), and an IPv6 Virtual IP (VIP) address is assigned via ONAP automation using the property ``allowed_address_pairs`` map property ``ip_address``, the parameter name **MUST** follow the naming convention * ``{vm-type}_{network-role}_floating_v6_ip`` where * ``{vm-type}`` is the {vm-type} associated with the OS::Nova::Server * ``{network-role}`` is the {network-role} of the external network And the parameter **MUST** be declared as type ``string``.",`test_allowed_address_pairs_include_vm_type_network_role `_,test_allowed_address_pairs_include_vm_type_network_role `R-36542 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vnf_name`` parameter ``vnf_name`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_vnf_name_parameter_doesnt_exist_in_environment_file `R-36772 `_,"A VNF's Heat Orchestration Template's parameter **MUST** include the attribute ``type:``.",`test_heat_template_parameters_contain_required_fields `_,test_heat_template_parameters_contain_required_fields `R-37028 `_,A VNF **MUST** be composed of one Base Module,`test_base_template_names `_,test_base_template_names `R-37039 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_index`` parameter ``vf_module_index`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_vf_module_index_parameter_doesnt_exist_in_environment_file `R-37437 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` **MUST** contain the key/value pair ``vnf_id`` and the value **MUST** be obtained via a ``get_param``.",`test_servers_have_required_metadata `_,test_servers_have_required_metadata `R-38236 `_,"The VNF's Heat Orchestration Template's resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``subnet`` parameter **MUST** be declared type ``string``.",`test_neutron_port_fixed_ips `_,test_neutron_port_fixed_ips `R-38474 `_,A VNF's Base Module **MUST** have a corresponding Environment File.,`test_env_and_yaml_same_name `_,test_env_and_yaml_same_name `R-39067 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_name`` parameter **MUST** be declared as ``vf_module_name`` and the parameter **MUST** be defined as type: ``string``.",`test_server_parameters `_,test_vf_module_name_parameter_type_and_parameter_name `R-39402 `_,"A VNF's Heat Orchestration Template **MUST** contain the section ``description:``.",`test_heat_template_structure `_,test_heat_template_structure_contains_description `R-39841 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter ``{vm-type}_{network-role}_ip_{index}`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file `R-40499 `_,"Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST** have a unique parameter name for the ``OS::Nova::Server`` property ``flavor`` even if more than one ``{vm-type}`` shares the same flavor.",`test_nova_servers_resource_ids `_,test_nova_servers_valid_resource_ids `R-40971 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), 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}`` is the {vm-type} associated with the ``OS::Nova::Server`` * ``{network-role}`` is the {network-role} of the external network * ``{index}`` is a numeric value that **MUST** start at zero in a VNF's Heat Orchestration Template and **MUST** increment by one",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-41492 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), and an IPv4 Virtual IP (VIP) address is assigned via ONAP automation using the property ``allowed_address_pairs`` map property ``ip_address`` and the parameter name **MUST** follow the naming convention * ``{vm-type}_{network-role}_floating_ip`` where * ``{vm-type}`` is the {vm-type} associated with the OS::Nova::Server * ``{network-role}`` is the {network-role} of the external network And the parameter **MUST** be declared as type ``string``.",`test_allowed_address_pairs_include_vm_type_network_role `_,test_allowed_address_pairs_include_vm_type_network_role `R-41888 `_,"A VNF's Heat Orchestration Template intrinsic function ``get_file`` **MUST NOT** utilize URL-based file retrieval.",`test_get_file_only_reference_local_files `_,test_get_file_no_url_retrieval `R-41956 `_,"If a VNF requires ONAP to assign a Virtual IP (VIP) Address to ports connected an external network, the port **MUST NOT** have more than one IPv6 VIP address.",`test_neutron_port_addresses `_,test_neutron_port_external_ipaddress_v6 `R-44001 `_,"A VNF's Heat Orchestration Template parameter declaration **MUST** contain the attribute ``description``.",`test_heat_template_parameters_contain_required_fields `_,test_heat_template_parameters_contain_required_fields `R-44318 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vnf_name`` parameter ``vnf_name`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_vnf_name_parameter_has_no_constraints `R-45188 `_,"The VNF's Heat Orchestration Template's Resource 'OS::Nova::Server' property ``flavor`` parameter name **MUST** follow the naming convention ``{vm-type}_flavor_name``.",`test_nova_servers_vm_types `_,test_nova_server_flavor_parameter `R-46128 `_,"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 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",`test_contrail_instance_ip_resource_id `_,test_contrail_instance_ip_resource_id_external `R-46839 `_,"A VNF's Heat Orchestration Template's use of ``{vm-type}`` in all Resource IDs **MUST** be the same case.",`test_vm_type_resource_id `_,test_vm_type_resource_id `R-48067 `_,"A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST NOT** be a substring of ``{network-role}``.",`test_nova_servers_vm_types `_,test_vm_type_network_role_collision `R-481670 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``flavor`` value **MUST** be be obtained via a ``get_param``.",`test_nova_servers_vm_types_use_get_param `_,test_vm_type_assignments_on_nova_servers_only_use_get_param `R-50011 `_,"A VNF's Heat Orchestration Template's ``OS::Heat::ResourceGroup`` property ``count`` **MUST** be enumerated in the VNF's Heat Orchestration Template's Environment File and **MUST** be assigned a value.",`test_environment_file_parameters `_,test_heat_rg_count_parameter_exists_in_environment_file `R-50436 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``flavor`` parameter **MUST** be declared as type: ``string``.",`test_nova_servers_vm_types `_,test_nova_server_flavor_parameter `R-50468 `_,"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 vmi on the vm-type attached to the network of ``{network-role}``",`test_contrail_vmi_resource_id `_,test_contrail_instance_ip_resource_id_internal `R-50816 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` **MAY** contain the key/value pair ``vf_module_index`` and the value **MUST** be obtained via a ``get_param``.",`test_servers_metadata_use_get_param `_,test_servers_vf_module_index_metadata_use_get_param `R-511776 `_,"When a VNF's Heat Orchestration Template is ready to be on-boarded to ONAP, all files composing the VNF Heat Orchestration Template **MUST** be placed in a flat (i.e., non-hierarchical) directory and archived using ZIP. The resulting ZIP file is uploaded into ONAP.",`test_files_in_flat_dir `_,test_files_in_flat_dir `R-51430 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``name`` parameter **MUST** be declared as either type ``string`` or type ``comma_delimited_list``.",`test_nova_servers_vm_types `_,test_nova_server_name_parameter `R-53310 `_,"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 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",`test_contrail_instance_ip_resource_id `_,test_contrail_instance_ip_resource_id_external `R-53433 `_,A VNF's Cinder Volume Module **MUST** have a corresponding environment file,`test_env_and_yaml_same_name `_,test_env_and_yaml_same_name `R-53952 `_,"A VNF's Heat Orchestration Template's Resource **MUST NOT** reference a HTTP-based resource definitions.",`test_no_http_resources `_,test_no_http_resources `R-54171 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``name`` parameter is defined as a ``string``, the parameter name **MUST** follow the naming convention * ``{vm-type}_name_{index}`` where ``{index}`` is a numeric value that **MUST** start at zero in a VNF's Heat Orchestration Template and **MUST** increment by one.",`test_nova_server_name_parameters_start_at_0 `_,test_nova_server_name_parameter_starts_at `R-54340 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_index`` parameter **MUST** be declared as ``vf_module_index`` and the parameter **MUST** be defined as type: ``number``.",`test_server_parameters `_,test_vf_module_index_parameter_type_and_parameter_name `R-54458 `_,"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 vmi on the vm-type attached to the network of ``{network-role}``",`test_contrail_vmi_resource_id `_,test_contrail_instance_ip_resource_id_subint `R-55218 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_vnf_id_parameter_has_no_constraints `R-55306 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT** be used in a ``OS::Cinder::Volume`` resource and **MUST NOT** be used in VNF's Volume template; it is not supported.",`test_volume_templates `_,test_no_vf_module_index_in_cinder `R-56183 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata``key/value pair ``environment_context`` parameter ``environment_context`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_environment_context_parameter_has_no_constraints `R-56438 `_,"A VNF's Heat Orchestration Template's Nested YAML file extension **MUST** be in the lower case format ``.yaml`` or ``.yml``.",`test_heat_pairs_provided `_,test_heat_pairs_provided `R-57282 `_,"Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST** have a unique parameter name for the ``OS::Nova::Server`` property ``image`` even if more than one ``{vm-type}`` shares the same image.",`test_nova_servers_resource_ids `_,test_nova_servers_valid_resource_ids `R-58670 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``image`` parameter name **MUST** follow the naming convention ``{vm-type}_image_name``.",`test_nova_servers_vm_types `_,test_nova_server_image_parameter `R-589037 `_,"A VNF Heat Orchestration Template's Cinder Volume Module resources section **MUST** only be defined using one of the following: * one of more ``OS::Cinder::Volume`` resources * one or more ``OS::Heat::ResourceGroup`` resources that call a nested YAML file that contains only ``OS::Cinder::Volume`` resources * a resource that calls a nested YAML file (static nesting) that contains only ``OS::Cinder::Volume`` resources",`test_volume_module_naming `_,test_detected_volume_module_follows_naming_convention `R-59568 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``availability_zone`` parameter **MUST NOT** be enumerated in the Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_nova_server_az_parameter_doesnt_exist_in_environment_file `R-599443 `_,"A parameter enumerated in a VNF's Heat Orchestration Template's environment file **MUST** be declared in the corresponding VNF's Heat Orchestration Template's YAML file's ``parameters:`` section.",`test_env_parameters_defined_in_template `_,test_env_params_are_defined_in_template `R-60011 `_,"A VNF's Heat Orchestration Template **MUST** have no more than two levels of nesting.",`test_nesting_level `_,test_nesting_level `R-62187 `_,"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 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",`test_contrail_instance_ip_resource_id `_,test_contrail_instance_ip_resource_id_internal `R-62428 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vnf_name`` parameter **MUST** be declared as ``vnf_name`` and the parameter **MUST** be defined as type: ``string``.",`test_server_parameters `_,test_vnf_name_parameter_type_and_parameter_name `R-62590 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter associated with an external network, i.e., * ``{vm-type}_{network-role}_ip_{index}`` * ``{vm-type}_{network-role}_v6_ip_{index}`` * ``{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.",`test_environment_file_parameters `_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file `R-62802 `_,"When the VNF's Heat Orchestration Template's resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), and an IPv4 address is being cloud assigned by OpenStack's DHCP Service and the external network IPv4 subnet is to be specified using the property ``fixed_ips`` map property ``subnet``, the parameter **MUST** follow the naming convention * ``{network-role}_subnet_id`` where * ``{network-role}`` is the network role of the network.",`test_neutron_port_fixed_ips `_,test_neutron_port_external_fixed_ips `R-62983 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), 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 * follow the naming convention ``{network-role}_net_name`` if the OpenStack network name 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.",`test_network_format `_,test_network_format `R-663631 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``name`` value **MUST** be be obtained via a ``get_param``.",`test_nova_servers_vm_types_use_get_param `_,test_vm_type_assignments_on_nova_servers_only_use_get_param `R-67231 `_,"A VNF's Heat Orchestration template's Environment File's **MUST NOT** contain the ``resource_registry:`` section.",`test_env_no_resource_registry `_,test_env_no_resource_registry `R-67597 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vm_role`` parameter ``vm_role`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_vm_role_parameter_has_no_constraints `R-68023 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` **SHOULD** contain the key/value pair ``vf_module_name`` and the value **MUST** be obtained via a ``get_param``.",`test_servers_metadata_use_get_param `_,test_servers_vf_module_name_metadata_use_get_param `R-681859 `_,"A VNF's Heat Orchestration Template's ``OS::Neutron::Port`` resource's * Resource ID (defined in R-20453) * property ``network`` parameter name (defined in R-62983 and R-86182) * property ``fixed_ips``, map property ``ip_address`` parameter name (defined in R-40971, R-04697, R-71577, R-23503, R-78380, R-85235, R-27818, and R-29765) * property ``fixed_ips``, map property ``subnet`` parameter name (defined in R-62802, R-15287, R-84123, R-76160) * property ``allowed_address_pairs`` parameter name (defined in R-41492 and R-83418) **MUST** contain the identical ``{network-role}``.",`test_port_resource_ids `_,test_port_resource_ids `R-69431 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``flavor`` parameter **MUST** be enumerated in the Heat Orchestration Template's Environment File and a value **MUST** be assigned.",`test_environment_file_parameters `_,test_nova_server_flavor_parameter_exists_in_environment_file `R-69634 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``subnet`` parameter ``int_{network-role}_subnet_id`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file `R-70276 `_,"A VNF HEAT's Orchestration Nested Template's YAML file name **MUST NOT** be in the format ``{vm-type}.y[a]ml`` where ``{vm-type}`` is defined in the Heat Orchestration Template.",`test_filename_is_vmtype_dot_yaml `_,test_filename_is_vmtype_dot_yaml `R-708564 `_,"If a VNF's Heat Orchestration Template's resource invokes a nested YAML file, either statically or dynamically, the names of the parameters passed into the nested YAML file **MUST NOT** change.",`test_nested_parameters `_,test_parameter_name_doesnt_change_in_nested_template `R-71152 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``image`` parameter **MUST** be declared as type: ``string``.",`test_nova_servers_vm_types `_,test_nova_server_image_parameter `R-71493 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` **MUST** contain the key/value pair ``vf_module_id`` and the value MUST be obtained via a ``get_param``.",`test_servers_have_required_metadata `_,test_servers_have_required_metadata `R-71577 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an external network (per the ONAP definition, see Requirement R-57424), and an IPv6 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}_v6_ip_{index}`` where * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` * ``{network-role}`` is the {network-role} of the external network * ``{index}`` is a numeric value that **MUST** start at zero in a VNF's Heat Orchestration Template and **MUST** increment by one",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-71699 `_,"A VNF's Heat Orchestration Template's Resource **MUST NOT** reference a HTTP-based Nested YAML file.",`test_no_http_resources `_,test_no_http_resources `R-72483 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` **MUST** contain the key/value pair ``vnf_name`` and the value **MUST** be obtained via a ``get_param``.",`test_servers_have_required_metadata `_,test_servers_have_required_metadata `R-72871 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_vf_module_id_parameter_doesnt_exist_in_environment_file `R-74304 `_,"A VNF's Heat Orchestration Template's Environment file extension **MUST** be in the lower case format ``.env``.",`test_heat_pairs_provided `_,test_heat_pairs_provided `R-74978 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``workload_context`` parameter **MUST** be declared as ``workload_context`` and the parameter **MUST** be defined as type: ``string``.",`test_nova_servers_workload_context `_,test_workload_context `R-75141 `_,"A VNF's Heat Orchestration Template's resource name (i.e., ) **MUST** only contain alphanumeric characters and underscores ('_').",`test_resource_ids_alphanumeric_only `_,test_alphanumeric_resource_ids_only `R-76014 `_,"A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::ServiceHealthCheck`` Resource ID **MUST** contain the ``{vm-type}``.",`test_contrail_resource_id `_,test_contrail_servicehealthcheck_resource_id `R-76057 `_,"VNF Heat Orchestration Template's Nested YAML file name **MUST** contain only alphanumeric characters and underscores '_' and **MUST NOT** contain the case insensitive word ``base``.",`test_base_template_names `_,test_base_template_names `R-76160 `_,"When * the VNF's Heat Orchestration Template's resource ``OS::Neutron::Port`` in an Incremental Module is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461) that is created in the Base Module, AND * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND * the internal network IPv6 subnet is to be specified using the property ``fixed_ips`` map property ``subnet``, the parameter **MUST** follow the naming convention ``int_{network-role}_v6_subnet_id``, where ``{network-role}`` is the network role of the internal network. Note that the parameter **MUST** be defined as an ``output`` parameter in the base module.",`test_neutron_port_fixed_ips `_,test_neutron_port_internal_fixed_ips `R-76449 `_,"A VNF's Heat Orchestration Template's **MUST NOT** contain the Resource ``OS::Neutron::FloatingIPAssociation``.",`test_forbidden_resources `_,test_neutron_floating_ip_association_resource_type `R-76682 `_,"If a VNF's Heat Orchestration Template ``OS::ContrailV2::InterfaceRouteTable`` resource ``interface_route_table_routes`` property ``interface_route_table_routes_route`` map property parameter ``{vm-type}_{network-role}_route_prefixes`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_contrail_route_prefixes_parameter_doesnt_exist_in_environment_file `R-76718 `_,"If a VNF's Heat Orchestration Template uses the intrinsic function ``get_file``, the ``get_file`` target **MUST** be referenced in the Heat Orchestration Template by file name.",`test_get_file_only_reference_local_files `_,test_get_file_only_reference_local_files `R-78380 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461), 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}_int_{network-role}_ip_{index}`` where * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` * ``{network-role}`` is the {network-role} of the internal network * ``{index}`` is a numeric value that **MUST** start at zero in a VNF's Heat Orchestration Template and **MUST** increment by one",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-80374 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_name`` parameter ``vf_module_name`` **MUST NOT** be enumerated in the Heat Orchestration Template's environment file.",`test_environment_file_parameters `_,test_nova_server_vf_module_name_parameter_doesnt_exist_in_environment_file `R-80829 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``subnet`` parameter ``{network-role}_v6_subnet_id`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file `R-81214 `_,"A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::InterfaceRouteTable`` Resource ID **MUST** contain the ``{network-role}``.",`test_contrail_resource_id `_,test_contrail_interfaceroutetable_resource_id `R-81339 `_,"A VNF Heat Orchestration Template's Base Module file name **MUST** include case insensitive 'base' in the filename and **MUST** match one of the following four formats: 1.) ``base_.y[a]ml`` 2.) ``_base.y[a]ml`` 3.) ``base.y[a]ml`` 4.) ``_base_``.y[a]ml where ```` **MUST** contain only alphanumeric characters and underscores '_' and **MUST NOT** contain the case insensitive word ``base``.",`test_base_template_names `_,test_base_template_names `R-81725 `_,A VNF's Incremental Module **MUST** have a corresponding Environment File,`test_env_and_yaml_same_name `_,test_env_and_yaml_same_name `R-82134 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_id`` parameter **MUST** be declared as ``vf_module_id`` and the parameter **MUST** be defined as type: ``string``.",`test_server_parameters `_,test_vf_module_id_parameter_type_and_parameter_name `R-82732 `_,"A VNF Heat Orchestration Template's Cinder Volume Module **MUST** be named identical to the base or incremental module it is supporting with ``_volume`` appended.",`test_volume_outputs_consumed `_,test_volume_module_name_matches_incremental_or_base_module `R-83412 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``allowed_address_pairs`` map property ``ip_address`` parameter ``{vm-type}_{network-role}_floating_ip`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_aap_ip_parameter_doesnt_exist_in_environment_file `R-83418 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``allowed_address_pairs`` map property ``ip_address`` parameter ``{vm-type}_{network-role}_floating_v6_ip`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_aap_ip_parameter_doesnt_exist_in_environment_file `R-83677 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``subnet`` parameter ``{network-role}_subnet_id`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file `R-84123 `_,"When * the VNF's Heat Orchestration Template's resource ``OS::Neutron::Port`` in an Incremental Module is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461) that is created in the Base Module, AND * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND * the internal network IPv4 subnet is to be specified using the property ``fixed_ips`` map property ``subnet``, the parameter **MUST** follow the naming convention * ``int_{network-role}_subnet_id`` where * ``{network-role}`` is the network role of the internal network Note that the parameter **MUST** be defined as an ``output`` parameter in the base module.",`test_neutron_port_fixed_ips `_,test_neutron_port_internal_fixed_ips `R-85235 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461), 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 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server`` * ``{network-role}`` is the {network-role} of the internal network",`test_fixed_ips_include_vm_type_network_role `_,test_fixed_ips_include_vm_type_network_role `R-85734 `_,"If a VNF's Heat Orchestration Template contains the property ``name`` for a non ``OS::Nova::Server`` resource, the intrinsic function ``str_replace`` **MUST** be used in conjunction with the ONAP supplied metadata parameter ``vnf_name`` to generate a unique value. Additional data **MAY** be used in the ``str_replace`` construct to generate a unique value.",`test_non_server_name `_,test_non_server_name `R-86182 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461), 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.",`test_network_format `_,test_network_format `R-86285 `_,"A VNF's Heat Orchestration template **MUST** have a corresponding environment file.",`test_heat_pairs_provided `_,test_heat_pairs_provided `R-86476 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vm_role`` value **MUST** only contain alphanumeric characters and underscores (i.e., '_').",`test_vm_role_value `_,test_vm_role_hardcoded `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.",`test_environment_file_parameters `_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file `R-87247 `_,"VNF Heat Orchestration Template's Incremental Module file name **MUST** contain only alphanumeric characters and underscores '_' and **MUST NOT** contain the case insensitive word ``base``.",`test_base_template_names `_,test_base_template_names `R-87485 `_,"A VNF's Heat Orchestration Template's file extension **MUST** be in the lower case format ``.yaml`` or ``.yml``.",`test_base_template_names `_,test_base_template_names `R-87563 `_,"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 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",`test_contrail_instance_ip_resource_id `_,test_contrail_instance_ip_resource_id_internal `R-87817 `_,"When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``name`` parameter is defined as a ``comma_delimited_list``, the parameter name **MUST** follow the naming convention ``{vm-type}_names``.",`test_nova_servers_vm_types `_,test_nova_server_name_parameter `R-88540 `_,"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 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",`test_contrail_instance_ip_resource_id `_,test_contrail_instance_ip_resource_id_subint `R-89913 `_,"A VNF's Heat Orchestration Template's Cinder Volume Module Output Parameter(s) **MUST** include the UUID(s) of the Cinder Volumes created in template.",`test_volume_templates_outputs `_,test_volume_templates_contains_outputs `R-901331 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``image`` value **MUST** be be obtained via a ``get_param``.",`test_nova_servers_vm_types_use_get_param `_,test_vm_type_assignments_on_nova_servers_only_use_get_param `R-90152 `_,"A VNF's Heat Orchestration Template's ``resources:`` section **MUST** contain the declaration of at least one resource.",`test_initial_configuration `_,test_06_heat_template_resource_section_has_resources `R-90206 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter ``{vm-type}_int_{network-role}_int_ips`` **MUST** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file `R-90279 `_,"A VNF Heat Orchestration's template's parameter **MUST** be used in a resource with the exception of the parameters for the ``OS::Nova::Server`` resource property ``availability_zone``.",`test_all_parameters_used_in_template `_,test_all_parameters_used_in_template `R-90526 `_,"A VNF Heat Orchestration Template parameter declaration **MUST NOT** contain the ``default`` attribute.",`test_heat_parameter_section `_,test_default_values `R-91125 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``image`` parameter **MUST** be enumerated in the Heat Orchestration Template's Environment File and a value **MUST** be assigned.",`test_environment_file_parameters `_,test_nova_server_image_parameter_exists_in_environment_file `R-91342 `_,"A VNF Heat Orchestration Template's Base Module's Environment File **MUST** be named identical to the VNF Heat Orchestration Template's Base Module with ``.y[a]ml`` replaced with ``.env``.",`test_heat_pairs_provided `_,test_heat_pairs_provided `R-91810 `_,"If a VNF requires ONAP to assign a Virtual IP (VIP) Address to ports connected an external network, the port **MUST NOT** have more than one IPv4 VIP address.",`test_neutron_port_addresses `_,test_neutron_port_external_ipaddress `R-92193 `_,"A VNF's Heat Orchestration Template's parameter ``{network-role}_net_fqdn`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_network_fqdn_parameter_doesnt_exist_in_environment_file `R-92635 `_,"A VNF's Heat Orchestration Template **MUST** be compliant with the OpenStack Template Guide.",`test_initial_configuration `_,test_02_no_duplicate_keys_in_file `R-93030 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter ``{vm-type}_{network-role}_v6_ips`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file `R-93177 `_,"When the VNF's Heat Orchestration Template's resource ``OS::Neutron::Port`` is attaching to an internal network (per the ONAP definition, see Requirements R-52425 and R-46461), and the internal network is created in the same Heat Orchestration Template as the ``OS::Neutron::Port``, the ``network`` property value **MUST** obtain the UUID of the internal network by using the intrinsic function ``get_resource`` and referencing the Resource ID of the internal network.",`test_network_format_use_get_param_or_get_resource `_,test_network_format_use_get_param_or_get_resource `R-93496 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter associated with an internal network, i.e., * ``{vm-type}_int_{network-role}_ip_{index}`` * ``{vm-type}_int_{network-role}_v6_ip_{index}`` * ``{vm-type}_int_{network-role}_ips`` * ``{vm-type}_int_{network-role}_v6_ips`` **MUST** be enumerated in the Heat Orchestration Template's Environment File and IP addresses **MUST** be assigned.",`test_environment_file_parameters `_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file `R-94509 `_,"A VNF Heat Orchestration Template's Incremental Module's Environment File **MUST** be named identical to the VNF Heat Orchestration Template's Incremental Module with ``.y[a]ml`` replaced with ``.env``.",`test_heat_pairs_provided `_,test_heat_pairs_provided `R-94669 `_,"If a VNF has one IPv6 OAM Management IP Address and the IP Address needs to be inventoried in ONAP's A&AI database, an output parameter **MUST** be declared in only one of the VNF's Heat Orchestration Templates and the parameter **MUST** be named ``oam_management_v6_address``.",`test_oam_address_outputs `_,test_oam_address_v6_zero_or_one `R-95303 `_,A VNF's Heat Orchestration Template **MUST** be defined using valid YAML.,`test_get_attr_usage `_,test_08_validate_get_attr_usage `R-95430 `_,"If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vm_role`` value is obtained via ``get_param``, the parameter **MUST** be declared as ``vm_role`` and the parameter **MUST** be defined as type: ``string``.",`test_server_parameters `_,test_vm_role_parameter_type_and_parameter_name `R-96253 `_,"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 vmi on the vm-type attached to the network of ``{network-role}``",`test_contrail_vmi_resource_id `_,test_contrail_instance_ip_resource_id_external `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.",`test_environment_file_parameters `_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file `R-98374 `_,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id`` **MUST NOT** have parameter constraints defined.",`test_required_parameters_no_constraints `_,test_vf_module_id_parameter_has_no_constraints `R-98407 `_,"A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST** contain only alphanumeric characters and/or underscores '_' and **MUST NOT** contain any of the following strings: ``_int`` or ``int_`` or ``_int_``.",`test_vm_type_syntax `_,test_vm_type_syntax `R-98450 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server`` property ``availability_zone`` parameter name **MUST** follow the naming convention * ``availability_zone_{index}`` where ``{index}`` is a numeric value that **MUST** start at zero in a VNF's Heat Orchestration Templates and **MUST** increment by one.",`test_availability_zone `_,test_availability_zone_naming `R-98569 `_,"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_ips`` **MUST** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file `R-98748 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``allowed_address_pairs`` map property ``ip_address`` parameter **MUST** be declared as type ``string``.",`test_allowed_address_pairs_include_vm_type_network_role `_,test_allowed_address_pairs_include_vm_type_network_role `R-98905 `_,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address`` parameter ``{vm-type}_{network-role}_ips`` **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file `R-99110 `_,"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.",`test_contrail_vn_resource_id `_,test_neutron_net_resource_id `R-99646 `_,"A VNF's YAML files (i.e, Heat Orchestration Template files and Nested files) **MUST** have a unique name in the scope of the VNF.",`test_files_in_flat_dir `_,test_files_in_flat_dir `R-99812 `_,"A value for VNF's Heat Orchestration Template's property ``name`` for a non ``OS::Nova::Server`` resource **MUST NOT** be declared in the VNF's Heat Orchestration Template's Environment File.",`test_environment_file_parameters `_,test_non_nova_server_name_parameter_doesnt_exist_in_environment_file