summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBozawglanian, Hagop (hb755d) <hb755d@att.com>2019-01-31 19:25:20 +0000
committerBozawglanian, Hagop (hb755d) <hb755d@att.com>2019-01-31 19:25:20 +0000
commitcffcba907a997a3771e0d9b2e6068333aa31ba03 (patch)
treeb8c6efcb66f35ef6bc414d9510559e064267d172
parentc8d2fa4f72c2598a57512684b2189f4d81b71956 (diff)
VNFRQTS - Updating format of test case annex
Issue-ID: VNFRQTS-531 Change-Id: If8ef548ba2e231280d94b238a4645fd74ae52bd5 Signed-off-by: Bozawglanian, Hagop (hb755d) <hb755d@att.com>
-rw-r--r--docs/Chapter2.rst3
-rw-r--r--docs/rst.csv1172
-rw-r--r--[-rwxr-xr-x]docs/traceability.csv1988
-rw-r--r--etc/requirements.txt2
4 files changed, 2960 insertions, 205 deletions
diff --git a/docs/Chapter2.rst b/docs/Chapter2.rst
index 7315265..5ae8ec8 100644
--- a/docs/Chapter2.rst
+++ b/docs/Chapter2.rst
@@ -46,7 +46,8 @@ You can download the table
**Note: VVP only validates Heat for Requirements in Chapter 5.**
.. csv-table:: **Test Traceability**
- :file: traceability.csv
+ :name: traceability-matrix
+ :file: rst.csv
:header-rows: 1
:align: center
:widths: auto
diff --git a/docs/rst.csv b/docs/rst.csv
new file mode 100644
index 0000000..f44ff78
--- /dev/null
+++ b/docs/rst.csv
@@ -0,0 +1,1172 @@
+Requirement ID,Requirement,Test Module,Test Name
+`R-00977 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{network-role}.html#R-00977>`_,"A VNF's Heat Orchestration Template's ``{network-role}``
+**MUST NOT** be a substring of ``{vm-type}``.",`test_nova_servers_vm_types <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_vm_type_network_role_collision
+`R-01455 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{vm-type}.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_vm_class_has_unique_type.py>`_,test_vm_class_has_unique_type
+`R-02164 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Contrail%20Resource%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_fqdn.py>`_,test_contrail_fqdn
+`R-02691 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_workload_context_parameter_doesnt_exist_in_environment_file
+`R-03324 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-03324>`_,"A VNF's Heat Orchestration template's Environment File **MUST**
+contain the ``parameters:`` section.",`test_environment_file_structure <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_structure.py>`_,test_environment_file_contains_required_sections
+`R-04697 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-04747 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_cloud_config_resource_id.py>`_,test_cloud_config
+`R-05257 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#R-05257>`_,"A VNF's Heat Orchestration Template's **MUST NOT**
+contain the Resource ``OS::Neutron::FloatingIP``.",`test_forbidden_resources <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_forbidden_resources.py>`_,test_neutron_floating_ip_resource_type
+`R-07443 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_outputs_consumed.py>`_,test_volume_outputs_consumed
+`R-07507 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_vnf_id_parameter_type_and_parameter_name
+`R-08975 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_software_config_resource_id.py>`_,test_software_config_vm_type
+`R-09811 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_vf_module_index_parameter_has_no_constraints
+`R-10754 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_addresses.py>`_,test_neutron_port_floating
+`R-10834 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nested_parameter_args.py>`_,test_nested_parameter_args
+`R-11041 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nested_template_parameters.py>`_,test_nested_template_parameters
+`R-11200 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_outputs_consumed.py>`_,test_volume_outputs_consumed
+`R-11441 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_structure.py>`_,test_parameter_type
+`R-11690 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <resource ID> MUST be unique across all Heat
+Orchestration Templates and all HEAT Orchestration Template
+Nested YAML files that are used to create the VNF*. 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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_resource_indices.py>`_,test_indices_start_at_0_increment
+`R-13194 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_environment_context_parameter_doesnt_exist_in_environment_file
+`R-15287 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_fixed_ips.py>`_,test_neutron_port_external_fixed_ips
+`R-15480 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_vf_module_name_parameter_has_no_constraints
+`R-16241 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Networking.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_network_format.py>`_,test_network_has_subnet
+`R-16437 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#R-16437>`_,"A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::ServiceTemplate``
+Resource ID **MUST** contain the ``{vm-type}``.",`test_contrail_resource_id <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_resource_id.py>`_,test_contrail_servicetemplate_resource_id
+`R-16447 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-16447>`_,"A VNF's <resource ID> **MUST** be unique across all Heat
+Orchestration Templates and all HEAT Orchestration Template
+Nested YAML files that are used to create the VNF.",`test_unique_resources_across_all_templates <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_unique_resources_across_all_templates.py>`_,test_unique_resources_across_all_yaml_files
+`R-16968 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Networking.html#R-16968>`_,"A VNF's Heat Orchestration Templates **MUST NOT** include heat
+resources to create external networks.",`test_network_format <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_network_format.py>`_,test_network_resource_id_format
+`R-17528 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nesting_nova_server.py>`_,test_nesting_nova_server
+`R-18008 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_network_parameter.py>`_,test_neutron_port_network_param_is_string
+`R-18683 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/ONAP%20Output%20Parameter%20Names.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_oam_address_outputs.py>`_,test_oam_address_v4_zero_or_one
+`R-19756 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Contrail%20Resource%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_irt_routes.py>`_,test_contrail_irt_route_param_type
+`R-20065 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#R-20065>`_,"A VNF's Heat Orchestration Template's Resource
+``OS::ContrailV2::PortTuple``
+Resource ID **MUST** contain the ``{vm-type}``.",`test_contrail_resource_id <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_resource_id.py>`_,test_contrail_porttuple_resource_id
+`R-20308 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_environment_context.py>`_,test_environment_context
+`R-20453 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_port_resource_ids.py>`_,test_port_resource_ids
+`R-20856 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_vnf_id_parameter_doesnt_exist_in_environment_file
+`R-20947 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_instance_ip_resource_id.py>`_,test_contrail_instance_ip_resource_id_subint
+`R-22288 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+`R-22688 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Networking.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_internal_network.py>`_,test_neutron_port_internal_network
+`R-22838 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_name_parameter_doesnt_exist_in_environment_file
+`R-23311 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_availability_zone_parameter_type
+`R-23503 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-23664 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-23664>`_,"A VNF's Heat Orchestration template **MUST**
+contain the section ``resources:``.",`test_heat_template_structure <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_structure.py>`_,test_heat_template_structure_contains_resources
+`R-25720 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_net_resource_id.py>`_,test_neutron_net_resource_id
+`R-25877 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-25877>`_,"A VNF's Heat Orchestration Template's parameter name
+(i.e., <param name>) **MUST** contain only alphanumeric
+characters and underscores ('_').",`test_heat_parameter_section <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_parameter_section.py>`_,test_parameter_names
+`R-26351 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_port_resource_ids.py>`_,test_port_resource_ids
+`R-26506 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{network-role}.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_port_resource_ids.py>`_,test_port_resource_ids
+`R-270358 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Cinder%20Volumes.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_templates.py>`_,test_volume_templates_contains_cinder_or_resource_group
+`R-27078 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-27078>`_,"A VNF's Heat Orchestration template **MUST** contain the
+section ``heat_template_version:``.",`test_heat_template_structure <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_structure.py>`_,test_heat_template_structure_contains_heat_template_version
+`R-27818 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-28222 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Contrail%20Resource%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_irt_routes.py>`_,test_contrail_irt_route_param_format
+`R-28795 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+`R-29751 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_server_resource_id.py>`_,test_nova_server_resource_id
+`R-29765 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-29872 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_network_parameter_doesnt_exist_in_environment_file
+`R-304011 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_and_port_vm_indices_match.py>`_,test_server_and_port_vmtype_indices_match
+`R-30753 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#R-30753>`_,"A VNF's Heat Orchestration Template's Resource
+``OS::ContrailV2::NetworkIpam``
+Resource ID
+**MUST**
+contain the ``{network-role}``.",`test_contrail_resource_id <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_resource_id.py>`_,test_contrail_networkipam_resource_id
+`R-30804 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_multipart_mime_resource_id.py>`_,test_multipart_mime
+`R-31141 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_pairs_provided.py>`_,test_heat_pairs_provided
+`R-32394 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{vm-type}.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_vm_type_case.py>`_,test_vm_type_case
+`R-34037 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-34055 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_workload_context_parameter_has_no_constraints
+`R-348813 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#R-348813>`_,"The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include
+a binary image file.",`test_no_image_files <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_no_image_files.py>`_,test_no_image_files_included
+`R-35414 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-35414>`_,"A VNF Heat Orchestration's template **MUST** contain the
+section ``parameters:``.",`test_heat_template_structure <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_structure.py>`_,test_heat_template_structure_contains_parameters
+`R-35666 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Networking.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_network_format.py>`_,test_network_resource_id_format
+`R-35735 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py>`_,test_allowed_address_pairs_include_vm_type_network_role
+`R-36542 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_vnf_name_parameter_doesnt_exist_in_environment_file
+`R-36772 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-36772>`_,"A VNF's Heat Orchestration Template's parameter **MUST** include the
+attribute ``type:``.",`test_heat_template_parameters_contain_required_fields <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_parameters_contain_required_fields.py>`_,test_heat_template_parameters_contain_required_fields
+`R-37028 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#R-37028>`_,A VNF **MUST** be composed of one Base Module,`test_base_template_names <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_base_template_names.py>`_,test_base_template_names
+`R-37039 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_vf_module_index_parameter_doesnt_exist_in_environment_file
+`R-37437 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_servers_have_required_metadata.py>`_,test_servers_have_required_metadata
+`R-38236 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_fixed_ips.py>`_,test_neutron_port_fixed_ips
+`R-38474 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#R-38474>`_,A VNF's Base Module **MUST** have a corresponding Environment File.,`test_env_and_yaml_same_name <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_env_and_yaml_same_name.py>`_,test_env_and_yaml_same_name
+`R-39067 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_vf_module_name_parameter_type_and_parameter_name
+`R-39402 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-39402>`_,"A VNF's Heat Orchestration Template **MUST** contain the
+section ``description:``.",`test_heat_template_structure <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_structure.py>`_,test_heat_template_structure_contains_description
+`R-39841 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
+`R-40499 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_resource_ids.py>`_,test_nova_servers_valid_resource_ids
+`R-40971 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-41492 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py>`_,test_allowed_address_pairs_include_vm_type_network_role
+`R-41888 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_get_file_only_reference_local_files.py>`_,test_get_file_no_url_retrieval
+`R-41956 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_addresses.py>`_,test_neutron_port_external_ipaddress_v6
+`R-44001 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-44001>`_,"A VNF's Heat Orchestration Template parameter declaration **MUST**
+contain the attribute ``description``.",`test_heat_template_parameters_contain_required_fields <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_template_parameters_contain_required_fields.py>`_,test_heat_template_parameters_contain_required_fields
+`R-44318 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_vnf_name_parameter_has_no_constraints
+`R-45188 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_nova_server_flavor_parameter
+`R-46128 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_instance_ip_resource_id.py>`_,test_contrail_instance_ip_resource_id_external
+`R-46839 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{vm-type}.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_vm_type_resource_id.py>`_,test_vm_type_resource_id
+`R-48067 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{vm-type}.html#R-48067>`_,"A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST NOT** be a
+substring
+of ``{network-role}``.",`test_nova_servers_vm_types <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_vm_type_network_role_collision
+`R-481670 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types_use_get_param.py>`_,test_vm_type_assignments_on_nova_servers_only_use_get_param
+`R-50011 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_heat_rg_count_parameter_exists_in_environment_file
+`R-50436 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_nova_server_flavor_parameter
+`R-50468 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_vmi_resource_id.py>`_,test_contrail_instance_ip_resource_id_internal
+`R-50816 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_servers_metadata_use_get_param.py>`_,test_servers_vf_module_index_metadata_use_get_param
+`R-511776 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_files_in_flat_dir.py>`_,test_files_in_flat_dir
+`R-51430 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_nova_server_name_parameter
+`R-53310 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_instance_ip_resource_id.py>`_,test_contrail_instance_ip_resource_id_external
+`R-53433 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#R-53433>`_,A VNF's Cinder Volume Module **MUST** have a corresponding environment file,`test_env_and_yaml_same_name <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_env_and_yaml_same_name.py>`_,test_env_and_yaml_same_name
+`R-53952 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-53952>`_,"A VNF's Heat Orchestration Template's Resource
+**MUST NOT** reference a HTTP-based resource definitions.",`test_no_http_resources <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_no_http_resources.py>`_,test_no_http_resources
+`R-54171 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_server_name_parameters_start_at_0.py>`_,test_nova_server_name_parameter_starts_at
+`R-54340 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_vf_module_index_parameter_type_and_parameter_name
+`R-54458 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_vmi_resource_id.py>`_,test_contrail_instance_ip_resource_id_subint
+`R-55218 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_vnf_id_parameter_has_no_constraints
+`R-55306 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_templates.py>`_,test_no_vf_module_index_in_cinder
+`R-56183 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_environment_context_parameter_has_no_constraints
+`R-56438 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_pairs_provided.py>`_,test_heat_pairs_provided
+`R-57282 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_resource_ids.py>`_,test_nova_servers_valid_resource_ids
+`R-58670 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_nova_server_image_parameter
+`R-589037 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_module_naming.py>`_,test_detected_volume_module_follows_naming_convention
+`R-59568 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_az_parameter_doesnt_exist_in_environment_file
+`R-599443 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Support%20of%20Environment%20Files.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_env_parameters_defined_in_template.py>`_,test_env_params_are_defined_in_template
+`R-60011 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#R-60011>`_,"A VNF's Heat Orchestration Template **MUST** have no more than two
+levels of nesting.",`test_nesting_level <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nesting_level.py>`_,test_nesting_level
+`R-62187 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_instance_ip_resource_id.py>`_,test_contrail_instance_ip_resource_id_internal
+`R-62428 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_vnf_name_parameter_type_and_parameter_name
+`R-62590 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
+`R-62802 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_fixed_ips.py>`_,test_neutron_port_external_fixed_ips
+`R-62983 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_network_format.py>`_,test_network_format
+`R-663631 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types_use_get_param.py>`_,test_vm_type_assignments_on_nova_servers_only_use_get_param
+`R-67231 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-67231>`_,"A VNF's Heat Orchestration template's Environment File's
+**MUST NOT** contain the ``resource_registry:`` section.",`test_env_no_resource_registry <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_env_no_resource_registry.py>`_,test_env_no_resource_registry
+`R-67597 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_vm_role_parameter_has_no_constraints
+`R-68023 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_servers_metadata_use_get_param.py>`_,test_servers_vf_module_name_metadata_use_get_param
+`R-681859 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_port_resource_ids.py>`_,test_port_resource_ids
+`R-69431 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_flavor_parameter_exists_in_environment_file
+`R-69634 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+`R-70276 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_filename_is_vmtype_dot_yaml.py>`_,test_filename_is_vmtype_dot_yaml
+`R-708564 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nested_parameters.py>`_,test_parameter_name_doesnt_change_in_nested_template
+`R-71152 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_nova_server_image_parameter
+`R-71493 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_servers_have_required_metadata.py>`_,test_servers_have_required_metadata
+`R-71577 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-71699 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-71699>`_,"A VNF's Heat Orchestration Template's Resource
+**MUST NOT** reference a HTTP-based Nested YAML file.",`test_no_http_resources <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_no_http_resources.py>`_,test_no_http_resources
+`R-72483 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_servers_have_required_metadata.py>`_,test_servers_have_required_metadata
+`R-72871 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_vf_module_id_parameter_doesnt_exist_in_environment_file
+`R-74304 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#R-74304>`_,"A VNF's Heat Orchestration Template's Environment file extension **MUST**
+be in the lower case format ``.env``.",`test_heat_pairs_provided <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_pairs_provided.py>`_,test_heat_pairs_provided
+`R-74978 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_workload_context.py>`_,test_workload_context
+`R-75141 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-75141>`_,"A VNF's Heat Orchestration Template's resource name
+(i.e., <resource ID>) **MUST** only contain alphanumeric
+characters and underscores ('_').",`test_resource_ids_alphanumeric_only <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_resource_ids_alphanumeric_only.py>`_,test_alphanumeric_resource_ids_only
+`R-76014 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#R-76014>`_,"A VNF's Heat Orchestration Template's Resource
+``OS::ContrailV2::ServiceHealthCheck``
+Resource ID
+**MUST**
+contain the ``{vm-type}``.",`test_contrail_resource_id <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_resource_id.py>`_,test_contrail_servicehealthcheck_resource_id
+`R-76057 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_base_template_names.py>`_,test_base_template_names
+`R-76160 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_fixed_ips.py>`_,test_neutron_port_internal_fixed_ips
+`R-76449 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#R-76449>`_,"A VNF's Heat Orchestration Template's **MUST NOT**
+contain the Resource ``OS::Neutron::FloatingIPAssociation``.",`test_forbidden_resources <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_forbidden_resources.py>`_,test_neutron_floating_ip_association_resource_type
+`R-76682 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Contrail%20Resource%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_contrail_route_prefixes_parameter_doesnt_exist_in_environment_file
+`R-76718 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Template%20Constructs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_get_file_only_reference_local_files.py>`_,test_get_file_only_reference_local_files
+`R-78380 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-80374 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_vf_module_name_parameter_doesnt_exist_in_environment_file
+`R-80829 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+`R-81214 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#R-81214>`_,"A VNF's Heat Orchestration Template's Resource
+``OS::ContrailV2::InterfaceRouteTable``
+Resource ID
+**MUST**
+contain the ``{network-role}``.",`test_contrail_resource_id <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_resource_id.py>`_,test_contrail_interfaceroutetable_resource_id
+`R-81339 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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_<text>.y[a]ml``
+
+ 2.) ``<text>_base.y[a]ml``
+
+ 3.) ``base.y[a]ml``
+
+ 4.) ``<text>_base_<text>``.y[a]ml
+
+where ``<text>`` **MUST** contain only alphanumeric characters and
+underscores '_' and **MUST NOT** contain the case insensitive word ``base``.",`test_base_template_names <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_base_template_names.py>`_,test_base_template_names
+`R-81725 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#R-81725>`_,A VNF's Incremental Module **MUST** have a corresponding Environment File,`test_env_and_yaml_same_name <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_env_and_yaml_same_name.py>`_,test_env_and_yaml_same_name
+`R-82134 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_vf_module_id_parameter_type_and_parameter_name
+`R-82732 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_outputs_consumed.py>`_,test_volume_module_name_matches_incremental_or_base_module
+`R-83412 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_aap_ip_parameter_doesnt_exist_in_environment_file
+`R-83418 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_aap_ip_parameter_doesnt_exist_in_environment_file
+`R-83677 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+`R-84123 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_fixed_ips.py>`_,test_neutron_port_internal_fixed_ips
+`R-85235 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py>`_,test_fixed_ips_include_vm_type_network_role
+`R-85734 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20Property.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_non_server_name.py>`_,test_non_server_name
+`R-86182 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_network_format.py>`_,test_network_format
+`R-86285 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-86285>`_,"A VNF's Heat Orchestration template **MUST** have a
+corresponding environment file.",`test_heat_pairs_provided <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_pairs_provided.py>`_,test_heat_pairs_provided
+`R-86476 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_vm_role_value.py>`_,test_vm_role_hardcoded
+`R-87123 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
+`R-87247 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_base_template_names.py>`_,test_base_template_names
+`R-87485 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_base_template_names.py>`_,test_base_template_names
+`R-87563 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_instance_ip_resource_id.py>`_,test_contrail_instance_ip_resource_id_internal
+`R-87817 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types.py>`_,test_nova_server_name_parameter
+`R-88540 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_instance_ip_resource_id.py>`_,test_contrail_instance_ip_resource_id_subint
+`R-89913 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_volume_templates_outputs.py>`_,test_volume_templates_contains_outputs
+`R-901331 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_nova_servers_vm_types_use_get_param.py>`_,test_vm_type_assignments_on_nova_servers_only_use_get_param
+`R-90152 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-90152>`_,"A VNF's Heat Orchestration Template's
+``resources:`` section **MUST** contain the declaration of at
+least one resource.",`test_initial_configuration <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_initial_configuration.py>`_,test_06_heat_template_resource_section_has_resources
+`R-90206 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+`R-90279 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_all_parameters_used_in_template.py>`_,test_all_parameters_used_in_template
+`R-90526 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-90526>`_,"A VNF Heat Orchestration Template parameter declaration **MUST NOT**
+contain the ``default`` attribute.",`test_heat_parameter_section <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_parameter_section.py>`_,test_default_values
+`R-91125 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_nova_server_image_parameter_exists_in_environment_file
+`R-91342 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_pairs_provided.py>`_,test_heat_pairs_provided
+`R-91810 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_neutron_port_addresses.py>`_,test_neutron_port_external_ipaddress
+`R-92193 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Contrail%20Resource%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_network_fqdn_parameter_doesnt_exist_in_environment_file
+`R-92635 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Template%20Format.html#R-92635>`_,"A VNF's Heat Orchestration Template **MUST** be compliant with the
+OpenStack Template Guide.",`test_initial_configuration <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_initial_configuration.py>`_,test_02_no_duplicate_keys_in_file
+`R-93030 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
+`R-93177 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_network_format_use_get_param_or_get_resource.py>`_,test_network_format_use_get_param_or_get_resource
+`R-93496 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+`R-94509 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_heat_pairs_provided.py>`_,test_heat_pairs_provided
+`R-94669 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/ONAP%20Output%20Parameter%20Names.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_oam_address_outputs.py>`_,test_oam_address_v6_zero_or_one
+`R-95303 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/General%20Guidelines%20for%20Heat.html#R-95303>`_,A VNF's Heat Orchestration Template **MUST** be defined using valid YAML.,`test_get_attr_usage <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_get_attr_usage.py>`_,test_08_validate_get_attr_usage
+`R-95430 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_server_parameters.py>`_,test_vm_role_parameter_type_and_parameter_name
+`R-96253 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_vmi_resource_id.py>`_,test_contrail_instance_ip_resource_id_external
+`R-97201 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+`R-98374 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Metadata%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_required_parameters_no_constraints.py>`_,test_vf_module_id_parameter_has_no_constraints
+`R-98407 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/{vm-type}.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_vm_type_syntax.py>`_,test_vm_type_syntax
+`R-98450 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Nova%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_availability_zone.py>`_,test_availability_zone_naming
+`R-98569 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+`R-98748 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py>`_,test_allowed_address_pairs_include_vm_type_network_role
+`R-98905 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Neutron%20Parameters.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
+`R-99110 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20IDs.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_contrail_vn_resource_id.py>`_,test_neutron_net_resource_id
+`R-99646 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Orchestration%20Templates%20Overview.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_files_in_flat_dir.py>`_,test_files_in_flat_dir
+`R-99812 <https://docs.onap.org/en/latest/submodules/vnfrqts/requirements.git/docs/Chapter5/Heat/ONAP%20Heat%20Resource%20ID%20and%20Parameter%20Naming%20Convention/Resource%20Property.html#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 <https://github.com/onap/vvp-validation-scripts/blob/master/ice_validator/tests/test_environment_file_parameters.py>`_,test_non_nova_server_name_parameter_doesnt_exist_in_environment_file
diff --git a/docs/traceability.csv b/docs/traceability.csv
index e482167..cf2c22e 100755..100644
--- a/docs/traceability.csv
+++ b/docs/traceability.csv
@@ -1,203 +1,1785 @@
-Requirement ID,Section,Test Module,Test Name
-R-00977,{network-role},tests.test_nova_servers_vm_types,test_vm_type_network_role_collision
-R-01896,Scope of a Heat Orchestration Template,tests.test_no_unused_parameters_between_env_and_templates,test_no_unused_parameters_between_env_and_templates
-R-02164,External Networks,tests.test_contrail_fqdn,test_contrail_fqdn
-R-02691,workload_context,tests.test_environment_file_parameters,test_nova_server_workload_context_parameter_doesnt_exist_in_environment_file
-R-03324,Environment File Format,tests.test_environment_file_structure,test_environment_file_contains_required_sections
-R-04697,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-04747,OS::Heat::CloudConfig,tests.test_cloud_config_resource_id,test_cloud_config
-R-05257,"VIP Assignment, External Networks, Supported by Automation",tests.test_forbidden_resources,test_neutron_floating_ip_resource_type
-R-07443,ONAP Volume Module Output Parameters,tests.test_volume_outputs_consumed,test_volume_outputs_consumed
-R-07507,vnf_id,tests.test_server_parameters,test_vnf_id_parameter_type_and_parameter_name
-R-08975,OS::Heat::SoftwareConfig,tests.test_software_config_resource_id,test_software_config_vm_type
-R-09811,vf_module_index,tests.test_required_parameters_no_constraints,test_vf_module_index_parameter_has_no_constraints
-R-10754,"VIP Assignment, External Networks, Supported by Automation",tests.test_neutron_port_addresses,test_neutron_port_floating
-R-10834,properties,tests.test_nested_parameter_args,test_nested_parameter_args
-R-11041,Nested Heat Template Requirements,tests.test_nested_template_parameters,test_nested_template_parameters
-R-11200,ONAP VNF Modularity Overview,tests.test_volume_outputs_consumed,test_volume_outputs_consumed
-R-11441,type,tests.test_heat_template_structure,test_parameter_type
-R-11690,Resource IDs,tests.test_resource_indices,test_indices_start_at_0_increment
-R-13194,environment_context,tests.test_environment_file_parameters,test_nova_server_environment_context_parameter_doesnt_exist_in_environment_file
-R-15287,"Property: fixed_ips, Map Property: subnet",tests.test_neutron_port_fixed_ips,test_neutron_port_external_fixed_ips
-R-15480,vf_module_name,tests.test_required_parameters_no_constraints,test_vf_module_name_parameter_has_no_constraints
-R-16241,Internal Networks,tests.test_network_format,test_network_has_subnet
-R-16437,OS::ContrailV2::ServiceTemplate,tests.test_contrail_resource_id,test_contrail_servicetemplate_resource_id
-R-16447,resource ID,tests.test_unique_resources_across_all_templates,test_unique_resources_across_all_yaml_files
-R-16968,External Networks,tests.test_network_format,test_network_resource_id_format
-R-17528,Nested Heat Template Requirements,tests.test_nesting_nova_server,test_nesting_nova_server
-R-18008,Property: network,tests.test_neutron_port_network_parameter,test_neutron_port_network_param_is_string
-R-19756,Interface Route Table Prefixes for Contrail InterfaceRoute Table,tests.test_contrail_irt_routes,test_contrail_irt_route_param_type
-R-20065,OS::ContrailV2::PortTuple,tests.test_contrail_resource_id,test_contrail_porttuple_resource_id
-R-20308,environment_context,tests.test_nova_servers_environment_context,test_environment_context
-R-20453,OS::Neutron::Port,tests.test_port_resource_ids,test_port_resource_ids
-R-20856,vnf_id,tests.test_environment_file_parameters,test_nova_server_vnf_id_parameter_doesnt_exist_in_environment_file
-R-20947,OS::ContrailV2::InstanceIp,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_subint
-R-22288,"Property: fixed_ips, Map Property: subnet",tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
-R-22688,Internal Networks,tests.test_neutron_port_internal_network,test_neutron_port_internal_network
-R-22838,Property: Name,tests.test_environment_file_parameters,test_nova_server_name_parameter_doesnt_exist_in_environment_file
-R-23311,Property: availability_zone,tests.test_server_parameters,test_availability_zone_parameter_type
-R-23503,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-23664,resources,tests.test_heat_template_structure,test_heat_template_structure_contains_resources
-R-25720,OS::Neutron::Net,tests.test_neutron_net_resource_id,test_neutron_net_resource_id
-R-25877,<param name>,tests.test_heat_parameter_section,test_parameter_names
-R-26124,default,tests.test_no_unused_parameters_between_env_and_templates,test_no_unused_parameters_between_env_and_templates
-R-26351,OS::Neutron::Port,tests.test_port_resource_ids,test_port_resource_ids
-R-270358,ONAP Heat Cinder Volumes,tests.test_volume_templates,test_volume_templates_contains_cinder_or_resource_group
-R-27078,heat_template_version,tests.test_heat_template_structure,test_heat_template_structure_contains_heat_template_version
-R-27818,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-28222,Interface Route Table Prefixes for Contrail InterfaceRoute Table,tests.test_contrail_irt_routes,test_contrail_irt_route_param_format
-R-28795,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
-R-29751,OS::Nova::Server,tests.test_nova_server_resource_id,test_nova_server_resource_id
-R-29765,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-29872,Property: network,tests.test_environment_file_parameters,test_nova_server_network_parameter_doesnt_exist_in_environment_file
-R-30753,OS::ContrailV2::NetworkIpam,tests.test_contrail_resource_id,test_contrail_networkipam_resource_id
-R-30804,OS::Heat::MultipartMime,tests.test_multipart_mime_resource_id,test_multipart_mime
-R-31141,Cinder Volume Modules,tests.test_heat_pairs_provided,test_heat_pairs_provided
-R-32394,{vm-type},tests.test_vm_type_case,test_vm_type_case
-R-34037,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-34055,workload_context,tests.test_required_parameters_no_constraints,test_workload_context_parameter_has_no_constraints
-R-348813,ONAP VNF On-Boarding,tests.test_no_image_files,test_no_image_files_included
-R-35414,parameters,tests.test_heat_template_structure,test_heat_template_structure_contains_parameters
-R-35666,Internal Networks,tests.test_network_format,test_network_resource_id_format
-R-35735,"VIP Assignment, External Networks, Supported by Automation",tests.test_allowed_address_pairs_include_vm_type_network_role,test_allowed_address_pairs_include_vm_type_network_role
-R-36542,vnf_name,tests.test_environment_file_parameters,test_nova_server_vnf_name_parameter_doesnt_exist_in_environment_file
-R-36772,type,tests.test_heat_template_parameters_contain_required_fields,test_heat_template_parameters_contain_required_fields
-R-37028,ONAP VNF Modularity Overview,tests.test_base_template_names,test_base_template_names
-R-37039,vf_module_index,tests.test_environment_file_parameters,test_nova_server_vf_module_index_parameter_doesnt_exist_in_environment_file
-R-37437,vnf_id,tests.test_servers_have_required_metadata,test_servers_have_required_metadata
-R-38236,"Property: fixed_ips, Map Property: subnet",tests.test_neutron_port_fixed_ips,test_neutron_port_fixed_ips
-R-38474,ONAP VNF Modularity Overview,tests.test_env_and_yaml_same_name,test_env_and_yaml_same_name
-R-39067,vf_module_name,tests.test_server_parameters,test_vf_module_name_parameter_type_and_parameter_name
-R-39402,description,tests.test_heat_template_structure,test_heat_template_structure_contains_description
-R-39841,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
-R-40499,Property: flavor,tests.test_nova_servers_resource_ids,test_nova_servers_valid_resource_ids
-R-40971,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-41492,"VIP Assignment, External Networks, Supported by Automation",tests.test_allowed_address_pairs_include_vm_type_network_role,test_allowed_address_pairs_include_vm_type_network_role
-R-41888,Heat Files Support (get_file),tests.test_get_file_only_reference_local_files,test_get_file_no_url_retrieval
-R-41956,"VIP Assignment, External Networks, Supported by Automation",tests.test_neutron_port_addresses,test_neutron_port_external_ipaddress_v6
-R-44001,description,tests.test_heat_template_parameters_contain_required_fields,test_heat_template_parameters_contain_required_fields
-R-44318,vnf_name,tests.test_required_parameters_no_constraints,test_vnf_name_parameter_has_no_constraints
-R-45188,Property: flavor,tests.test_nova_servers_vm_types,test_nova_server_flavor_parameter
-R-46128,OS::ContrailV2::InstanceIp,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_external
-R-46839,{vm-type},tests.test_vm_type_resource_id,test_vm_type_resource_id
-R-48067,{vm-type},tests.test_nova_servers_vm_types,test_vm_type_network_role_collision
-R-481670,Property: flavor,tests.test_nova_servers_vm_types_use_get_param,test_vm_type_assignments_on_nova_servers_only_use_get_param
-R-50011,OS::Heat::ResourceGroup Property count,tests.test_environment_file_parameters,test_heat_rg_count_parameter_exists_in_environment_file
-R-50436,Property: flavor,tests.test_nova_servers_vm_types,test_nova_server_flavor_parameter
-R-50468,OS::ContrailV2::VirtualMachineInterface,tests.test_contrail_vmi_resource_id,test_contrail_instance_ip_resource_id_internal
-R-50816,vf_module_index,tests.test_servers_metadata_use_get_param,test_servers_vf_module_index_metadata_use_get_param
-R-511776,ONAP VNF On-Boarding,tests.test_files_in_flat_dir,test_files_in_flat_dir
-R-51430,Property: Name,tests.test_nova_servers_vm_types,test_nova_server_name_parameter
-R-53310,OS::ContrailV2::InstanceIp,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_external
-R-53433,ONAP VNF Modularity Overview,tests.test_env_and_yaml_same_name,test_env_and_yaml_same_name
-R-53952,type,tests.test_no_http_resources,test_no_http_resources
-R-54171,Property: Name,tests.test_nova_server_name_parameters_start_at_0,test_nova_server_name_parameter_starts_at
-R-54340,vf_module_index,tests.test_server_parameters,test_vf_module_index_parameter_type_and_parameter_name
-R-54458,OS::ContrailV2::VirtualMachineInterface,tests.test_contrail_vmi_resource_id,test_contrail_instance_ip_resource_id_subint
-R-55218,vnf_id,tests.test_required_parameters_no_constraints,test_vnf_id_parameter_has_no_constraints
-R-55306,vf_module_index,tests.test_volume_templates,test_no_vf_module_index_in_cinder
-R-56183,environment_context,tests.test_required_parameters_no_constraints,test_environment_context_parameter_has_no_constraints
-R-56438,ONAP Heat Orchestration Template Filenames,tests.test_heat_pairs_provided,test_heat_pairs_provided
-R-57282,Property: image,tests.test_nova_servers_resource_ids,test_nova_servers_valid_resource_ids
-R-58670,Property: image,tests.test_nova_servers_vm_types,test_nova_server_image_parameter
-R-59568,Property: availability_zone,tests.test_environment_file_parameters,test_nova_server_az_parameter_doesnt_exist_in_environment_file
-R-599443,ONAP Heat Support of Environment Files,tests.test_env_parameters_defined_in_template,test_env_params_are_defined_in_template
-R-60011,Nested Heat Template Requirements,tests.test_nesting_level,test_nesting_level
-R-62187,OS::ContrailV2::InstanceIp,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_internal
-R-62428,vnf_name,tests.test_server_parameters,test_vnf_name_parameter_type_and_parameter_name
-R-62590,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
-R-62802,"Property: fixed_ips, Map Property: subnet",tests.test_neutron_port_fixed_ips,test_neutron_port_external_fixed_ips
-R-62983,Property: network,tests.test_network_format,test_network_format
-R-663631,Property: Name,tests.test_nova_servers_vm_types_use_get_param,test_vm_type_assignments_on_nova_servers_only_use_get_param
-R-67231,Environment File Format,tests.test_env_no_resource_registry,test_env_no_resource_registry
-R-67597,vm_role,tests.test_required_parameters_no_constraints,test_vm_role_parameter_has_no_constraints
-R-68023,vf_module_name,tests.test_servers_metadata_use_get_param,test_servers_vf_module_name_metadata_use_get_param
-R-69431,Property: flavor,tests.test_environment_file_parameters,test_nova_server_flavor_parameter_exists_in_environment_file
-R-69634,"Property: fixed_ips, Map Property: subnet",tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
-R-70276,Nested Heat file,tests.test_filename_is_vmtype_dot_yaml,test_filename_is_vmtype_dot_yaml
-R-71152,Property: image,tests.test_nova_servers_vm_types,test_nova_server_image_parameter
-R-71493,vf_module_id,tests.test_servers_have_required_metadata,test_servers_have_required_metadata
-R-71577,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-71699,type,tests.test_no_http_resources,test_no_http_resources
-R-72483,vnf_name,tests.test_servers_have_required_metadata,test_servers_have_required_metadata
-R-72871,vf_module_id,tests.test_environment_file_parameters,test_nova_server_vf_module_id_parameter_doesnt_exist_in_environment_file
-R-74304,ONAP Heat Orchestration Template Filenames,tests.test_heat_pairs_provided,test_heat_pairs_provided
-R-74978,workload_context,tests.test_nova_servers_workload_context,test_workload_context
-R-75141,resource ID,tests.test_resource_ids_alphanumeric_only,test_alphanumeric_resource_ids_only
-R-76014,OS::ContrailV2::ServiceHealthCheck,tests.test_contrail_resource_id,test_contrail_servicehealthcheck_resource_id
-R-76057,Nested Heat file,tests.test_base_template_names,test_base_template_names
-R-76160,"Property: fixed_ips, Map Property: subnet",tests.test_neutron_port_fixed_ips,test_neutron_port_internal_fixed_ips
-R-76449,"VIP Assignment, External Networks, Supported by Automation",tests.test_forbidden_resources,test_neutron_floating_ip_association_resource_type
-R-76682,Interface Route Table Prefixes for Contrail InterfaceRoute Table,tests.test_environment_file_parameters,test_contrail_route_prefixes_parameter_doesnt_exist_in_environment_file
-R-76718,Heat Files Support (get_file),tests.test_get_file_only_reference_local_files,test_get_file_only_reference_local_files
-R-78380,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-80374,vf_module_name,tests.test_environment_file_parameters,test_nova_server_vf_module_name_parameter_doesnt_exist_in_environment_file
-R-80829,"Property: fixed_ips, Map Property: subnet",tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
-R-81214,OS::ContrailV2::InterfaceRouteTable,tests.test_contrail_resource_id,test_contrail_interfaceroutetable_resource_id
-R-81339,Base Modules,tests.test_base_template_names,test_base_template_names
-R-81725,ONAP VNF Modularity Overview,tests.test_env_and_yaml_same_name,test_env_and_yaml_same_name
-R-82134,vf_module_id,tests.test_server_parameters,test_vf_module_id_parameter_type_and_parameter_name
-R-82732,Cinder Volume Modules,tests.test_volume_outputs_consumed,test_volume_module_name_matches_incremental_or_base_module
-R-83412,"VIP Assignment, External Networks, Supported by Automation",tests.test_environment_file_parameters,test_neutron_port_aap_ip_parameter_doesnt_exist_in_environment_file
-R-83418,"VIP Assignment, External Networks, Supported by Automation",tests.test_environment_file_parameters,test_neutron_port_aap_ip_parameter_doesnt_exist_in_environment_file
-R-83677,"Property: fixed_ips, Map Property: subnet",tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
-R-84123,"Property: fixed_ips, Map Property: subnet",tests.test_neutron_port_fixed_ips,test_neutron_port_internal_fixed_ips
-R-85235,"Property: fixed_ips, Map Property: ip_address",tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
-R-85734,Resource Property “name”,tests.test_non_server_name,test_non_server_name
-R-86182,Property: network,tests.test_network_format,test_network_format
-R-86285,Environment File Format,tests.test_heat_pairs_provided,test_heat_pairs_provided
-R-87123,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
-R-87247,Incremental Modules,tests.test_base_template_names,test_base_template_names
-R-87485,ONAP Heat Orchestration Template Filenames,tests.test_base_template_names,test_base_template_names
-R-87563,OS::ContrailV2::InstanceIp,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_internal
-R-87817,Property: Name,tests.test_nova_servers_vm_types,test_nova_server_name_parameter
-R-88540,OS::ContrailV2::InstanceIp,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_subint
-R-89913,ONAP Volume Module Output Parameters,tests.test_volume_templates_outputs,test_volume_templates_contains_outputs
-R-901331,Property: image,tests.test_nova_servers_vm_types_use_get_param,test_vm_type_assignments_on_nova_servers_only_use_get_param
-R-90152,resources,tests.test_initial_configuration,test_06_heat_template_resource_section_has_resources
-R-90206,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
-R-90279,parameters,tests.test_all_parameters_used_in_template,test_all_parameters_used_in_template
-R-90526,default,tests.test_heat_parameter_section,test_default_values
-R-91125,Property: image,tests.test_environment_file_parameters,test_nova_server_image_parameter_exists_in_environment_file
-R-91342,Base Modules,tests.test_heat_pairs_provided,test_heat_pairs_provided
-R-91810,"VIP Assignment, External Networks, Supported by Automation",tests.test_neutron_port_addresses,test_neutron_port_external_ipaddress
-R-92193,External Networks,tests.test_environment_file_parameters,test_network_fqdn_parameter_doesnt_exist_in_environment_file
-R-92635,ONAP Heat Orchestration Template Format,tests.test_initial_configuration,test_02_no_duplicate_keys_in_file
-R-93030,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
-R-93177,Property: network,tests.test_network_format_use_get_param_or_get_resource,test_network_format_use_get_param_or_get_resource
-R-93496,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
-R-94509,Incremental Modules,tests.test_heat_pairs_provided,test_heat_pairs_provided
-R-95303,YAML Format,tests.test_get_attr_usage,test_08_validate_get_attr_usage
-R-95430,vm_role,tests.test_server_parameters,test_vm_role_parameter_type_and_parameter_name
-R-96253,OS::ContrailV2::VirtualMachineInterface,tests.test_contrail_vmi_resource_id,test_contrail_instance_ip_resource_id_external
-R-97201,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
-R-98374,vf_module_id,tests.test_required_parameters_no_constraints,test_vf_module_id_parameter_has_no_constraints
-R-98407,{vm-type},tests.test_vm_type_syntax,test_vm_type_syntax
-R-98450,Property: availability_zone,tests.test_availability_zone,test_availability_zone_naming
-R-98569,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
-R-98748,"VIP Assignment, External Networks, Supported by Automation",tests.test_allowed_address_pairs_include_vm_type_network_role,test_allowed_address_pairs_include_vm_type_network_role
-R-98905,"Property: fixed_ips, Map Property: ip_address",tests.test_environment_file_parameters,test_neutron_port_external_fixedips_ipaddress_parameter_doesnt_exist_in_environment_file
-R-99110,OS::ContrailV2::VirtualNetwork,tests.test_contrail_vn_resource_id,test_neutron_net_resource_id
-R-99646,ONAP Heat Orchestration Template Filenames,tests.test_files_in_flat_dir,test_files_in_flat_dir
-R-99812,Resource Property “name”,tests.test_environment_file_parameters,test_non_nova_server_name_parameter_doesnt_exist_in_environment_file
-,,tests.test_initial_configuration,test_03_all_referenced_resources_exists
-,,tests.test_initial_configuration,test_03_all_referenced_resources_exists
-,,tests.test_initial_configuration,test_04_valid_nesting
-,,tests.test_initial_configuration,test_04_valid_nesting
-,,tests.test_initial_configuration,test_05_all_get_param_have_defined_parameter
-,,tests.test_initial_configuration,test_05_all_get_param_have_defined_parameter
-,,tests.test_nova_servergroup_policies,test_nova_servergroup_policies
-,,tests.test_nova_servergroup_policies,test_nova_servergroup_policies
-,,tests.test_volume_module_naming,test_detected_volume_module_follows_naming_convention
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
-,,tests.test_volume_resource_ids,test_volume_resource_ids
+Requirement ID,Requirement,Section,Keyword,Validation Mode,Is Testable,Test Module,Test Name
+R-00011,"A VNF's Heat Orchestration Template's parameter defined
+in a nested YAML file
+**SHOULD NOT** have a parameter constraint defined.",constraints,SHOULD NOT,static,FALSE,,
+R-00228,"A VNF's Heat Orchestration Template **MAY**
+reference the nested heat statically by repeated definition.",Nested Heat Template Requirements,MAY,,FALSE,,
+R-00606,"A VNF **MAY** be connected to zero, one or more than one external
+network.",External Networks,MAY,,FALSE,,
+R-00977,"A VNF's Heat Orchestration Template's ``{network-role}``
+**MUST NOT** be a substring of ``{vm-type}``.",{network-role},MUST NOT,static,TRUE,tests.test_nova_servers_vm_types,test_vm_type_network_role_collision
+R-01101,"A VNF's Heat Orchestration Template **MAY**
+reference the nested heat dynamically using the resource
+``OS::Heat::ResourceGroup``.",Nested Heat Template Requirements,MAY,,FALSE,,
+R-01359,"A VNF's Heat Orchestration Template that contains an ``OS::Nova:Server``
+Resource **MAY** define a parameter for the property
+``availability_zone`` that is not utilized in any ``OS::Nova::Server``
+resources in the Heat Orchestration Template.",Property: availability_zone,MAY,,FALSE,,
+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.",{vm-type},MUST,static,TRUE,tests.test_vm_class_has_unique_type,test_vm_class_has_unique_type
+R-01896,"A VNF's Heat Orchestration Template's parameter values that are constant
+across all deployments **MUST** be declared in a Heat Orchestration
+Template Environment File.",Scope of a Heat Orchestration Template,MUST,static,TRUE,,
+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",External Networks,MUST,static,TRUE,tests.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.",workload_context,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_nova_server_workload_context_parameter_doesnt_exist_in_environment_file
+R-03251,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
+**MAY** be defined in a Cinder Volume Module.",ONAP VNF Modularity Overview,MAY,,FALSE,,
+R-03324,"A VNF's Heat Orchestration template's Environment File **MUST**
+contain the ``parameters:`` section.",Environment File Format,MUST,static,TRUE,tests.test_environment_file_structure,test_environment_file_contains_required_sections
+R-03595,"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",OS::Neutron::SecurityGroup,SHOULD,,FALSE,,
+R-03656,"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::Heat::SoftwareConfig,MAY,,FALSE,,
+R-04344,"A VNF's Nested YAML file **MAY** be invoked by more than one of
+a VNF's Heat Orchestration Templates (when the VNF is composed of two
+or more Heat Orchestration Templates).",Nested Heat Template Requirements,MAY,,FALSE,,
+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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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}``.",OS::Heat::CloudConfig,MUST,static,TRUE,tests.test_cloud_config_resource_id,test_cloud_config
+R-05050,"A VNF's Heat Orchestration Templates intrinsic function
+``get_file`` <content key> **MAY** be used:
+
+ * more than once in a VNF's Heat Orchestration Template
+ * in two or more of a VNF's Heat Orchestration Templates
+ * in a VNF's Heat Orchestration Templates nested YAML file",Heat Files Support (get_file),MAY,,FALSE,,
+R-05201,"When a VNF connects to two or more unique networks, each
+network **MUST** be assigned a unique ``{network-role}``
+in the context of the VNF for use in the VNF's Heat Orchestration
+Template.",{network-role},MUST,none,FALSE,,
+R-05257,"A VNF's Heat Orchestration Template's **MUST NOT**
+contain the Resource ``OS::Neutron::FloatingIP``.","VIP Assignment, External Networks, Supported by Automation",MUST NOT,static,TRUE,tests.test_forbidden_resources,test_neutron_floating_ip_resource_type
+R-06613,"A VNF's Heat Orchestration Template's parameter defined
+in a non-nested YAML file as type
+``boolean`` **MAY** have a parameter constraint defined.",constraints,MAY,,FALSE,,
+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.",ONAP Volume Module Output Parameters,MUST,static,TRUE,tests.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``.",vnf_id,MUST,static,TRUE,tests.test_server_parameters,test_vnf_id_parameter_type_and_parameter_name
+R-08775,"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",OS::Neutron::SecurityGroup,SHOULD,,FALSE,,
+R-08975,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::SoftwareConfig``
+Resource ID **MUST** contain the ``{vm-type}``.",OS::Heat::SoftwareConfig,MUST,static,TRUE,tests.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.",vf_module_index,MUST NOT,static,TRUE,tests.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.","VIP Assignment, External Networks, Supported by Automation",MUST,static,TRUE,tests.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 ] }``",properties,MUST,static,TRUE,tests.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.",Nested Heat Template Requirements,MUST,,TRUE,tests.test_nested_template_parameters,test_nested_template_parameters
+R-11168,"A VNF's Heat Orchestration Template's Resource ID that is associated with
+an external network **MUST** include the ``{network-role}`` as part
+of the resource ID.",{network-role},MUST,none,FALSE,,
+R-11200,"A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
+with a Base module or Incremental module.",ONAP VNF Modularity Overview,MUST,static,TRUE,tests.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``",type,MUST,static,TRUE,tests.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 <resource ID> MUST be unique across all Heat
+Orchestration Templates and all HEAT Orchestration Template
+Nested YAML files that are used to create the VNF*. 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.",Resource IDs,MUST,static,TRUE,tests.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.",environment_context,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_nova_server_environment_context_parameter_doesnt_exist_in_environment_file
+R-13196,A VNF **MAY** be composed of zero to many Incremental Modules.,ONAP VNF Modularity Overview,MAY,,FALSE,,
+R-14198,"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",OS::Neutron::SecurityGroup,SHOULD,,FALSE,,
+R-14447,"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 the index",OS::ContrailV2::ServiceTemplate,MAY,,FALSE,,
+R-15189,"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``",OS::Nova::ServerGroup,MAY,,FALSE,,
+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.","Property: fixed_ips, Map Property: subnet",MUST,static,TRUE,tests.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.",vf_module_name,MUST NOT,static,TRUE,tests.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.",Internal Networks,MUST,static,TRUE,tests.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}``.",OS::ContrailV2::ServiceTemplate,MUST,static,TRUE,tests.test_contrail_resource_id,test_contrail_servicetemplate_resource_id
+R-16447,"A VNF's <resource ID> **MUST** be unique across all Heat
+Orchestration Templates and all HEAT Orchestration Template
+Nested YAML files that are used to create the VNF.",resource ID,MUST,static,TRUE,tests.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.",External Networks,MUST NOT,static,TRUE,tests.test_network_format,test_network_resource_id_format
+R-17334,"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",OS::Neutron::SecurityGroup,SHOULD,,FALSE,,
+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.",Nested Heat Template Requirements,MUST,,TRUE,tests.test_nesting_nova_server,test_nesting_nova_server
+R-18001,"If the VNF's ports connected to a unique internal network
+and the port's IP addresses are statically assigned IP Addresses,
+the IPv4 Addresses **MAY** be from different subnets and the
+IPv6 Addresses **MAY** be from different subnets.",Items to Note,MAY,,FALSE,,
+R-18008,"The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
+property ``network`` parameter **MUST** be declared as type: ``string``.",Property: network,MUST,static,TRUE,tests.test_neutron_port_network_parameter,test_neutron_port_network_param_is_string
+R-18202,"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::MultipartMime,MAY,,FALSE,,
+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``.",OAM Management IP Addresses,MUST,static,TRUE,tests.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``.",Interface Route Table Prefixes for Contrail InterfaceRoute Table,MUST,static,TRUE,tests.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}``.",OS::ContrailV2::PortTuple,MUST,static,TRUE,tests.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``.",environment_context,MUST,static,TRUE,tests.test_nova_servers_environment_context,test_environment_context
+R-20319,"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::CloudConfig,MAY,,FALSE,,
+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}``",OS::Neutron::Port,MUST,static,TRUE,tests.test_port_resource_ids,test_port_resource_ids
+R-20547,"When an ONAP Volume Module Output Parameter is declared as an input
+parameter in a base or an incremental module Heat Orchestration
+Template, parameter constraints **SHOULD NOT** be declared.",ONAP Volume Module Output Parameters,SHOULD NOT,static,FALSE,,
+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.",vnf_id,MUST NOT,static,TRUE,tests.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",OS::ContrailV2::InstanceIp,MUST,static,TRUE,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_subint
+R-21330,"A VNF's Heat Orchestration Template's Resource property parameter that is
+associated with external network **MUST** include the ``{network-role}``
+as part of the parameter name.",{network-role},MUST,none,FALSE,,
+R-21511,"A VNF's Heat Orchestration Template's use of ``{network-role}``
+in all Resource IDs **MUST** be the same case.",{network-role},MUST,none,FALSE,,
+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.","Property: fixed_ips, Map Property: subnet",MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+R-22589,"A VNF's Heat Orchestration Template parameter declaration
+**MAY** contain the attribute ``immutable:``.",immutable,MAY,,FALSE,,
+R-22608,"When a VNF's Heat Orchestration Template's Base Module's output
+parameter is declared as an input parameter in an Incremental Module,
+the parameter attribute ``constraints:`` **SHOULD NOT** be declared.",ONAP Base Module Output Parameters,SHOULD NOT,static,FALSE,,
+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.",Internal Networks,MUST,static,TRUE,tests.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.",Property: Name,MUST NOT,static,TRUE,tests.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``.",Property: availability_zone,MUST,static,TRUE,tests.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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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:``.",resources,MUST,static,TRUE,tests.test_heat_template_structure,test_heat_template_structure_contains_resources
+R-24893,"A VNF's Heat Orchestration template's Environment File's
+**MAY** contain the ``event_sinks:`` section.",Environment File Format,MAY,,FALSE,,
+R-24997,"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",OS::Nova::Keypair,SHOULD,,FALSE,,
+R-25190,"A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
+**SHOULD NOT** declare the property ``availability_zone``.",Optional Property availability_zone,SHOULD NOT,,FALSE,,
+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.",OS::Neutron::Net,MUST,static,TRUE,tests.test_neutron_net_resource_id,test_neutron_net_resource_id
+R-25877,"A VNF's Heat Orchestration Template's parameter name
+(i.e., <param name>) **MUST** contain only alphanumeric
+characters and underscores ('_').",<param name>,MUST,static,TRUE,tests.test_heat_parameter_section,test_parameter_names
+R-26124,"If a VNF Heat Orchestration Template parameter has a default value,
+it **MUST** be enumerated in the environment file.",default,MUST,static,TRUE,,
+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}``",OS::Neutron::Port,MUST,static,TRUE,tests.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_``.",{network-role},MUST,static,TRUE,tests.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",ONAP Heat Cinder Volumes,MUST,static,TRUE,tests.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:``.",heat_template_version,MUST,static,TRUE,tests.test_heat_template_structure,test_heat_template_structure_contains_heat_template_version
+R-27469,"A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
+that is creating a *Reserve Port* with an IPv4 address Resource ID
+**SHOULD** 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}``",OS::Neutron::Port,SHOULD,none,FALSE,,
+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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
+R-27970,"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.",Resource IDs,MAY,,FALSE,,
+R-28189,"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::InterfaceRouteTable,MAY,,FALSE,,
+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``",Interface Route Table Prefixes for Contrail InterfaceRoute Table,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+R-28980,A VNF's incremental module **MAY** be used for initial VNF deployment only.,ONAP VNF Modularity Overview,MAY,,FALSE,,
+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",OS::Nova::Server,MUST,static,TRUE,tests.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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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.",Property: network,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_neutron_port_network_parameter_doesnt_exist_in_environment_file
+R-30005,"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::SecurityGroup,MAY,,FALSE,,
+R-30395,A VNF's Cinder Volume Module **MAY** utilize nested heat.,Nested Heat Orchestration Templates Overview,MAY,,FALSE,,
+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).",Resource: OS::Nova::Server - Parameters,MUST,static,TRUE,tests.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}``.",OS::ContrailV2::NetworkIpam,MUST,static,TRUE,tests.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}``.",OS::Heat::MultipartMime,MUST,static,TRUE,tests.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``.",Cinder Volume Modules,MUST,static,TRUE,tests.test_heat_pairs_provided,test_heat_pairs_provided
+R-32094,"A VNF's Heat Orchestration Template parameter declaration **MAY**
+contain the attribute ``label:``.",label,MAY,,FALSE,,
+R-32394,"A VNF's Heat Orchestration Template's use of ``{vm-type}`` in all Resource
+property parameter names **MUST** be the same case.",{vm-type},MUST,static,TRUE,tests.test_vm_type_case,test_vm_type_case
+R-32557,"A VNF's Heat Orchestration Template parameter declaration **MAY**
+contain the attribute ``hidden:``.",hidden,MAY,,FALSE,,
+R-33132,"A VNF's Heat Orchestration Template **MAY** be
+ 1.) Base Module Heat Orchestration Template (also referred to as a
+ Base Module),
+ 2.) Incremental Module Heat Orchestration Template (referred to as
+ an Incremental Module), or
+ 3.) a Cinder Volume Module Heat Orchestration Template (referred to as
+ Cinder Volume Module).",ONAP VNF Modularity Overview,MAY,,FALSE,,
+R-34037,"The VNF's Heat Orchestration Template's
+resource ``OS::Neutron::Port`` property ``fixed_ips``
+map property ``ip_address`` parameter
+**MUST** be declared as either type ``string`` or type
+``comma_delimited_list``.","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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.",workload_context,MUST NOT,static,TRUE,tests.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.",ONAP VNF On-Boarding,MUST,,TRUE,tests.test_no_image_files,test_no_image_files_included
+R-35414,"A VNF Heat Orchestration's template **MUST** contain the
+section ``parameters:``.",parameters,MUST,static,TRUE,tests.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.",Internal Networks,MUST,static,TRUE,tests.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``.","VIP Assignment, External Networks, Supported by Automation",MUST,static,TRUE,tests.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.",vnf_name,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_nova_server_vnf_name_parameter_doesnt_exist_in_environment_file
+R-36582,A VNF's Base Module **MAY** utilize nested heat.,Nested Heat Orchestration Templates Overview,MAY,,FALSE,,
+R-36687,"A VNF's Heat Orchestration Template's ``{vm-type}`` case in Resource
+property parameter names **SHOULD** match the case of ``{vm-type}``
+in Resource IDs and vice versa.",{vm-type},SHOULD,,FALSE,,
+R-36772,"A VNF's Heat Orchestration Template's parameter **MUST** include the
+attribute ``type:``.",type,MUST,static,TRUE,tests.test_heat_template_parameters_contain_required_fields,test_heat_template_parameters_contain_required_fields
+R-36982,"A VNF's Heat Orchestration template **MAY** contain the ``outputs:``
+section.",outputs,MAY,,FALSE,,
+R-37028,A VNF **MUST** be composed of one Base Module,ONAP VNF Modularity Overview,MUST,,TRUE,tests.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.",vf_module_index,MUST NOT,static,TRUE,tests.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``.",vnf_id,MUST,static,TRUE,tests.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``.","Property: fixed_ips, Map Property: subnet",MUST,static,TRUE,tests.test_neutron_port_fixed_ips,test_neutron_port_fixed_ips
+R-38474,A VNF's Base Module **MUST** have a corresponding Environment File.,ONAP VNF Modularity Overview,MUST,static,TRUE,tests.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``.",vf_module_name,MUST,static,TRUE,tests.test_server_parameters,test_vf_module_name_parameter_type_and_parameter_name
+R-39349,"A VNF Heat Orchestration Template **MUST NOT** be designed to utilize the
+OpenStack ``heat stack-update`` command for scaling (growth/de-growth).",Support of heat stack update,MUST NOT,static,TRUE,,
+R-39402,"A VNF's Heat Orchestration Template **MUST** contain the
+section ``description:``.",description,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST NOT,static,TRUE,tests.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.",Property: flavor,MUST,static,TRUE,tests.test_nova_servers_resource_ids,test_nova_servers_valid_resource_ids
+R-40518,"A VNF's Heat Orchestration Template's parameter defined
+in a non-nested YAML file as type
+``string`` **MAY** have a parameter constraint defined.",constraints,MAY,,FALSE,,
+R-40551,"A VNF's Heat Orchestration Template's Nested YAML files **MAY**
+(or **MAY NOT**) contain the section ``resources:``.",resources,MAY,,FALSE,,
+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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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``.","VIP Assignment, External Networks, Supported by Automation",MUST,static,TRUE,tests.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.",Heat Files Support (get_file),MUST NOT,static,TRUE,tests.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.","VIP Assignment, External Networks, Supported by Automation",MUST NOT,static,TRUE,tests.test_neutron_port_addresses,test_neutron_port_external_ipaddress_v6
+R-42685,"A VNF's Heat Orchestration template's Environment File's
+**MAY** contain the ``parameter_merge_strategies:`` section.",Environment File Format,MAY,,FALSE,,
+R-43413,"A VNF **MUST** utilize a modular Heat Orchestration Template design to
+support scaling (growth/de-growth).",Support of heat stack update,MUST,none,FALSE,,
+R-43740,"VNF's Heat Orchestration Template's Resource **MAY** declare the
+attribute ``deletion_policy:``.",deletion_policy,MAY,,FALSE,,
+R-44001,"A VNF's Heat Orchestration Template parameter declaration **MUST**
+contain the attribute ``description``.",description,MUST,static,TRUE,tests.test_heat_template_parameters_contain_required_fields,test_heat_template_parameters_contain_required_fields
+R-44271,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
+property
+``name`` parameter value **SHOULD NOT** contain special characters
+since the Contrail GUI has a limitation displaying special characters.
+
+However, if special characters must be used, the only special characters
+supported are: --- \"" ! $ ' (\ \ ) = ~ ^ | @ ` { } [ ] > , . _",Contrail Issue with Values for OS::Nova::Server Property Name,SHOULD NOT,,FALSE,,
+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.",vnf_name,MUST NOT,static,TRUE,tests.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``.",Property: flavor,MUST,static,TRUE,tests.test_nova_servers_vm_types,test_nova_server_flavor_parameter
+R-45602,"If a VNF's Port is attached to a network (internal or external)
+and the port's IP addresses are cloud assigned by OpenStack's DHCP
+Service, the ``OS::Neutron::Port`` Resource's
+
+* property ``fixed_ips`` map property ``ip_address`` **MUST NOT** be used
+* property ``fixed_ips`` map property ``subnet``
+ **MAY** be used",Items to Note,MUST NOT,none,FALSE,,
+R-46096,"A VNF's Heat Orchestration template's Environment File's
+**MAY** contain the ``encrypted_parameters:`` section.",Environment File Format,MAY,,FALSE,,
+R-46119,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
+**MAY** be defined in a Base Module.",ONAP VNF Modularity Overview,MAY,,FALSE,,
+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",OS::ContrailV2::InstanceIp,MUST,static,TRUE,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_external
+R-46461,"A VNF's port connected to an internal network **MUST NOT** use the port
+for the purpose of reaching VMs in another VNF and/or an
+external gateway and/or
+external router.",Internal Networks,MUST NOT,none,FALSE,,
+R-46839,"A VNF's Heat Orchestration Template's use of ``{vm-type}``
+in all Resource IDs **MUST** be the same case.",{vm-type},MUST,static,TRUE,tests.test_vm_type_resource_id,test_vm_type_resource_id
+R-46968,"VNF's Heat Orchestration Template's Resource **MAY** declare the
+attribute ``depends_on:``.",depends_on,MAY,,FALSE,,
+R-47061,"A VNF's Heat Orchestration Template's OS::Nova::Server
+Resource **SHOULD** contain the metadata map value parameter
+'workload_context'.",workload_context,SHOULD,,FALSE,,
+R-47874,"A VNF **MAY** have
+ * Only an IPv4 OAM Management IP Address
+ * Only an IPv6 OAM Management IP Address
+ * Both a IPv4 and IPv6 OAM Management IP Addresses",OAM Management IP Addresses,MAY,,FALSE,,
+R-48067,"A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST NOT** be a
+substring
+of ``{network-role}``.",{vm-type},MUST NOT,static,TRUE,tests.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``.",Property: flavor,MUST,static,TRUE,tests.test_nova_servers_vm_types_use_get_param,test_vm_type_assignments_on_nova_servers_only_use_get_param
+R-48880,"If a VNF's Port is attached to an external network and the port's
+IP addresses are assigned by ONAP's SDN-Controller,
+the ``OS::Neutron::Port`` Resource's
+
+* property ``fixed_ips`` map property ``ip_address`` **MUST** be used
+* property ``fixed_ips`` map property ``subnet``
+ **MUST NOT** be used",Items to Note,MUST,none,FALSE,,
+R-48987,"If the VNF's OAM Management IP Address is cloud assigned and
+and the OAM IP Address is required to be inventoried in ONAP A&AI,
+then the parameter **MUST** be obtained by the
+resource ``OS::Neutron::Port``
+attribute ``ip_address``.",OAM Management IP Addresses,MUST,none,FALSE,,
+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.",OS::Heat::ResourceGroup Property count,MUST,static,TRUE,tests.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``.",Property: flavor,MUST,static,TRUE,tests.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}``",OS::ContrailV2::VirtualMachineInterface,MUST,static,TRUE,tests.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``.",vf_module_index,MUST,,TRUE,tests.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.",ONAP VNF On-Boarding,MUST,,TRUE,tests.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``.",Property: Name,MUST,static,TRUE,tests.test_nova_servers_vm_types,test_nova_server_name_parameter
+R-52425,"A VNF's port connected to an internal network **MUST**
+use the port for the purpose of reaching VMs in the same VNF.",Internal Networks,MUST,none,FALSE,,
+R-52753,"VNF's Heat Orchestration Template's Base Module's output parameter's
+name and type **MUST** match the VNF's Heat Orchestration Template's
+incremental Module's name and type.",ONAP Base Module Output Parameters,MUST,static,TRUE,,
+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",OS::ContrailV2::InstanceIp,MUST,static,TRUE,tests.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,ONAP VNF Modularity Overview,MUST,static,TRUE,tests.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.",type,MUST NOT,static,TRUE,tests.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.",Property: Name,MUST,static,TRUE,tests.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``.",vf_module_index,MUST,static,TRUE,tests.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}``",OS::ContrailV2::VirtualMachineInterface,MUST,static,TRUE,tests.test_contrail_vmi_resource_id,test_contrail_instance_ip_resource_id_subint
+R-54517,"When a VNF's Heat Orchestration Template's resource is associated with
+a single ``{vm-type}``, the Resource ID **MUST** contain the
+``{vm-type}``.",Resource IDs,MUST,none,FALSE,,
+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.",vnf_id,MUST NOT,static,TRUE,tests.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.",vf_module_index,MUST NOT,static,TRUE,tests.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.",environment_context,MUST NOT,static,TRUE,tests.test_required_parameters_no_constraints,test_environment_context_parameter_has_no_constraints
+R-56287,"If the VNF's OAM Management IP Address is assigned by ONAP SDN-C and
+assigned in the VNF's Heat Orchestration Template's via a heat resource
+``OS::Neutron::Port`` property ``fixed_ips`` map property
+``ip_adress`` parameter (e.g., ``{vm-type}_{network-role}_ip_{index}``,
+``{vm-type}_{network-role}_v6_ip_{index}``)
+and the OAM IP Address is required to be inventoried in ONAP A&AI,
+then the parameter **MUST** be echoed in an output statement.
+
+.. code-block:: yaml
+
+ outputs:
+ oam_management_v4_address:
+ value: {get_param: {vm-type}_{network-role}_ip_{index} }
+ oam_management_v6_address:
+ value: {get_param: {vm-type}_{network-role}_v6_ip_{index} }",OAM Management IP Addresses,MUST,none,FALSE,,
+R-56438,"A VNF's Heat Orchestration Template's Nested YAML file extension **MUST**
+be in the lower case format ``.yaml`` or ``.yml``.",ONAP Heat Orchestration Template Filenames,MUST,static,TRUE,tests.test_heat_pairs_provided,test_heat_pairs_provided
+R-56721,A VNF's Incremental Module **MAY** utilize nested heat.,Nested Heat Orchestration Templates Overview,MAY,,FALSE,,
+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.",Property: image,MUST,static,TRUE,tests.test_nova_servers_resource_ids,test_nova_servers_valid_resource_ids
+R-57424,"A VNF's port connected to an external network **MUST**
+use the port for the purpose of reaching
+VMs in another VNF and/or an external gateway and/or external router.
+A VNF's port connected to an external network **MAY**
+use the port for the purpose of reaching VMs in the same VNF.",External Networks,MUST,none,FALSE,,
+R-58424,"A VNF's Heat Orchestration Template's use of ``{network-role}``
+in all Resource property parameter names **MUST** be the same case.",{network-role},MUST,none,FALSE,,
+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``.",Property: image,MUST,static,TRUE,tests.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",Cinder Volume Modules,MUST,static,TRUE,tests.test_volume_module_naming,test_detected_volume_module_follows_naming_convention
+R-59434,"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::Neutron::Subnet,SHOULD,,FALSE,,
+R-59482,"A VNF's Heat Orchestration Template **MUST NOT** be VNF instance
+specific or cloud site specific.",Scope of a Heat Orchestration Template,MUST NOT,none,FALSE,,
+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.",Property: availability_zone,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_nova_server_az_parameter_doesnt_exist_in_environment_file
+R-59930,"A VNF's Heat Orchestration template's Environment File's
+**MAY** contain the ``parameter_defaults:`` section.",Environment File Format,MAY,,FALSE,,
+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.",ONAP Heat Support of Environment Files,MUST,static,TRUE,tests.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.",Nested Heat Template Requirements,MUST,,TRUE,tests.test_nesting_level,test_nesting_level
+R-61001,"A shared Heat Orchestration Template resource is a resource that **MUST**
+be defined in the base module and will be referenced by one or
+more resources in one or more incremental modules.
+
+The UUID of the shared resource (created in the base module) **MUST** be
+exposed by declaring a parameter in the
+``outputs`` section of the base module.
+
+For ONAP to provided the UUID value of the shared resource to the
+incremental module, the parameter name defined in the ``outputs``
+section of the base module **MUST** be defined as a parameter
+in the ``parameters`` section of the incremental module.
+
+ONAP will capture the output parameter name and value in the base module
+and provide the value to the corresponding parameter(s) in the
+incremental module(s).",ONAP Heat VNF Modularity,MUST,none,FALSE,,
+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",OS::ContrailV2::InstanceIp,MUST,static,TRUE,tests.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``.",vnf_name,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST NOT,static,TRUE,tests.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.","Property: fixed_ips, Map Property: subnet",MUST,static,TRUE,tests.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.",Property: network,MUST,static,TRUE,tests.test_network_format,test_network_format
+R-63137,"VNF's Heat Orchestration Template's Resource **MAY** declare the
+attribute ``update_policy:``.",update_policy,MAY,,FALSE,,
+R-63956,"If the VNF's ports connected to a unique external network
+and the port's IP addresses are ONAP SDN-C assigned IP Addresses,
+the IPv4 Addresses **MAY** be from different subnets and the IPv6
+Addresses **MAY** be from different subnets.",Items to Note,MAY,,FALSE,,
+R-64197,"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 port on the vm-type
+ attached to the network of ``{network-role}``",OS::Heat::ResourceGroup,MUST,static,TRUE,,
+R-65516,"A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair`` applies to
+all Virtual Machines in the VNF, the Resource ID **SHOULD** use the naming
+convention
+
+* ``{vnf-type}_keypair``
+
+where
+
+* ``{vnf-type}`` describes the VNF",OS::Nova::Keypair,SHOULD,,FALSE,,
+R-65618,"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::ServiceHealthCheck,MAY,,FALSE,,
+R-663631,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
+property ``name`` value **MUST** be be obtained via a ``get_param``.",Property: Name,MUST,static,TRUE,tests.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.",Environment File Format,MUST NOT,static,TRUE,tests.test_env_no_resource_registry,test_env_no_resource_registry
+R-67386,"A VNF's Heat Orchestration Template's Resource **MAY** declare the
+attribute ``metadata``.",metadata,MAY,static,FALSE,,
+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.",vm_role,MUST NOT,static,TRUE,tests.test_required_parameters_no_constraints,test_vm_role_parameter_has_no_constraints
+R-67793,"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.",Resource IDs,MUST NOT,none,FALSE,,
+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``.",vf_module_name,MUST,,TRUE,tests.test_servers_metadata_use_get_param,test_servers_vf_module_name_metadata_use_get_param
+R-68122,"A VNF's incremental module **MAY** be deployed more than once,
+either during initial VNF deployment and/or scale out.",ONAP VNF Modularity Overview,MAY,,FALSE,,
+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}``.",Items to Note,MUST,,TRUE,tests.test_port_resource_ids,test_port_resource_ids
+R-68198,"A VNF's Heat Orchestration template's Environment File's
+``parameters:`` section **MAY** (or **MAY NOT**) enumerate parameters.",Environment File Format,MAY,,FALSE,,
+R-68520,"A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
+that is creating a *Reserve Port* with an IPv6 address Resource ID
+**SHOULD** 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::Port,SHOULD,none,FALSE,,
+R-69014,"When a VNF's port connects to an internal network or external network,
+a network role, referred to
+as the ``{network-role}`` **MUST** be assigned to the network for
+use in the VNF's Heat Orchestration Template. The ``{network-role}``
+is used in the VNF's Heat Orchestration Template resource IDs
+and resource property parameter names.",{network-role},MUST,none,FALSE,,
+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.",Property: flavor,MUST,static,TRUE,tests.test_environment_file_parameters,test_nova_server_flavor_parameter_exists_in_environment_file
+R-69588,"When a VNF's Heat Orchestration Template's Virtual Machine
+(i.e., ``OS::Nova::Server`` Resource) boots from Cinder Volume, the
+``OS::Nova::Server`` resource property
+``block_device_mapping`` or ``block_device_mapping_v2``
+**MUST** be used.",Boot Options,MUST,none,FALSE,,
+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.","Property: fixed_ips, Map Property: subnet",MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+R-69663,"A VNF **MAY** be composed from one or more Heat Orchestration
+Templates, each of which represents a subset of the overall VNF.",ONAP VNF Modularity Overview,MAY,,FALSE,,
+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.",Nested Heat file,MUST NOT,static,TRUE,tests.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.",Nested Heat Template Requirements,MUST,,TRUE,tests.test_nested_parameters,test_parameter_name_doesnt_change_in_nested_template
+R-70964,"If a VNF's Port is attached to an internal network and the port's
+IP addresses are statically assigned by the VNF's Heat Orchestration\
+Template (i.e., enumerated in the Heat Orchestration Template's
+environment file), the ``OS::Neutron::Port`` Resource's
+
+* property ``fixed_ips`` map property ``ip_address`` **MUST** be used
+* property ``fixed_ips`` map property ``subnet``
+ **MUST NOT** be used",Items to Note,MUST NOT,none,FALSE,,
+R-71152,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
+property
+``image`` parameter **MUST** be declared as type: ``string``.",Property: image,MUST,static,TRUE,tests.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``.",vf_module_id,MUST,static,TRUE,tests.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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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.",type,MUST NOT,static,TRUE,tests.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``.",vnf_name,MUST,static,TRUE,tests.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.",vf_module_id,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_nova_server_vf_module_id_parameter_doesnt_exist_in_environment_file
+R-73213,"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",OS::Neutron::SecurityGroup,SHOULD,,FALSE,,
+R-74304,"A VNF's Heat Orchestration Template's Environment file extension **MUST**
+be in the lower case format ``.env``.",ONAP Heat Orchestration Template Filenames,MUST,static,TRUE,tests.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``.",workload_context,MUST,static,TRUE,tests.test_nova_servers_workload_context,test_workload_context
+R-75141,"A VNF's Heat Orchestration Template's resource name
+(i.e., <resource ID>) **MUST** only contain alphanumeric
+characters and underscores ('_').",resource ID,MUST,static,TRUE,tests.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}``.",OS::ContrailV2::ServiceHealthCheck,MUST,static,TRUE,tests.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``.",Nested Heat file,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: subnet",MUST,static,TRUE,tests.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``.","VIP Assignment, External Networks, Supported by Automation",MUST NOT,static,TRUE,tests.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.",Interface Route Table Prefixes for Contrail InterfaceRoute Table,MUST NOT,static,TRUE,tests.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.",Heat Files Support (get_file),MUST,static,TRUE,tests.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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
+R-78569,"VNF's Heat Orchestration Template's Resource **MAY** declare the
+attribute ``external_id:``.",external_id,MAY,,FALSE,,
+R-79817,"A VNF's Heat Orchestration Template's parameter defined
+in a non-nested YAML file as
+type ``comma_delimited_list`` **MAY** have a parameter constraint defined.",constraints,MAY,,FALSE,,
+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.",vf_module_name,MUST NOT,static,TRUE,tests.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.","Property: fixed_ips, Map Property: subnet",MUST NOT,static,TRUE,tests.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}``.",OS::ContrailV2::InterfaceRouteTable,MUST,static,TRUE,tests.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_<text>.y[a]ml``
+
+ 2.) ``<text>_base.y[a]ml``
+
+ 3.) ``base.y[a]ml``
+
+ 4.) ``<text>_base_<text>``.y[a]ml
+
+where ``<text>`` **MUST** contain only alphanumeric characters and
+underscores '_' and **MUST NOT** contain the case insensitive word ``base``.",Base Modules,MUST,static,TRUE,tests.test_base_template_names,test_base_template_names
+R-81725,A VNF's Incremental Module **MUST** have a corresponding Environment File,ONAP VNF Modularity Overview,MUST,static,TRUE,tests.test_env_and_yaml_same_name,test_env_and_yaml_same_name
+R-81979,"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::NetworkIpam,MAY,,FALSE,,
+R-82115,"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}``).",Resource IDs,MUST,none,FALSE,,
+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``.",vf_module_id,MUST,static,TRUE,tests.test_server_parameters,test_vf_module_id_parameter_type_and_parameter_name
+R-82481,"A VNF's Heat Orchestration Template's Resource property parameter that is
+associated with a unique Virtual Machine type **MUST** include
+``{vm-type}`` as part of the parameter name with two exceptions:
+
+ 1.) The Resource ``OS::Nova::Server`` property ``availability_zone``
+ parameter **MUST NOT** be prefixed with a common ``{vm-type}`` identifier,
+
+ 2.) The Resource ``OS::Nova::Server`` eight mandatory and optional
+ ``metadata``
+ parameters (i.e., ``vnf_name``, ``vnf_id``, ``vf_module_id``,
+ ``vf_module_name``, ``vm_role``,
+ ``vf_module_index``, ``environment_context``, ``workload_context``)
+ **MUST NOT** be prefixed with a common ``{vm-type}`` identifier.",{vm-type},MUST,static,TRUE,,
+R-82551,"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}``).",Resource IDs,MUST,none,FALSE,,
+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.",Cinder Volume Modules,MUST,static,TRUE,tests.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.","VIP Assignment, External Networks, Supported by Automation",MUST NOT,static,TRUE,tests.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.","VIP Assignment, External Networks, Supported by Automation",MUST NOT,static,TRUE,tests.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.","Property: fixed_ips, Map Property: subnet",MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file
+R-83706,"When a VNF's Heat Orchestration Template's Virtual Machine
+(i.e., ``OS::Nova::Server`` resource) boots from an image, the
+``OS::Nova::Server`` resource property ``image`` **MUST** be used.",Boot Options,MUST,none,FALSE,,
+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.","Property: fixed_ips, Map Property: subnet",MUST,static,TRUE,tests.test_neutron_port_fixed_ips,test_neutron_port_internal_fixed_ips
+R-84322,"A VNF's Heat Orchestration Template's Resource property parameter that
+is associated with an internal network **MUST** include
+``int_{network-role}`` as part of the parameter name,
+where ``int_`` is a hard coded string.",{network-role},MUST,none,FALSE,,
+R-84457,"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::PortTuple,MAY,,FALSE,,
+R-84517,"The Contrail GUI has a limitation displaying special characters.
+The issue is documented in
+https://bugs.launchpad.net/juniperopenstack/+bug/1590710.
+It is recommended that special **SHOULD** characters be avoided.
+However, if special characters must be used, note that for
+the following resources:
+
+* Virtual Machine
+* Virtual Network
+* Port
+* Security Group
+* Policies
+* IPAM Creation
+
+the only special characters supported
+are - \"" ! $\ \ ' ( ) = ~ ^ | @ ` { } [ ] > , . _""",Contrail Issue with Values for the Property Name,SHOULD,,FALSE,,
+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","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.test_fixed_ips_include_vm_type_network_role,test_fixed_ips_include_vm_type_network_role
+R-85328,"A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
+``metadata`` **MAY**
+contain the key/value pair ``vm_role`` and the value **MUST** be
+obtained either via
+
+- ``get_param``
+- hard coded in the key/value pair ``vm_role``.",vm_role,MAY,,FALSE,,
+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.",Resource Property “name”,MUST,static,TRUE,tests.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.",Property: network,MUST,static,TRUE,tests.test_network_format,test_network_format
+R-86285,"A VNF's Heat Orchestration template **MUST** have a
+corresponding environment file.",Environment File Format,MUST,static,TRUE,tests.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., '_').",vm_role,MUST,static,TRUE,tests.test_vm_role_value,test_vm_role_hardcoded
+R-86497,"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::Cinder::VolumeAttachment,SHOULD,,FALSE,,
+R-86588,"A VNF's Heat Orchestration Template's ``{network-role}`` case in Resource
+property parameter names **SHOULD** match the case of ``{network-role}``
+in Resource IDs and vice versa.",{network-role},SHOULD,,FALSE,,
+R-86926,A VNF's incremental module **MAY** be used for scale out only.,ONAP VNF Modularity Overview,MAY,,FALSE,,
+R-86972,"A VNF **SHOULD** create the internal network in the VNF's Heat
+Orchestration Template Base Module.",Internal Networks,SHOULD,,FALSE,,
+R-87004,"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::Volume,SHOULD,,FALSE,,
+R-87096,"A VNF **MAY** contain zero, one or more than one internal network.",Internal Networks,MAY,,FALSE,,
+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.","Property: fixed_ips, Map Property: ip_address",MUST NOT,static,TRUE,tests.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``.",Incremental Modules,MUST,static,TRUE,tests.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``.",ONAP Heat Orchestration Template Filenames,MUST,static,TRUE,tests.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",OS::ContrailV2::InstanceIp,MUST,static,TRUE,tests.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``.",Property: Name,MUST,static,TRUE,tests.test_nova_servers_vm_types,test_nova_server_name_parameter
+R-88524,"A VNF's Heat Orchestration Template's Volume Template
+Output Parameter names
+**MUST** contain ``{vm-type}`` when appropriate.",ONAP Volume Template Output Parameters:,MUST,none,FALSE,,
+R-88536,"A VNF's Heat Orchestration Template's OS::Nova::Server
+Resource **SHOULD** contain the metadata map value parameter
+'environment_context'.",environment_context,SHOULD,,FALSE,,
+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",OS::ContrailV2::InstanceIp,MUST,static,TRUE,tests.test_contrail_instance_ip_resource_id,test_contrail_instance_ip_resource_id_subint
+R-88863,"A VNF's Heat Orchestration Template's parameter defined
+in a non-nested YAML file as type
+``number`` **MAY** have a parameter constraint defined.",constraints,MAY,static,FALSE,,
+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.",ONAP Volume Module Output Parameters,MUST,static,TRUE,tests.test_volume_templates_outputs,test_volume_templates_contains_outputs
+R-90022,"A VNF's Nested YAML file **MAY** be invoked more than once by
+a VNF's Heat Orchestration Template.",Nested Heat Template Requirements,MAY,,FALSE,,
+R-901331,"The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
+property ``image`` value **MUST** be be obtained via a ``get_param``.",Property: image,MUST,static,TRUE,tests.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.",resources,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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``.",parameters,MUST,static,TRUE,tests.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.",default,MUST,static,TRUE,tests.test_heat_parameter_section,test_default_values
+R-90748,"A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
+**MAY** be defined in an Incremental Module.",ONAP VNF Modularity Overview,MAY,,FALSE,,
+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.",Property: image,MUST,static,TRUE,tests.test_environment_file_parameters,test_nova_server_image_parameter_exists_in_environment_file
+R-91273,"A VNF Heat Orchestration's template's parameter for the
+``OS::Nova::Server`` resource property ``availability_zone``
+**MAY NOT** be used in any ``OS::Nova::Server``.",parameters,MAY NOT,,FALSE,,
+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``.",Base Modules,MUST,static,TRUE,tests.test_heat_pairs_provided,test_heat_pairs_provided
+R-91497,"A VNF's incremental module **MAY** be used for both deployment and
+scale out.",ONAP VNF Modularity Overview,MAY,,FALSE,,
+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.","VIP Assignment, External Networks, Supported by Automation",MUST NOT,static,TRUE,tests.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.",External Networks,MUST NOT,static,TRUE,tests.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.",ONAP Heat Orchestration Template Format,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST NOT,static,TRUE,tests.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.",Property: network,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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``.",Incremental Modules,MUST,static,TRUE,tests.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``.",OAM Management IP Addresses,MUST,static,TRUE,tests.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.,YAML Format,MUST,static,TRUE,tests.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``.",vm_role,MUST,static,TRUE,tests.test_server_parameters,test_vm_role_parameter_type_and_parameter_name
+R-96227,"A VNF's Heat Orchestration Template's parameter defined
+in a non-nested YAML file as type
+``json`` **MAY** have a parameter constraint defined.",constraints,MAY,,FALSE,,
+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}``",OS::ContrailV2::VirtualMachineInterface,MUST,static,TRUE,tests.test_contrail_vmi_resource_id,test_contrail_instance_ip_resource_id_external
+R-96482,"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}``.",Resource IDs,MUST,none,FALSE,,
+R-96983,"A VNF's Heat Orchestration Template's Resource ID that is associated
+with an internal network **MUST** include ``int_{network-role}`` as part
+of the Resource ID, where ``int_`` is a hard coded string.",{network-role},MUST,none,FALSE,,
+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.","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.test_environment_file_parameters,test_neutron_port_internal_fixedips_ipaddress_parameter_exists_in_environment_file
+R-97726,"A VNF's Heat Orchestration Template's Base Module Output Parameter names
+**MUST** contain ``{vm-type}`` and/or ``{network-role}`` when appropriate.",ONAP Base Module Output Parameters:,MUST,none,FALSE,,
+R-98138,"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}``.",Resource IDs,MUST,none,FALSE,,
+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.",vf_module_id,MUST NOT,static,TRUE,tests.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_``.",{vm-type},MUST NOT,static,TRUE,tests.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.",Property: availability_zone,MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST,static,TRUE,tests.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``.","VIP Assignment, External Networks, Supported by Automation",MUST,static,TRUE,tests.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.","Property: fixed_ips, Map Property: ip_address",MUST NOT,static,TRUE,tests.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.",OS::ContrailV2::VirtualNetwork,MUST,static,TRUE,tests.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.",ONAP Heat Orchestration Template Filenames,MUST,static,TRUE,tests.test_files_in_flat_dir,test_files_in_flat_dir
+R-99794,"An external network **MUST** have one subnet. An external network
+**MAY** have more than one subnet.",External Networks,MUST,none,FALSE,,
+R-99798,"A VNF's Heat Orchestration Template's Virtual Machine
+(i.e., ``OS::Nova::Server`` resource) **MAY** boot from an image or
+**MAY** boot from a Cinder Volume.",Boot Options,MAY,,FALSE,,
+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.",Resource Property “name”,MUST NOT,static,TRUE,tests.test_environment_file_parameters,test_non_nova_server_name_parameter_doesnt_exist_in_environment_file
+,,,,static,TRUE,app_tests.test_app_config,test_default_output_format
+,,,,static,TRUE,app_tests.test_app_config,test_queues
+,,,,static,TRUE,tests.test_nova_servergroup_policies,test_nova_servergroup_policies
+,,,,static,TRUE,app_tests.test_app_config,test_input_formats
+,,,,static,TRUE,app_tests.test_app_config,test_category_names
+,,,,static,TRUE,app_tests.test_app_config,test_app_name
+,,,,static,TRUE,app_tests.test_app_config,test_get_category_when_other
+,,,,static,TRUE,app_tests.test_app_config,test_default_input_format
+,,,,static,TRUE,app_tests.test_app,test_app_starts
+,,,,static,TRUE,app_tests.test_app_config,test_polling_frequency
+,,,,static,TRUE,app_tests.test_app_config,test_missing_category_fields
+,,,,static,TRUE,app_tests.test_app_config,test_categories_names_length
+,,,,static,TRUE,app_tests.test_app_config,test_default_verbosity
+,,,,static,TRUE,app_tests.test_app_config,test_output_formats
+,,,,static,TRUE,tests.test_volume_resource_ids,test_volume_resource_ids
diff --git a/etc/requirements.txt b/etc/requirements.txt
index 29b5d98..92bad32 100644
--- a/etc/requirements.txt
+++ b/etc/requirements.txt
@@ -15,7 +15,7 @@
#############################################################################
tox
-Sphinx==1.6.7
+Sphinx==1.8.1
doc8
docutils
setuptools