[VVP] Resources not allowed in 2nd level templates 99/100399/1
authorLovett, Trevor <trevor.lovett@att.com>
Thu, 16 Jan 2020 21:47:59 +0000 (15:47 -0600)
committerLovett, Trevor <trevor.lovett@att.com>
Thu, 16 Jan 2020 21:47:59 +0000 (15:47 -0600)
Cleaned up nesting detection logic

Deleted test in Nova Server file as the nesting is
no longer related to Nova servers

Added check for resources in 2nd level
nested files to existing test.

Change-Id: I136efb786f67cf4c45fe4da3abaa3fcec024ba50
Issue-ID: VVP-357
Signed-off-by: Lovett, Trevor <trevor.lovett@att.com>
20 files changed:
ice_validator/heat_requirements.json
ice_validator/tests/fixtures/test_nesting_level/fail/bad-level0.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_level/fail/bad-level3.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_level/fail/level0.yaml [moved from ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_0.yaml with 96% similarity]
ice_validator/tests/fixtures/test_nesting_level/fail/level1.yaml [moved from ice_validator/tests/fixtures/test_nesting_level/fail/bad-level1.yaml with 94% similarity]
ice_validator/tests/fixtures/test_nesting_level/fail/level2.yaml [moved from ice_validator/tests/fixtures/test_nesting_level/fail/bad-level2.yaml with 96% similarity]
ice_validator/tests/fixtures/test_nesting_level/fail/level3.yaml [moved from ice_validator/tests/fixtures/test_nesting_level/pass/level3.yaml with 100% similarity]
ice_validator/tests/fixtures/test_nesting_level/pass/level1.yaml
ice_validator/tests/fixtures/test_nesting_level/pass/level2.yaml
ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_0.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_1.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_2.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_1.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_2.yaml [deleted file]
ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_3.yaml [deleted file]
ice_validator/tests/structures.py
ice_validator/tests/test_environment_file_parameters.py
ice_validator/tests/test_nesting_level.py
ice_validator/tests/test_nesting_nova_server.py [deleted file]
ice_validator/tests/utils/nested_files.py

index 35d97c4..cfec775 100644 (file)
@@ -1,5 +1,5 @@
 {
-    "created": "2019-12-03T06:33:16.165894", 
+    "created": "2020-01-11T06:35:28.164506", 
     "current_version": "el alto", 
     "project": "", 
     "versions": {
             "needs_amount": 813
         }, 
         "el alto": {
-            "created": "2019-12-03T06:33:16.165821", 
+            "created": "2020-01-11T06:35:28.164432", 
             "filters": {}, 
             "filters_amount": 0, 
             "needs": {
                     "validation_mode": ""
                 }, 
                 "R-00606": {
-                    "description": "A VNF **MAY** be connected to zero, one or more than one external\nnetwork.", 
+                    "description": "A VNF **MAY** be connected to zero, one or more than one ONAP external\nnetwork.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-01123": {
-                    "description": "The VNF or PNF package Manifest file **MUST** contain: VNF or PNF\npackage meta-data, a list of all artifacts (both internal and\nexternal) entry's including their respected URI's, as specified\nin ETSI GS NFV-SOL 004", 
+                    "description": "The VNF or PNF CSAR package Manifest file **MUST** contain: VNF or PNF\npackage meta-data, a list of all artifacts (both internal and\nexternal) entry's including their respected URI's, as specified\nin ETSI GS NFV-SOL 004", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF or PNF", 
+                    "target": "VNF or PNF CSAR PACKAGE", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "el alto", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "none"
                 }, 
                 "R-02164": {
-                    "description": "When a VNF's Heat Orchestration Template's Contrail resource\nhas a property that\nreferences an external network that requires the network's\nFully Qualified Domain Name (FQDN), the property parameter\n\n* **MUST** follow the format ``{network-role}_net_fqdn``\n* **MUST** be declared as type ``string``\n* **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's\n  Environment File", 
+                    "description": "When a VNF's Heat Orchestration Template's Contrail resource\nhas a property that\nreferences an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nthat requires the network's\nFully Qualified Domain Name (FQDN), the property parameter\n\n* **MUST** follow the format ``{network-role}_net_fqdn``\n* **MUST** be declared as type ``string``\n* **MUST NOT** be enumerated in the VNF's Heat Orchestration Template's\n  Environment File", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "External Networks", 
+                    "section_name": "ONAP External Networks", 
                     "sections": [
-                        "External Networks", 
+                        "ONAP External Networks", 
                         "Contrail Network Parameters", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-03595": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::SecurityGroup`` that\nis applicable to more than one ``{vm-type}`` and one external network Resource ID\n**SHOULD** use the naming convention\n\n* ``{network-role}_security_group``\n\nwhere\n\n* ``{network-role}`` is the network-role", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::Neutron::SecurityGroup`` that\nis applicable to more than one ``{vm-type}`` and one ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nthe ``OS::Neutron::SecurityGroup`` Resource ID\n**SHOULD** use the naming convention\n\n* ``{network-role}_security_group``\n\nwhere\n\n* ``{network-role}`` is the network-role of the ONAP external network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-04697": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an external network (per the\nONAP definition, see Requirement R-57424),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_ips``\n\n  where\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the external\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_ips``\n\n  where\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the ONAP external\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, External Networks", 
+                    "section_name": "VIP Assignment, ONAP External Networks", 
                     "sections": [
-                        "VIP Assignment, External Networks", 
+                        "VIP Assignment, ONAP External Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "validation_mode": ""
                 }, 
                 "R-08775": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::SecurityGroup``\nthat is applicable to one ``{vm-type}`` and more than one network (internal\nand/or external) Resource ID **SHOULD** use the naming convention\n\n* ``{vm-type}_security_group``\n\nwhere\n\n* ``{vm-type}`` is the vm-type", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::Neutron::SecurityGroup``\nthat is applicable to one ``{vm-type}`` and more than one network\n(ONAP internal network\nand/or ONAP external network), the ``OS::Neutron::SecurityGroup``\nResource ID **SHOULD** use the naming convention\n\n* ``{vm-type}_security_group``\n\nwhere\n\n* ``{vm-type}`` is the vm-type", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100010": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an external network (per the ONAP definition, see Requirement R-57424),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100030": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an external network (per the\nONAP definition, see Requirement R-57424),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_ips``\n\n  where\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the external\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_ips``\n\n  where\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the ONAP external\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100050": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an external network\n(per the\nONAP definition, see Requirement R-57424),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP external network\n(per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100070": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an external network (per the\nONAP definition, see Requirement R-57424),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the ONAP external\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100090": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is\ndefined as a ``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is\ndefined as a ``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100110": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the internal\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv4 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100130": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address to an\ninternal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address to an\nONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100150": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address to an\ninternal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the internal\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` is assigning an IP address to an\nONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv6 address is assigned\nusing the property ``instance_ip_address``\nand the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100170": {
-                    "description": "The VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp``\nproperty ``instance_ip_address``\nparameter associated with an external network, i.e.,\n\n * ``{vm-type}_{network-role}_ip_{index}``\n * ``{vm-type}_{network-role}_v6_ip_{index}``\n * ``{vm-type}_{network-role}_ips``\n * ``{vm-type}_{network-role}_v6_ips``\n\n\n**MUST NOT** be enumerated in the Heat Orchestration\nTemplate's Environment File.  ONAP provides the IP address\nassignments at orchestration time.", 
+                    "description": "The VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp``\nproperty ``instance_ip_address``\nparameter associated with an ONAP external network, i.e.,\n\n * ``{vm-type}_{network-role}_ip_{index}``\n * ``{vm-type}_{network-role}_v6_ip_{index}``\n * ``{vm-type}_{network-role}_ips``\n * ``{vm-type}_{network-role}_v6_ips``\n\n\n**MUST NOT** be enumerated in the Heat Orchestration\nTemplate's Environment File.  ONAP provides the IP address\nassignments at orchestration time.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-100180": {
-                    "description": "The VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp``\nproperty ``instance_ip_address``\nparameter associated with an internal network, i.e.,\n\n * ``{vm-type}_int_{network-role}_ip_{index}``\n * ``{vm-type}_int_{network-role}_v6_ip_{index}``\n * ``{vm-type}_int_{network-role}_ips``\n * ``{vm-type}_int_{network-role}_v6_ips``\n\n\n**MUST** be enumerated in the Heat Orchestration\nTemplate's Environment File and IP addresses **MUST** be\nassigned.", 
+                    "description": "The VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp``\nproperty ``instance_ip_address``\nparameter associated with an ONAP internal network, i.e.,\n\n * ``{vm-type}_int_{network-role}_ip_{index}``\n * ``{vm-type}_int_{network-role}_v6_ip_{index}``\n * ``{vm-type}_int_{network-role}_ips``\n * ``{vm-type}_int_{network-role}_v6_ips``\n\n\n**MUST** be enumerated in the Heat Orchestration\nTemplate's Environment File and IP addresses **MUST** be\nassigned.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100200": {
-                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an external network (per the ONAP definition, see\nRequirement R-57424),\nand an IPv4 address is being cloud assigned by OpenStack's DHCP Service\nand the external network IPv4 subnet is to be specified\nusing the property ``subnet_uuid``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the network.", 
+                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP external network (per the ONAP definition, see\nRequirement R-57424 and R-16968),\nand an IPv4 address is being cloud assigned by OpenStack's DHCP Service\nand the ONAP external network IPv4 subnet is to be specified\nusing the property ``subnet_uuid``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the ONAP external network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100220": {
-                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an external network (per the ONAP definition, see\nRequirement R-57424),\nand an IPv6 address is being cloud assigned by OpenStack's DHCP Service\nand the external network IPv6 subnet is to be specified\nusing the property ``subnet_uuid``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_v6_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the network.", 
+                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::ContrailV2::InstanceIp`` is assigning an IP address\nto an ONAP external network (per the ONAP definition, see\nRequirement R-57424 and R-16968),\nand an IPv6 address is being cloud assigned by OpenStack's DHCP Service\nand the ONAP external network IPv6 subnet is to be specified\nusing the property ``subnet_uuid``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_v6_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the ONAP external network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100240": {
-                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is\n    assigning an IP address\n    to an internal network (per the ONAP definition, see\n    Requirements R-52425 and R-46461)\n    that is created in the Base Module, AND\n  * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the internal network IPv4 subnet is to be specified\n    using the property ``subnet_uuid``,\n\nthe parameter **MUST** follow the naming convention\n\n  * ``int_{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the internal network\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
+                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is\n    assigning an IP address\n    to an ONAP internal network (per the ONAP definition, see\n    Requirements R-52425 and R-46461 and R-35666)\n    that is created in the Base Module, AND\n  * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the ONAP internal network IPv4 subnet is to be specified\n    using the property ``subnet_uuid``,\n\nthe parameter **MUST** follow the naming convention\n\n  * ``int_{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the ONAP internal network\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100260": {
-                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is\n    attaching\n    to an internal network (per the ONAP definition,\n    see Requirements R-52425 and R-46461)\n    that is created in the Base Module, AND\n  * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the internal network IPv6 subnet is to be specified\n    using the property ``subnet_uuid``,\n\nthe parameter **MUST** follow the naming convention\n``int_{network-role}_v6_subnet_id``,\nwhere ``{network-role}`` is the network role of the internal network.\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
+                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is\n    attaching\n    to an ONAP internal network (per the ONAP definition,\n    see Requirements R-52425 and R-46461 and R-35666)\n    that is created in the Base Module, AND\n  * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the ONAP internal network IPv6 subnet is to be specified\n    using the property ``subnet_uuid``,\n\nthe parameter **MUST** follow the naming convention\n\n  * ``int_{network-role}_v6_subnet_id``\n\nwhere ``{network-role}`` is the network role of the ONAP internal network.\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-100280": {
-                    "description": "If a VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface``\nis attaching to an external network (per the\nONAP definition, see Requirement R-57424), the\nmap property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameter\n**MUST NOT** be enumerated in the\nVNF's Heat Orchestration Template's Environment File.", 
+                    "description": "If a VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface``\nis attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968), the\nmap property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameter\n**MUST NOT** be enumerated in the\nVNF's Heat Orchestration Template's Environment File.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "External Networks", 
+                    "section_name": "ONAP External Networks", 
                     "sections": [
-                        "External Networks", 
+                        "ONAP External Networks", 
                         "OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-100310": {
-                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external\nnetwork (per the\nONAP definition, see Requirement R-57424),\nand an IPv4 Virtual IP (VIP)\nis required to be supported by the ONAP data model,\nthe map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nThe ONAP data model can only support one IPv4 VIP address.", 
+                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP external\nnetwork (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv4 Virtual IP (VIP)\nis required to be supported by the ONAP data model,\nthe map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nThe ONAP data model can only support one IPv4 VIP address.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "External Networks", 
+                    "section_name": "ONAP External Networks", 
                     "sections": [
-                        "External Networks", 
+                        "ONAP External Networks", 
                         "OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-100330": {
-                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external\nnetwork (per the\nONAP definition, see Requirement R-57424),\nand an IPv6 Virtual IP (VIP)\nis required to be supported by the ONAP data model,\nthe map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_v6_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nThe ONAP data model can only support one IPv6 VIP address.", 
+                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP\nexternal\nnetwork (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv6 Virtual IP (VIP)\nis required to be supported by the ONAP data model,\nthe map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_v6_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nThe ONAP data model can only support one IPv6 VIP address.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "External Networks", 
+                    "section_name": "ONAP External Networks", 
                     "sections": [
-                        "External Networks", 
+                        "ONAP External Networks", 
                         "OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-100350": {
-                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an\nexternal network\n(per the ONAP definition, see Requirement R-57424),\nand the IPv4 VIP address and/or IPv6 VIP address\nis **not** supported by the ONAP data model,\nthe map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\n* Parameter name **MAY** use any naming convention.  That is, there is no\n  ONAP mandatory parameter naming convention.\n* Parameter **MAY** be declared as type ``string`` or type\n``comma_delimited_list``.\n\nAnd the ``OS::ContrailV2::VirtualMachineInterface`` resource\n**MUST** contain resource-level ``metadata`` (not property-level).\n\nAnd the ``metadata`` format **MUST**  must contain the\nkey value ``aap_exempt`` with a list of all map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameters **not** supported by the ONAP data model.", 
+                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an\nONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nand the IPv4 VIP address and/or IPv6 VIP address\nis **not** supported by the ONAP data model,\nthe map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\n* Parameter name **MAY** use any naming convention.  That is, there is no\n  ONAP mandatory parameter naming convention.\n* Parameter **MAY** be declared as type ``string`` or type\n  ``comma_delimited_list``.\n\nAnd the ``OS::ContrailV2::VirtualMachineInterface`` resource\n**MUST** contain resource-level ``metadata`` (not property-level).\n\nAnd the ``metadata`` format **MUST**  must contain the\nkey value ``aap_exempt`` with a list of all map property\n\n``virtual_machine_interface_allowed_address_pairs``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,\n\n``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n\nparameters **not** supported by the ONAP data model.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "External Networks", 
+                    "section_name": "ONAP External Networks", 
                     "sections": [
-                        "External Networks", 
+                        "ONAP External Networks", 
                         "OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-100360": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an\ninternal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv4 Virtual IP (VIP)\naddress is assigned using the map property,\n``virtual_machine_interface_allowed_address_pairs,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n, the parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_ip``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file.\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an\nONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv4 Virtual IP (VIP)\naddress is assigned using the map property,\n``virtual_machine_interface_allowed_address_pairs,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n, the parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_ip``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file.\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "Internal Networks", 
+                    "section_name": "ONAP Internal Networks", 
                     "sections": [
-                        "Internal Networks", 
+                        "ONAP Internal Networks", 
                         "OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-100370": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an\ninternal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv6 Virtual IP (VIP)\naddress is assigned\nusing the map property,\n``virtual_machine_interface_allowed_address_pairs,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n, the parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_v6_ip``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` is attaching to an\nONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv6 Virtual IP (VIP)\naddress is assigned\nusing the map property,\n``virtual_machine_interface_allowed_address_pairs,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,\nvirtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``\n, the parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_v6_ip``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Contrail Resource Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "Internal Networks", 
+                    "section_name": "ONAP Internal Networks", 
                     "sections": [
-                        "Internal Networks", 
+                        "ONAP Internal Networks", 
                         "OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs", 
                         "Contrail Resource Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "validation_mode": "static"
                 }, 
                 "R-11168": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ID that is associated with\nan external network **MUST** include the ``{network-role}`` as part\nof the resource ID.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ID that is associated with\nan ONAP external network **MUST** include the ``{network-role}`` as part\nof the resource ID.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/{network-role}", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-14198": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::SecurityGroup`` that\nis applicable to one {vm-type} and one internal network Resource ID **SHOULD**\nuse the naming convention\n\n* ``{vm-type}_int_{network-role}_security_group``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::Neutron::SecurityGroup`` that\nis applicable to one {vm-type} and one ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461 and\nR-35666), the\n``OS::Neutron::SecurityGroup`` Resource ID **SHOULD**\nuse the naming convention\n\n* ``{vm-type}_int_{network-role}_security_group``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role of the ONAP internal network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                 "R-14447": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::ServiceTemplate``\nResource ID **MAY** use the naming convention\n\n* ``{vm-type}_RST_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``RST`` signifies that it is the Resource Service Template\n* ``{index}`` is the index.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::ServiceTemplate``\nResource ID **MAY** use the naming convention\n\n* ``{vm-type}_RST_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``RST`` signifies that it is the Resource Service Template\n* ``{index}`` is the index.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "validation_mode": ""
                 }, 
                 "R-15189": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Nova::ServerGroup`` Resource ID\n**MAY** use the naming convention\n\n* ``{vm-type}_RSG``\n\nor\n\n* ``{vm-type}_Server_Grp``\n\nor\n\n* ``{vm-type}_ServerGroup``\n\nor\n\n* ``{vm-type}_servergroup``", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Nova::ServerGroup``\nResource ID **MAY** use the naming convention\n\n* ``{vm-type}_RSG``\n\nor\n\n* ``{vm-type}_Server_Grp``\n\nor\n\n* ``{vm-type}_ServerGroup``\n\nor\n\n* ``{vm-type}_servergroup``", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "validation_mode": ""
                 }, 
                 "R-15287": {
-                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::Neutron::Port`` is attaching\nto an external network (per the ONAP definition, see\nRequirement R-57424),\nand an IPv6 address is being cloud assigned by OpenStack's DHCP Service\nand the external network IPv6 subnet is to be specified\nusing the property ``fixed_ips``\nmap property ``subnet``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_v6_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the network.", 
+                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::Neutron::Port`` is attaching\nto an ONAP external network (per the ONAP definition, see\nRequirement R-57424 and R-16968),\nand an IPv6 address is being cloud assigned by OpenStack's DHCP Service\nand the ONAP external network IPv6 subnet is to be specified\nusing the property ``fixed_ips``\nmap property ``subnet``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_v6_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the ONAP external network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-16241": {
-                    "description": "A VNF's internal network **MUST** have one subnet.\nA VNF's internal network **MAY** have more than one subnet.", 
+                    "description": "A VNF's ONAP internal network **MUST** have one subnet.\nA VNF's ONAP internal network **MAY** have more than one subnet.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-16968": {
-                    "description": "A VNF's Heat Orchestration Templates **MUST NOT** include heat\nresources to create external networks.", 
+                    "description": "A VNF's Heat Orchestration Templates **MUST NOT** include heat\nresources to create an ONAP external network.\n\nAn ONAP external network **MUST** be instantiated by using VID\nor by invoking SO directly.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-17334": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::SecurityGroup``\nthat is applicable to one ``{vm-type}`` and one external network Resource ID\n**SHOULD** use the naming convention\n\n* ``{vm-type}_{network-role}_security_group``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::Neutron::SecurityGroup``\nthat is applicable to one ``{vm-type}`` and one ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nthe ``OS::Neutron::SecurityGroup`` Resource ID\n**SHOULD** use the naming convention\n\n* ``{vm-type}_{network-role}_security_group``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role of the ONAP external network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-18001": {
-                    "description": "If the VNF's ports connected to a unique internal network\nand the port's IP addresses are statically assigned IP addresses,\nthe IPv4 addresses **MAY** be from different subnets and the\nIPv6 addresses **MAY** be from different subnets.", 
+                    "description": "If the VNF's ports connected to a unique ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666)\nand the port's IP addresses are statically assigned IP addresses,\nthe IPv4 addresses **MAY** be from different subnets and the\nIPv6 addresses **MAY** be from different subnets.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-20453": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is attaching to an external network Resource ID\n**MUST** use the naming convention\n\n* ``{vm-type}_{vm-type_index}_{network-role}_port_{port-index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{port_index}`` references the instance of the port on the ``{vm-type}``\n  attached to ``{network-role}`` network.  The\n  ``{port_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new port is defined on the instance of the ``{vm-type}`` attached to\n  ``{network-role}`` network.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is attaching to an ONAP external network (per the ONAP definition,\nsee Requirement R-57424 and R-16968), the ``OS::Neutron::Port``\nResource ID\n**MUST** use the naming convention\n\n* ``{vm-type}_{vm-type_index}_{network-role}_port_{port-index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP external network\n  that the port is attached to\n* ``{port_index}`` references the instance of the port on the ``{vm-type}``\n  attached to ``{network-role}`` network.  The\n  ``{port_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new port is defined on the instance of the ``{vm-type}`` attached to\n  ``{network-role}`` network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF", 
+                    "target": "VNF CSAR PACKAGE", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                 "R-21330": {
-                    "description": "A VNF's Heat Orchestration Template's Resource property parameter that is\nassociated with external network **MUST** include the ``{network-role}``\nas part of the parameter name.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource property parameter that is\nassociated with an ONAP\nexternal network **MUST** include the ``{network-role}``\nas part of the parameter name.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/{network-role}", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-221914": {
-                    "description": "The VNF or PNF package **MUST** contain a a human-readable change log text\nfile. The Change Log file keeps a history describing any changes in the VNF\nor PNF package. The Change Log file is kept up to date continuously from\nthe creation of the CSAR package.", 
+                    "description": "The VNF or PNF CSAR package **MUST** contain a human-readable change log text\nfile. The Change Log file keeps a history describing any changes in the VNF\nor PNF package. The Change Log file is kept up to date continuously from\nthe creation of the CSAR package.", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id_complete": "R-221914", 
                     "id_parent": "R-221914", 
                     "impacts": "", 
-                    "introduced": "dublin", 
+                    "introduced": "frankfurt", 
                     "is_need": true, 
                     "is_part": false, 
                     "keyword": "MUST", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF or PNF", 
+                    "target": "VNF or PNF CSAR PACKAGE", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "validation_mode": ""
                 }, 
                 "R-22688": {
-                    "description": "When a VNF's Heat Orchestration Template creates an internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461\nand R-35666) and the internal network needs to be shared between modules\nwithin a VNF,  the internal network **MUST** be created either in the\n\n* the base module\n* a nested YAML file invoked by the base module\n\nand the base module **MUST** contain an output parameter that provides\neither the network UUID or network name.\n\n* If the network UUID value is used to reference the network, the output\n  parameter name in the base module **MUST** follow the naming convention\n  ``int_{network-role}_net_id``\n* If the network name in is used to reference the network, the output\n  parameter name in the base template **MUST** follow the naming convention\n  ``int_{network-role}_net_name``\n\n``{network-role}`` **MUST** be the network-role of the internal network\ncreated in the Base Module.\n\nThe Base Module Output Parameter MUST be declared in the ``parameters:``\nsection of the Incremental Module(s) where the ``OS::Neutron::Port``\nresource(s) is attaching to the internal network.", 
+                    "description": "When a VNF's Heat Orchestration Template creates an ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461\nand R-35666) and the ONAP internal network needs to be shared between\nmodules within a VNF, the ONAP\ninternal network **MUST** be created either in the\n\n* the base module\n* a nested YAML file invoked by the base module\n\nand the base module **MUST** contain an output parameter that provides\neither the network UUID or network name.\n\n* If the network UUID value is used to reference the network, the output\n  parameter name in the base module **MUST** follow the naming convention\n  ``int_{network-role}_net_id``\n* If the network name in is used to reference the network, the output\n  parameter name in the base template **MUST** follow the naming convention\n  ``int_{network-role}_net_name``\n\nThe ``{network-role}`` **MUST** be the network-role of the ONAP\ninternal network created in the Base Module.\n\nThe Base Module Output Parameter MUST be declared in the ``parameters:``\nsection of the Incremental Module(s) where the ``OS::Neutron::Port``\nresource(s) is attaching to the ONAP internal network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-23503": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an external network (per the\nONAP definition, see Requirement R-57424),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the ONAP external\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
+                "R-23663": {
+                    "description": "A VNF's Heat Orchestration template's base module\n**MAY** (or **MAY NOT**)\ncontain the section ``resources:``.", 
+                    "docname": "Chapter5/Heat/ONAP Heat Orchestration Template Format", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-23663", 
+                    "id_complete": "R-23663", 
+                    "id_parent": "R-23663", 
+                    "impacts": "", 
+                    "introduced": "frankfurt", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MAY", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "resources", 
+                    "sections": [
+                        "resources", 
+                        "Heat Orchestration Template Structure", 
+                        "ONAP Heat Orchestration Template Format"
+                    ], 
+                    "status": null, 
+                    "tags": [], 
+                    "target": "VNF", 
+                    "test": "", 
+                    "test_case": "", 
+                    "test_file": "", 
+                    "title": "", 
+                    "title_from_content": "", 
+                    "type": "req", 
+                    "type_name": "Requirement", 
+                    "updated": "", 
+                    "validated_by": "", 
+                    "validation_mode": "none"
+                }, 
                 "R-23664": {
-                    "description": "A VNF's Heat Orchestration template's base module, incremental\nmodule, and volume module **MUST**\ncontain the section ``resources:``.", 
+                    "description": "A VNF's Heat Orchestration template's incremental\nmodule and volume module **MUST**\ncontain the section ``resources:``.", 
                     "docname": "Chapter5/Heat/ONAP Heat Orchestration Template Format", 
                     "full_title": "", 
                     "hide_links": "", 
                     "validation_mode": ""
                 }, 
                 "R-24997": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair`` applies to\none ``{vm-type}`` Resource ID **SHOULD** use the naming convention\n\n* ``{vm-type}_keypair_{index}``\n\nwhere\n\n* ``{network-role}`` is the network-role\n* ``{index}`` is the ``{index}`` of the keypair.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair``\napplies to one ``{vm-type}``, the ``OS::Nova::Keypair``\nResource ID **SHOULD** use the naming convention\n\n* ``{vm-type}_keypair_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type of the ``OS::Nova::Server``\n* ``{index}`` is the ``{index}`` of the keypair.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "none"
                 }, 
                 "R-25720": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Net``\nResource ID **MUST** use the naming convention\n\n* ``int_{network-role}_network``\n\nVNF Heat Orchestration Templates can only create internal networks.\nThere is no ``{index}`` after ``{network-role}`` because ``{network-role}``\n**MUST** be unique in the scope of the VNF's\nHeat Orchestration Template.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Net``\nResource ID **MUST** use the naming convention\n\n* ``int_{network-role}_network``\n\nVNF Heat Orchestration Templates can only create ONAP internal networks\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666).\nThere is no ``{index}`` after ``{network-role}`` because ``{network-role}``\n**MUST** be unique in the scope of the VNF's\nHeat Orchestration Template.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "none"
                 }, 
                 "R-26351": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is attaching to an internal network Resource ID **MUST**\nuse the naming convention\n\n* ``{vm-type}_{vm-type_index}_int_{network-role}_port_{port-index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{port_index}`` references the instance of the port on the ``{vm-type}``\n  attached to ``{network-role}`` network.  The\n  ``{port_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new port is defined on the instance of the ``{vm-type}`` attached to\n  ``{network-role}`` network.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is attaching to an ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nthe ``OS::Neutron::Port`` Resource ID **MUST**\nuse the naming convention\n\n* ``{vm-type}_{vm-type_index}_int_{network-role}_port_{port-index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP internal network\n  that the port is attached to\n* ``{port_index}`` references the instance of the port on the ``{vm-type}``\n  attached to ``{network-role}`` network.  The\n  ``{port_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new port is defined on the instance of the ``{vm-type}`` attached to\n  ``{network-role}`` network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-27469": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is creating a *Reserve Port* with an IPv4 address Resource ID\n**SHOULD** use the naming convention\n\n* ``reserve_port_{vm-type}_{network-role}_floating_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{index}`` is the instance of the IPv4 *Reserve Port*\n  for the vm-type attached to the network of ``{network-role}``.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is creating a *Reserve Port* with an IPv4 address, the\n``OS::Neutron::Port`` Resource ID\n**SHOULD** use the naming convention\n\n* ``reserve_port_{vm-type}_{network-role}_floating_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role of the ONAP external network\n  that the port is attached to\n* ``{index}`` is the instance of the IPv4 *Reserve Port*\n  for the vm-type attached to the network of ``{network-role}``.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-27818": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-27970": {
-                    "description": "When a VNF's Heat Orchestration Template's resource is associated with\nmore than one ``{vm-type}`` and/or more than one internal and/or external\nnetwork, the Resource ID **MAY** contain the term ``shared`` and/or **MAY**\ncontain text that identifies the VNF.", 
+                    "description": "When a VNF's Heat Orchestration Template's resource is associated with\nmore than one ``{vm-type}`` and/or more than one ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666)\nand/or ONAP external network (per the ONAP definition, see Requirement\nR-57424 and R-16968), the Resource ID **MAY** contain the term\n``shared`` and/or **MAY**\ncontain text that identifies the VNF.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "validation_mode": ""
                 }, 
                 "R-29765": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the internal\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-30005": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::SecurityGroup`` that\nis applicable to more than one ``{vm-type}`` and more than one network\n(internal and/or external) Resource ID **MAY**\nuse the naming convention\n\n* ``shared_security_group``\n\nor\n\n* ``{vnf-type}_security_group``\n\nwhere\n\n* ``{vnf-type}`` describes the VNF", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::Neutron::SecurityGroup`` that\nis applicable to more than one ``{vm-type}`` and more than one network\n(internal and/or external), the ``OS::Neutron::SecurityGroup`` Resource ID\n**MAY**\nuse the naming convention\n\n* ``shared_security_group``\n\nor\n\n* ``{vnf-type}_security_group``\n\nwhere\n\n* ``{vnf-type}`` describes the VNF", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-30753": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::NetworkIpam``\nResource ID\n**MUST**\ncontain the ``{network-role}``.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::NetworkIpam``\nResource ID\n**MUST**\ncontain the ``{network-role}`` of the ONAP internal network (per the ONAP\ndefinition, see Requirements R-52425 and R-46461 and R-35666) that the\nresource is associated with.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-35666": {
-                    "description": "If a VNF has an internal network, the VNF Heat Orchestration Template\n**MUST** include the heat resources to create the internal network.\n\nA VNF's Internal Network is created using Neutron Heat Resources\n(i.e., ``OS::Neutron::Net``, ``OS::Neutron::Subnet``) and/or\nContrail Heat Resources (i.e., ``OS::ContrailV2::VirtualNetwork``,\n``ContrailV2::NetworkIpam``).", 
+                    "description": "If a VNF has an ONAP internal network, the VNF's Heat Orchestration\nTemplate **MUST** include the heat resources to create the\nONAP internal network.\n\nA VNF's ONAP internal network is created using Neutron Heat Resources\n(e.g., ``OS::Neutron::Net``, ``OS::Neutron::Subnet``,\n``OS::Neutron::ProviderNet``) and/or\nContrail Heat Resources (e.g., ``OS::ContrailV2::VirtualNetwork``,\n``OS::ContrailV2::NetworkIpam``).", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-35735": {
-                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an external network\n(per the ONAP definition, see Requirement R-57424),\nand the IPv6 VIP is required to be supported by the ONAP data model,\nthe property ``allowed_address_pairs`` map property ``ip_address``\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_v6_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nAs noted in the introduction to this section, the ONAP data model\ncan only support one IPv6 VIP address.", 
+                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nand the IPv6 VIP is required to be supported by the ONAP data model,\nthe property ``allowed_address_pairs`` map property ``ip_address``\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_v6_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nAs noted in the introduction to this section, the ONAP data model\ncan only support one IPv6 VIP address.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, External Networks", 
+                    "section_name": "VIP Assignment, ONAP External Networks", 
                     "sections": [
-                        "VIP Assignment, External Networks", 
+                        "VIP Assignment, ONAP External Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-40820": {
-                    "description": "The VNF or PNF TOSCA PACKAGE **MUST** enumerate all of the open source\nlicenses their VNF(s) incorporate. CSAR License directory as per ETSI\nSOL004.\n\nfor example ROOT\\\\Licenses\\\\ **License_term.txt**", 
+                    "description": "The VNF or PNF CSAR PACKAGE **MUST** enumerate all of the open source\nlicenses their VNF(s) incorporate. CSAR License directory as per ETSI\nSOL004.\n\nfor example ROOT\\\\Licenses\\\\ **License_term.txt**", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF or PNF TOSCA PACKAGE", 
+                    "target": "VNF or PNF CSAR PACKAGE", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "none"
                 }, 
                 "R-40971": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an external network (per the\nONAP definition, see Requirement R-57424),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-41492": {
-                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an external network\n(per the ONAP definition, see Requirement R-57424),\nand the IPv4 VIP is required to be supported by the ONAP data model,\nthe property ``allowed_address_pairs`` map property ``ip_address``\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nAs noted in the introduction to this section, the ONAP data model\ncan only support one IPv4 VIP address.", 
+                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nand the IPv4 VIP is required to be supported by the ONAP data model,\nthe property ``allowed_address_pairs`` map property ``ip_address``\nparameter name **MUST** follow the naming convention\n\n* ``{vm-type}_{network-role}_floating_ip``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n\nAnd the parameter **MUST** be declared as type ``string``.\n\nAs noted in the introduction to this section, the ONAP data model\ncan only support one IPv4 VIP address.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, External Networks", 
+                    "section_name": "VIP Assignment, ONAP External Networks", 
                     "sections": [
-                        "VIP Assignment, External Networks", 
+                        "VIP Assignment, ONAP External Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-41493": {
-                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an external network\n(per the ONAP definition, see Requirement R-57424),\nand the IPv4 VIP address and/or IPv6 VIP address\nis **not** supported by the ONAP data model,\nthe property ``allowed_address_pairs`` map property ``ip_address``\n\n* Parameter name **MAY** use any naming convention.  That is, there is no\n  ONAP mandatory parameter naming convention.\n* Parameter **MAY** be declared as type ``string`` or type\n``comma_delimited_list``.\n\nAnd the ``OS::Neutron::Port`` resource **MUST** contain\nresource-level ``metadata`` (not property-level).\n\nAnd the ``metadata`` format **MUST**  must contain the\nkey value ``aap_exempt`` with a list of all\n``allowed_address_pairs`` map property ``ip_address`` parameters\n**not** supported by the ONAP data model.", 
+                    "description": "When the VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968),\nand the IPv4 VIP address and/or IPv6 VIP address\nis **not** supported by the ONAP data model,\nthe property ``allowed_address_pairs`` map property ``ip_address``\n\n* Parameter name **MAY** use any naming convention.  That is, there is no\n  ONAP mandatory parameter naming convention.\n* Parameter **MAY** be declared as type ``string`` or type\n``comma_delimited_list``.\n\nAnd the ``OS::Neutron::Port`` resource **MUST** contain\nresource-level ``metadata`` (not property-level).\n\nAnd the ``metadata`` format **MUST**  must contain the\nkey value ``aap_exempt`` with a list of all\n``allowed_address_pairs`` map property ``ip_address`` parameters\n**not** supported by the ONAP data model.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, External Networks", 
+                    "section_name": "VIP Assignment, ONAP External Networks", 
                     "sections": [
-                        "VIP Assignment, External Networks", 
+                        "VIP Assignment, ONAP External Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-46128": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv6 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an external network\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_v6_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``v6_IP`` signifies that an IPv6 address is being configured\n* ``{index}`` references the instance of the IPv6 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv6 address is configured on the\n  virtual machine interface.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv6 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an ONAP external network (per the ONAP definition,\nsee Requirement R-57424 and R-16968)\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_v6_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP external network\n  that the port is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``v6_IP`` signifies that an IPv6 address is being configured\n* ``{index}`` references the instance of the IPv6 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv6 address is configured on the\n  virtual machine interface.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-46461": {
-                    "description": "A VNF's port connected to an internal network **MUST NOT** use the port\nfor the purpose of reaching VMs in another VNF and/or an\nexternal gateway and/or\nexternal router.", 
+                    "description": "A VNF's port connected to an ONAP internal network **MUST NOT**\nuse the port\nfor the purpose of reaching VMs in another VNF and/or an\nexternal gateway and/or\nexternal router.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-48880": {
-                    "description": "If a VNF's Port is attached to an external network and the port's\nIP addresses are assigned by ONAP's SDN-Controller,\nthe ``OS::Neutron::Port`` Resource's\n\n* property ``fixed_ips`` map property ``ip_address`` **MUST** be used\n* property ``fixed_ips`` map property ``subnet``\n  **MUST NOT** be used", 
+                    "description": "If a VNF's Port is attached to an ONAP external network (per the ONAP\ndefinition, see Requirement R-57424 and R-16968) and the port's\nIP addresses are assigned by ONAP's SDN-Controller,\nthe ``OS::Neutron::Port`` Resource's\n\n* property ``fixed_ips`` map property ``ip_address`` **MUST** be used\n* property ``fixed_ips`` map property ``subnet``\n  **MUST NOT** be used", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-50468": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` Resource ID\nthat is attaching to an internal network\n**MUST** use the naming convention\n\n* ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port (i.e. virtual machine interface) is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` Resource ID\nthat is attaching to an ONAP internal network (per the ONAP definition, see\nRequirements R-52425 and R-46461 and R-35666)\n**MUST** use the naming convention\n\n* ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP internal network\n  that the port (i.e. virtual machine interface) is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-506221": {
-                    "description": "The VNF or PNF TOSCA CSAR file **MUST** be a zip file with .csar extension.", 
+                    "description": "The VNF or PNF CSAR file **MUST** be a zip file with .csar extension.", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Structure and Format", 
+                    "section_name": "VNF or PNF Package Structure and Format", 
                     "sections": [
-                        "VNF Package Structure and Format", 
+                        "VNF or PNF Package Structure and Format", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Structure and Format", 
+                    "section_name": "VNF or PNF Package Structure and Format", 
                     "sections": [
-                        "VNF Package Structure and Format", 
+                        "VNF or PNF Package Structure and Format", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF or PNF", 
+                    "target": "VNF or PNF CSAR PACKAGE", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-52425": {
-                    "description": "A VNF's port connected to an internal network **MUST**\nuse the port for the purpose of reaching VMs in the same VNF.", 
+                    "description": "A VNF's port connected to an ONAP internal network **MUST**\nuse the port for the purpose of reaching VMs in the same VNF.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-53310": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv4 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an external network\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network that the\n  virtual machine interface is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``IP`` signifies that an IPv4 address is being configured\n* ``{index}`` references the instance of the IPv4 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv4 address is configured on the\n  virtual machine interface.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv4 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an ONAP external network (per the ONAP definition,\nsee Requirement R-57424 and R-16968)\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP external\n  network that the virtual machine interface is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``IP`` signifies that an IPv4 address is being configured\n* ``{index}`` references the instance of the IPv4 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv4 address is configured on the\n  virtual machine interface.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
+                "R-55307": {
+                    "description": "A VNF's Heat Orchestration Template's parameter ``vf_module_index``\n**MUST NOT** be used for indexing an:\n\n- ``OS::Nova::Server`` property ``name`` parameter (when defined as a\n  ``comma_delimited_list``).\n- ``OS::Neutron::Port`` property ``fixed_ips`` map property ``ip_address``\n  parameter (when defined as a ``comma_delimited_list``) when the port is\n  attaching to an ONAP external network (per the ONAP\n  definition, see Requirement R-57424 and R-16968)", 
+                    "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Nova Metadata Parameters", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-55307", 
+                    "id_complete": "R-55307", 
+                    "id_parent": "R-55307", 
+                    "impacts": "", 
+                    "introduced": "frankfurt", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MUST NOT", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "vf_module_index", 
+                    "sections": [
+                        "vf_module_index", 
+                        "Resource: OS::Nova::Server Metadata Parameters"
+                    ], 
+                    "status": null, 
+                    "tags": [], 
+                    "target": "VNF", 
+                    "test": "", 
+                    "test_case": "", 
+                    "test_file": "", 
+                    "title": "", 
+                    "title_from_content": "", 
+                    "type": "req", 
+                    "type_name": "Requirement", 
+                    "updated": "", 
+                    "validated_by": "", 
+                    "validation_mode": "static"
+                }, 
                 "R-55345": {
                     "description": "The VNF **SHOULD** use techniques such as \"lazy loading\" when\ninitialization includes loading catalogues and/or lists which can grow\nover time, so that the VNF startup time does not grow at a rate\nproportional to that of the list.", 
                     "docname": "Chapter4/Resiliency", 
                     "validation_mode": "in_service"
                 }, 
                 "R-57019": {
-                    "description": "The PNF TOSCA CSAR PACKAGE Manifest file **MUST** start with the PNF\npackage metadata in the form of a name-value pairs. Each pair shall appear\non a different line. The name is specified as following:\n\n  - pnfd_provider\n\n  - pnfd_name\n\n  - pnfd_release_date_time\n\n  - pnfd_archive_version", 
+                    "description": "The PNF CSAR PACKAGE Manifest file **MUST** start with the PNF\npackage metadata in the form of a name-value pairs. Each pair shall appear\non a different line. The name is specified as following:\n\n  - pnfd_provider\n\n  - pnfd_name\n\n  - pnfd_release_date_time\n\n  - pnfd_archive_version", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-57424": {
-                    "description": "A VNF's port connected to an external network **MUST**\nuse the port for the purpose of reaching\nVMs in another VNF and/or an external gateway and/or external router.\nA VNF's port connected to an external network **MAY**\nuse the port for the purpose of reaching VMs in the same VNF.", 
+                    "description": "A VNF's port connected to an ONAP external network **MAY**\nuse the port for the purpose of\n\n- Connecting a VM in the VNF to VMs in another VNF and/or\n- Connecting a VM in the VNF to an external gateway or external router\n  and/or\n- Connecting a VM in the VNF to other VMs in the same VNF", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "is_part": false, 
-                    "keyword": "MUST", 
+                    "keyword": "MAY", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-59434": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Subnet``\nResource ID **SHOULD** use the naming convention\n\n* ``int_{network-role}_subnet_{index}``\n\nwhere\n\n* ``{network-role}`` is the network-role\n* ``{index}`` is the ``{index}`` of the subnet of the network.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Subnet``\nResource ID **SHOULD** use the naming convention\n\n* ``int_{network-role}_subnet_{index}``\n\nwhere\n\n* ``{network-role}`` is the network-role of the ONAP internal network\n  (per the ONAP definition, see Requirements R-52425 and R-46461 and\n  R-35666).\n* ``{index}`` is the ``{index}`` of the subnet of the ONAP internal network.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-62187": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv4 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an internal network\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``IP`` signifies that an IPv4 address is being configured\n* ``{index}`` references the instance of the IPv4 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv4 address is configured on the\n  virtual machine interface.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv4 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an ONAP internal network (per the ONAP definition, see\nRequirements R-52425 and R-46461 and R-35666)\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP internal network\n  that the port is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``IP`` signifies that an IPv4 address is being configured\n* ``{index}`` references the instance of the IPv4 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv4 address is configured on the\n  virtual machine interface.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-62590": {
-                    "description": "The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nproperty ``fixed_ips``\nmap property ``ip_address``\nparameter associated with an external network, i.e.,\n\n * ``{vm-type}_{network-role}_ip_{index}``\n * ``{vm-type}_{network-role}_v6_ip_{index}``\n * ``{vm-type}_{network-role}_ips``\n * ``{vm-type}_{network-role}_v6_ips``\n\n\n**MUST NOT** be enumerated in the Heat Orchestration\nTemplate's Environment File.  ONAP provides the IP address\nassignments at orchestration time.", 
+                    "description": "The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nproperty ``fixed_ips``\nmap property ``ip_address``\nparameter associated with an ONAP external network, i.e.,\n\n * ``{vm-type}_{network-role}_ip_{index}``\n * ``{vm-type}_{network-role}_v6_ip_{index}``\n * ``{vm-type}_{network-role}_ips``\n * ``{vm-type}_{network-role}_v6_ips``\n\n\n**MUST NOT** be enumerated in the Heat Orchestration\nTemplate's Environment File.  ONAP provides the IP address\nassignments at orchestration time.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-62802": {
-                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::Neutron::Port`` is attaching\nto an external network (per the ONAP definition, see\nRequirement R-57424),\nand an IPv4 address is being cloud assigned by OpenStack's DHCP Service\nand the external network IPv4 subnet is to be specified\nusing the property ``fixed_ips``\nmap property ``subnet``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the network.", 
+                    "description": "When the VNF's Heat Orchestration Template's\nresource ``OS::Neutron::Port`` is attaching\nto an ONAP external network (per the ONAP definition, see\nRequirement R-57424 and R-16968),\nand an IPv4 address is being cloud assigned by OpenStack's DHCP Service\nand the ONAP external network IPv4 subnet is to be specified\nusing the property ``fixed_ips``\nmap property ``subnet``, the parameter\n**MUST** follow the naming convention\n\n  * ``{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the ONAP external network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-62983": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an external network (per the\nONAP definition, see Requirement R-57424), the\n``network`` parameter name **MUST**\n\n  * follow the naming convention ``{network-role}_net_id`` if the Neutron\n    network UUID value is used to reference the network\n  * follow the naming convention ``{network-role}_net_name`` if the\n    OpenStack network name is used to reference the network.\n\nwhere ``{network-role}`` is the network-role of the external network\nand a ``get_param`` **MUST** be used as the intrinsic function.", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968), the\n``network`` parameter name **MUST**\n\n  * follow the naming convention ``{network-role}_net_id`` if the Neutron\n    network UUID value is used to reference the network\n  * follow the naming convention ``{network-role}_net_name`` if the\n    OpenStack network name is used to reference the network.\n\nwhere ``{network-role}`` is the network-role of the ONAP external network\nand a ``get_param`` **MUST** be used as the intrinsic function.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-63956": {
-                    "description": "If the VNF's ports connected to a unique external network\nand the port's IP addresses are ONAP SDN-C assigned IP addresses,\nthe IPv4 addresses **MAY** be from different subnets and the IPv6\naddresses **MAY** be from different subnets.", 
+                    "description": "If the VNF's ports connected to a unique ONAP external network\n(per the ONAP definition, see Requirement R-57424 and R-16968)\nand the port's IP addresses are ONAP SDN-C assigned IP addresses,\nthe IPv4 addresses **MAY** be from different subnets and the IPv6\naddresses **MAY** be from different subnets.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-65516": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair`` applies to\nall Virtual Machines in the VNF, the Resource ID **SHOULD** use the naming\nconvention\n\n* ``{vnf-type}_keypair``\n\nwhere\n\n* ``{vnf-type}`` describes the VNF", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair``\napplies to all Virtual Machines in the VNF, the\n``OS::Nova::Keypair`` Resource ID **SHOULD** use the naming\nconvention\n\n* ``{vnf-type}_keypair``\n\nwhere\n\n* ``{vnf-type}`` describes the VNF", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-67793": {
-                    "description": "When a VNF's Heat Orchestration Template's resource is associated\nwith more than one ``{vm-type}`` and/or more than one internal and/or\nexternal network, the Resource ID **MUST NOT** contain the ``{vm-type}``\nand/or ``{network-role}``/``int_{network-role}``. It also should contain the\nterm ``shared`` and/or contain text that identifies the VNF.", 
+                    "description": "When a VNF's Heat Orchestration Template's resource is associated\nwith more than one ``{vm-type}`` and/or more than one ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666)\nand/or\nONAP external network (per the ONAP definition, see Requirement R-57424\nand R-16968), the Resource ID **MUST NOT** contain the\n``{vm-type}`` and/or ``{network-role}``/``int_{network-role}``.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-68520": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is creating a *Reserve Port* with an IPv6 address Resource ID\n**SHOULD** use the naming convention\n\n* ``reserve_port_{vm-type}_{network-role}_floating_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{index}`` is the instance of the IPv6 *Reserve Port*\n  for the vm-type attached to the network of ``{network-role}``.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nthat is creating a *Reserve Port* with an IPv6 address, the\n``OS::Neutron::Port`` Resource ID\n**SHOULD** use the naming convention\n\n* ``reserve_port_{vm-type}_{network-role}_floating_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{network-role}`` is the network-role of the ONAP external network\n  that the port is attached to\n* ``{index}`` is the instance of the IPv6 *Reserve Port*\n  for the vm-type attached to the network of ``{network-role}``.\n  The ``{index}`` starts at zero and increments by one\n  (as described in R-11690).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-69014": {
-                    "description": "When a VNF's port connects to an internal network or external network,\na network role, referred to\nas the ``{network-role}`` **MUST** be assigned to the network for\nuse in the VNF's Heat Orchestration Template.  The ``{network-role}``\nis used in the VNF's Heat Orchestration Template resource IDs\nand resource property parameter names.", 
+                    "description": "When a VNF's port connects to an ONAP internal network or ONAP\nexternal network,\na network role, referred to\nas the ``{network-role}`` **MUST** be assigned to the network for\nuse in the VNF's Heat Orchestration Template.  The ``{network-role}``\nis used in the VNF's Heat Orchestration Template's resource IDs\nand resource property parameter names.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/{network-role}", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-70964": {
-                    "description": "If a VNF's Port is attached to an internal network and the port's\nIP addresses are statically assigned by the VNF's Heat Orchestration\\\nTemplate (i.e., enumerated in the Heat Orchestration Template's\nenvironment file), the ``OS::Neutron::Port`` Resource's\n\n* property ``fixed_ips`` map property ``ip_address`` **MUST** be used\n* property ``fixed_ips`` map property ``subnet``\n  **MUST NOT** be used", 
+                    "description": "If a VNF's Port is attached to an ONAP internal network\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666)\nand the port's\nIP addresses are statically assigned by the VNF's Heat Orchestration\nTemplate (i.e., enumerated in the Heat Orchestration Template's\nenvironment file), the ``OS::Neutron::Port`` Resource's\n\n* property ``fixed_ips`` map property ``ip_address`` **MUST** be used\n* property ``fixed_ips`` map property ``subnet``\n  **MUST NOT** be used", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-71577": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an external network (per the\nONAP definition, see Requirement R-57424),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968),\nand an IPv6 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a string,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_{network-role}_v6_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP external network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-717227": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv4 Virtual IP (VIP)\naddress is assigned using the property ``allowed_address_pairs``\nmap property ``ip_address``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_ip``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file.\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv4 Virtual IP (VIP)\naddress is assigned using the property ``allowed_address_pairs``\nmap property ``ip_address``,\nthe parameter name **MUST** follow the\nnaming convention\n\n- ``{vm-type}_int_{network-role}_floating_ip``\n\nwhere\n\n- ``{vm-type}`` is the {vm-type} associated with the\n  OS::Nova::Server\n- ``{network-role}`` is the {network-role} of the ONAP internal\n  network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file.\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n- ``{vm-type}_int_{network-role}_floating_ips``\n\nwhere\n\n- ``{vm-type}`` is the {vm-type} associated with the\n  OS::Nova::Server\n- ``{network-role}`` is the {network-role} of the ONAP internal\n  network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, Internal Networks", 
+                    "section_name": "VIP Assignment, ONAP Internal Networks", 
                     "sections": [
-                        "VIP Assignment, Internal Networks", 
+                        "VIP Assignment, ONAP Internal Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-73213": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::Neutron::SecurityGroup`` that\nis applicable to more than one ``{vm-type}`` and one internal network Resource ID\n**SHOULD** use the naming convention\n\n* ``int_{network-role}_security_group``\n\nwhere\n\n* ``{network-role}`` is the network-role", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::Neutron::SecurityGroup`` that\nis applicable to more than one ``{vm-type}`` and one ONAP internal network,\n(per the ONAP definition, see Requirements R-52425 and R-46461 and\nR-35666), the ``OS::Neutron::SecurityGroup`` Resource ID\n**SHOULD** use the naming convention\n\n* ``int_{network-role}_security_group``\n\nwhere\n\n* ``{network-role}`` is the network-role of the ONAP internal network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-76160": {
-                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::Neutron::Port`` in an Incremental Module is attaching\n    to an internal network (per the ONAP definition, see Requirements\n    R-52425 and R-46461)\n    that is created in the Base Module, AND\n  * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the internal network IPv6 subnet is to be specified\n    using the property ``fixed_ips`` map property ``subnet``,\n\nthe parameter **MUST** follow the naming convention\n``int_{network-role}_v6_subnet_id``,\nwhere ``{network-role}`` is the network role of the internal network.\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
+                    "description": "When\n\n* the VNF's Heat Orchestration Template's\n  resource ``OS::Neutron::Port`` in an Incremental Module is attaching\n  to an ONAP internal network (per the ONAP definition, see Requirements\n  R-52425 and R-46461 and R-35666)\n  that is created in the Base Module, AND\n* an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND\n* the ONAP internal network IPv6 subnet is to be specified\n  using the property ``fixed_ips`` map property ``subnet``,\n\nthe parameter **MUST** follow the naming convention\n\n* ``int_{network-role}_v6_subnet_id``\n\nwhere ``{network-role}`` is the network role of the ONAP internal network.\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, External Networks", 
+                    "section_name": "VIP Assignment, ONAP External Networks", 
                     "sections": [
-                        "VIP Assignment, External Networks", 
+                        "VIP Assignment, ONAP External Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "validation_mode": ""
                 }, 
                 "R-78380": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is\ndefined as a ``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is\ndefined as a ``string``,\nthe parameter name **MUST** follow the\nnaming convention\n\n* ``{vm-type}_int_{network-role}_ip_{index}``\n\nwhere\n\n* ``{vm-type}`` is the {vm-type} associated with the\n  ``OS::Nova::Server``\n* ``{network-role}`` is the {network-role} of the ONAP internal network\n* ``{index}`` is a numeric value that **MUST** start at zero in a\n  VNF's Heat Orchestration Template and **MUST** increment by one", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-795126": {
-                    "description": "The VNF TOSCA CSAR package Manifest file **MUST** start with the VNF\npackage metadata in the form of a name-value pairs. Each pair shall appear\non a different line. The name is specified as following:\n\n  - vnf_provider_id\n\n  - vnf_product_name\n\n  - vnf_release_date_time\n\n  - vnf_package_version", 
+                    "description": "The VNF CSAR package Manifest file **MUST** start with the VNF\npackage metadata in the form of a name-value pairs. Each pair shall appear\non a different line. The name is specified as following:\n\n  - vnf_provider_id\n\n  - vnf_product_name\n\n  - vnf_release_date_time\n\n  - vnf_package_version", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-805572": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv6 Virtual IP (VIP)\naddress is assigned\nusing the property ``allowed_address_pairs``\nmap property ``ip_address``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_v6_ip``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_floating_v6_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    OS::Nova::Server\n  * ``{network-role}`` is the {network-role} of the external\n    network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv6 Virtual IP (VIP)\naddress is assigned\nusing the property ``allowed_address_pairs``\nmap property ``ip_address``,\nthe parameter name **MUST** follow the\nnaming convention\n\n- ``{vm-type}_int_{network-role}_floating_v6_ip``\n\nwhere\n\n- ``{vm-type}`` is the {vm-type} associated with the\n  OS::Nova::Server\n- ``{network-role}`` is the {network-role} of the ONAP internal\n  network\n\nAnd the parameter **MUST** be declared as ``type: string``\nand **MUST** be enumerated in the environment file\n\nOR\n\nthe parameter name **MUST** follow the\nnaming convention\n\n- ``{vm-type}_int_{network-role}_floating_v6_ips``\n\nwhere\n\n- ``{vm-type}`` is the {vm-type} associated with the\n  OS::Nova::Server\n- ``{network-role}`` is the {network-role} of the ONAP internal\n  network\n\nAnd the parameter **MUST** be declared as ``type: comma_delimited_list``\nand **MUST** be enumerated in the environment file.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, Internal Networks", 
+                    "section_name": "VIP Assignment, ONAP Internal Networks", 
                     "sections": [
-                        "VIP Assignment, Internal Networks", 
+                        "VIP Assignment, ONAP Internal Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-81979": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::NetworkIpam``\nResource ID **MAY** use the naming convention\n\n* ``{network-role}_RNI``\n\nwhere\n\n* ``{network-role}`` is the network-role\n* ``RNI`` signifies that it is the Resource Network IPAM", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::NetworkIpam``\nResource ID **MAY** use the naming convention\n\n* ``{network-role}_RNI``\n\nwhere\n\n* ``{network-role}`` is the network-role\n* ``RNI`` signifies that it is the Resource Network IPAM", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "validation_mode": ""
                 }, 
                 "R-82115": {
-                    "description": "When a VNF's Heat Orchestration Template's resource is associated with a\nsingle ``{vm-type}``\nand a single external network, the Resource ID text **MUST** contain both\nthe ``{vm-type}``\nand the ``{network-role}``\n\n- the ``{vm-type}`` **MUST** appear before the ``{network-role}`` and\n  **MUST** be separated by an underscore '_'\n\n\n  - e.g., ``{vm-type}_{network-role}``, ``{vm-type}_{index}_{network-role}``\n\n\n- note that an ``{index}`` value **MAY** separate the ``{vm-type}`` and the\n  ``{network-role}`` and when this occurs underscores **MUST** separate the\n  three values.  (e.g., ``{vm-type}_{index}_{network-role}``).", 
+                    "description": "When a VNF's Heat Orchestration Template's resource is associated with a\nsingle ``{vm-type}``\nand a single ONAP\nexternal network, the Resource ID text **MUST** contain both\nthe ``{vm-type}``\nand the ``{network-role}``\n\n- the ``{vm-type}`` **MUST** appear before the ``{network-role}`` and\n  **MUST** be separated by an underscore '_'\n\n\n  - e.g., ``{vm-type}_{network-role}``, ``{vm-type}_{index}_{network-role}``\n\n\n- note that an ``{index}`` value **MAY** separate the ``{vm-type}`` and the\n  ``{network-role}`` and when this occurs underscores **MUST** separate the\n  three values.  (e.g., ``{vm-type}_{index}_{network-role}``).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-82551": {
-                    "description": "When a VNF's Heat Orchestration Template's resource is associated with a\nsingle ``{vm-type}`` and a single internal network, the Resource ID **MUST**\ncontain both the ``{vm-type}`` and the ``int_{network-role}`` and\n\n- the ``{vm-type}`` **MUST** appear before the ``int_{network-role}`` and\n  **MUST** be separated by an underscore '_'\n\n  - (e.g., ``{vm-type}_int_{network-role}``,\n    ``{vm-type}_{index}_int_{network-role}``)\n\n- note that an ``{index}`` value **MAY** separate the\n  ``{vm-type}`` and the ``int_{network-role}`` and when this occurs\n  underscores **MUST** separate the three values.\n  (e.g., ``{vm-type}_{index}_int_{network-role}``).", 
+                    "description": "When a VNF's Heat Orchestration Template's resource is associated with a\nsingle ``{vm-type}`` and a single ONAP internal network (per the ONAP\ndefinition, see Requirements R-52425 and R-46461 and R-35666),\nthe Resource ID **MUST**\ncontain both the ``{vm-type}`` and the ``int_{network-role}`` and\n\n- the ``{vm-type}`` **MUST** appear before the ``int_{network-role}`` and\n  **MUST** be separated by an underscore '_'\n\n  - (e.g., ``{vm-type}_int_{network-role}``,\n    ``{vm-type}_{index}_int_{network-role}``)\n\n- note that an ``{index}`` value **MAY** separate the\n  ``{vm-type}`` and the ``int_{network-role}`` and when this occurs\n  underscores **MUST** separate the three values.\n  (e.g., ``{vm-type}_{index}_int_{network-role}``).", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-83412": {
-                    "description": "If a VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an external network (per the\nONAP definition, see Requirement R-57424), the\nproperty ``allowed_address_pairs``\nmap property ``ip_address`` parameter(s)\n**MUST NOT** be enumerated in the\nVNF's Heat Orchestration Template's Environment File.", 
+                    "description": "If a VNF's Heat Orchestration Template's resource\n``OS::Neutron::Port`` is attaching to an ONAP external network (per the\nONAP definition, see Requirement R-57424 and R-16968), the\nproperty ``allowed_address_pairs``\nmap property ``ip_address`` parameter(s)\n**MUST NOT** be enumerated in the\nVNF's Heat Orchestration Template's Environment File.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VIP Assignment, External Networks", 
+                    "section_name": "VIP Assignment, ONAP External Networks", 
                     "sections": [
-                        "VIP Assignment, External Networks", 
+                        "VIP Assignment, ONAP External Networks", 
                         "Property: allowed_address_pairs, Map Property: ip_address", 
                         "Resource: OS::Neutron::Port - Parameters"
                     ], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-84123": {
-                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::Neutron::Port`` in an Incremental Module is attaching\n    to an internal network (per the ONAP definition, see\n    Requirements R-52425 and R-46461)\n    that is created in the Base Module, AND\n  * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the internal network IPv4 subnet is to be specified\n    using the property ``fixed_ips`` map property ``subnet``,\n\nthe parameter **MUST** follow the naming convention\n\n  * ``int_{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the internal network\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
+                    "description": "When\n\n  * the VNF's Heat Orchestration Template's\n    resource ``OS::Neutron::Port`` in an Incremental Module is attaching\n    to an ONAP internal network (per the ONAP definition, see\n    Requirements R-52425 and R-46461 and R-35666)\n    that is created in the Base Module, AND\n  * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND\n  * the internal network IPv4 subnet is to be specified\n    using the property ``fixed_ips`` map property ``subnet``,\n\nthe parameter **MUST** follow the naming convention\n\n  * ``int_{network-role}_subnet_id``\n\nwhere\n\n  * ``{network-role}`` is the network role of the ONAP internal network\n\nNote that the parameter **MUST** be defined as an ``output`` parameter in\nthe base module.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-84322": {
-                    "description": "A VNF's Heat Orchestration Template's Resource property parameter that\nis associated with an internal network **MUST** include\n``int_{network-role}`` as part of the parameter name,\nwhere ``int_`` is a hard coded string.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource property parameter that\nis associated with an ONAP internal network (per the ONAP definition, see\nRequirements R-52425 and R-46461 and R-35666)\n**MUST** include\n``int_{network-role}`` as part of the parameter name,\nwhere ``int_`` is a hard coded string.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/{network-role}", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-85235": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the internal\n    network", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` is attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nand an IPv4 address is assigned\nusing the property ``fixed_ips``\nmap property ``ip_address`` and the parameter type is defined as a\n``comma_delimited_list``,\nthe parameter name **MUST** follow the\nnaming convention\n\n  * ``{vm-type}_int_{network-role}_ips``\n\nwhere\n\n  * ``{vm-type}`` is the {vm-type} associated with the\n    ``OS::Nova::Server``\n  * ``{network-role}`` is the {network-role} of the ONAP internal\n    network", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-86182": {
-                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port``\nis in an incremental module and\nis attaching to an internal network (per the\nONAP definition, see Requirements R-52425 and R-46461),\nthe ``network`` parameter name **MUST**\n\n  * follow the naming convention ``int_{network-role}_net_id`` if the\n    network UUID value is used to reference the network\n  * follow the naming convention ``int_{network-role}_net_name`` if the\n    network name in is used to reference the network.\n\nwhere ``{network-role}`` is the network-role of the internal network and\na ``get_param`` **MUST** be used as the intrinsic function.", 
+                    "description": "When the VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port``\nis in an incremental module and\nis attaching to an ONAP internal network (per the\nONAP definition, see Requirements R-52425 and R-46461 and R-35666),\nthe ``network`` parameter name **MUST**\n\n  * follow the naming convention ``int_{network-role}_net_id`` if the\n    network UUID value is used to reference the network\n  * follow the naming convention ``int_{network-role}_net_name`` if the\n    network name in is used to reference the network.\n\nwhere ``{network-role}`` is the network-role of the ONAP internal network\nand a ``get_param`` **MUST** be used as the intrinsic function.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "validation_mode": ""
                 }, 
                 "R-86972": {
-                    "description": "A VNF **SHOULD** create the internal network in the VNF's Heat\nOrchestration Template Base Module.", 
+                    "description": "A VNF **SHOULD** create the ONAP internal network in the VNF's Heat\nOrchestration Template's Base Module.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "validation_mode": ""
                 }, 
                 "R-87096": {
-                    "description": "A VNF **MAY** contain zero, one or more than one internal network.", 
+                    "description": "A VNF **MAY** contain zero, one or more than one ONAP internal network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-87234": {
-                    "description": "The VNF or PNF package provided by a VNF or PNF vendor **MUST** be with\nTOSCA-Metadata directory (CSAR Option 1) as specified in\nETSI GS NFV-SOL004.\n\n**Note:** SDC supports only the CSAR Option 1 in Dublin. The Option 2\nwill be considered in future ONAP releases.", 
+                    "description": "The VNF or PNF CSAR package provided by a VNF or PNF vendor **MUST** be with\nTOSCA-Metadata directory (CSAR Option 1) as specified in\nETSI GS NFV-SOL004.\n\n**Note:** SDC supports only the CSAR Option 1 in Dublin. The Option 2\nwill be considered in future ONAP releases.", 
                     "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Structure and Format", 
+                    "section_name": "VNF or PNF Package Structure and Format", 
                     "sections": [
-                        "VNF Package Structure and Format", 
+                        "VNF or PNF Package Structure and Format", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF or PNF", 
+                    "target": "VNF or PNF CSAR PACKAGE", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "validation_mode": "static"
                 }, 
                 "R-87563": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv6 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an internal network\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_v6_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``v6_IP`` signifies that an IPv6 address is being configured\n* ``{index}`` references the instance of the IPv6 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv6 address is configured on the\n  virtual machine interface.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::InstanceIp`` Resource ID\nthat is configuring an IPv6 Address on a virtual machine interface\n(i.e., OS::ContrailV2::VirtualMachineInterface)\nattached to an ONAP internal network (per the ONAP definition, see\nRequirements R-52425 and R-46461 and R-35666)\n**MUST** use the naming convention\n\n*  ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_v6_IP_{index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP internal network\n  that the port is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.\n* ``v6_IP`` signifies that an IPv6 address is being configured\n* ``{index}`` references the instance of the IPv6 address configured\n  on the virtual machine interface.  The ``{index}`` is a numeric value\n  that **MUST** start at zero on an\n  instance of a virtual machine interface and **MUST** increment by one\n  each time a new IPv6 address is configured on the\n  virtual machine interface.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "External Networks", 
+                    "section_name": "ONAP External Networks", 
                     "sections": [
-                        "External Networks", 
+                        "ONAP External Networks", 
                         "Contrail Network Parameters", 
                         "Contrail Resource Parameters"
                     ], 
                     "validation_mode": ""
                 }, 
                 "R-93496": {
-                    "description": "The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nproperty ``fixed_ips``\nmap property ``ip_address``\nparameter associated with an internal network, i.e.,\n\n * ``{vm-type}_int_{network-role}_ip_{index}``\n * ``{vm-type}_int_{network-role}_v6_ip_{index}``\n * ``{vm-type}_int_{network-role}_ips``\n * ``{vm-type}_int_{network-role}_v6_ips``\n\n\n**MUST** be enumerated in the Heat Orchestration\nTemplate's Environment File and IP addresses **MUST** be\nassigned.", 
+                    "description": "The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``\nproperty ``fixed_ips``\nmap property ``ip_address``\nparameter associated with an ONAP internal network, i.e.,\n\n * ``{vm-type}_int_{network-role}_ip_{index}``\n * ``{vm-type}_int_{network-role}_v6_ip_{index}``\n * ``{vm-type}_int_{network-role}_ips``\n * ``{vm-type}_int_{network-role}_v6_ips``\n\n\n**MUST** be enumerated in the Heat Orchestration\nTemplate's Environment File and IP addresses **MUST** be\nassigned.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Neutron Parameters", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-96253": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` Resource ID\nthat is attaching to an external network\n**MUST** use the naming convention\n\n* ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the network\n  that the port (i.e. virtual machine interface) is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualMachineInterface`` Resource ID\nthat is attaching to an ONAP external network (per the ONAP definition,\nsee Requirement R-57424 and R-16968)\n**MUST** use the naming convention\n\n* ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}``\n\nwhere\n\n* ``{vm-type}`` is the vm-type\n* ``{vm-type_index}`` references the instance of the ``{vm-type}`` in\n  the VNF.  The\n  ``{vm-type_index}`` is a numeric value that **MUST** start at zero\n  in the VNF and\n  **MUST** increment by one each time a new instance of a ``{vm-type}``\n  is referenced.\n* ``{network-role}`` is the network-role of the ONAP external network\n  that the port (i.e. virtual machine interface) is attached to\n* ``{vmi_index}`` references the instance of the virtual machine interface\n  on the ``{vm-type}`` attached to ``{network-role}`` network.  The\n  ``{vmi_index}`` is a numeric value that **MUST** start at zero on an\n  instance of a ``{vm-type}`` and **MUST** increment by one each time a\n  new virtual machine interface is defined on the instance of the\n  ``{vm-type}`` attached to ``{network-role}`` network.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                 "R-96482": {
-                    "description": "When a VNF's Heat Orchestration Template's resource is associated\nwith a single external network, the Resource ID **MUST** contain the text\n``{network-role}``.", 
+                    "description": "When a VNF's Heat Orchestration Template's resource is associated\nwith a single ONAP external network, the Resource ID **MUST** contain the\ntext ``{network-role}``.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-96983": {
-                    "description": "A VNF's Heat Orchestration Template's Resource ID that is associated\nwith an internal network **MUST** include ``int_{network-role}`` as part\nof the Resource ID, where ``int_`` is a hard coded string.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource ID that is associated\nwith an ONAP internal network (per the ONAP definition, see Requirements\nR-52425 and R-46461 and R-35666)\n**MUST** include ``int_{network-role}`` as part\nof the Resource ID, where ``int_`` is a hard coded string.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/{network-role}", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
-                    "section_name": "VNF Package Contents", 
+                    "section_name": "VNF or PNF Package Contents", 
                     "sections": [
-                        "VNF Package Contents", 
+                        "VNF or PNF Package Contents", 
                         "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "validation_mode": ""
                 }, 
                 "R-98138": {
-                    "description": "When a VNF's Heat Orchestration Template's resource is associated with a\nsingle internal network, the Resource ID **MUST** contain the text\n``int_{network-role}``.", 
+                    "description": "When a VNF's Heat Orchestration Template's resource is associated with a\nsingle ONAP internal network (per the ONAP definition, see\nRequirements R-52425 and R-46461 and R-35666), the Resource ID **MUST**\ncontain the text\n``int_{network-role}``.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-99110": {
-                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualNetwork`` Resource ID **MUST** use the naming\nconvention\n\n* ``int_{network-role}_network``\n\nVNF Heat Orchestration Templates can only create internal networks.\nThere is no ``{index}`` after ``{network-role}`` because ``{network-role}``\n**MUST** be unique in the scope of the VNF's\nHeat Orchestration Template.", 
+                    "description": "A VNF's Heat Orchestration Template's Resource\n``OS::ContrailV2::VirtualNetwork`` Resource ID **MUST** use the naming\nconvention\n\n* ``int_{network-role}_network``\n\nVNF Heat Orchestration Templates can only create ONAP internal networks\n(per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666).\nThere is no ``{index}`` after ``{network-role}`` because ``{network-role}``\n**MUST** be unique in the scope of the VNF's\nHeat Orchestration Template.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/Resource IDs", 
                     "full_title": "", 
                     "hide_links": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "frankfurt", 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
                     "validation_mode": ""
                 }, 
                 "R-99794": {
-                    "description": "An external network **MUST** have one subnet. An external network\n**MAY** have more than one subnet.", 
+                    "description": "An ONAP external network **MUST** have one subnet. An external network\n**MAY** have more than one subnet.", 
                     "docname": "Chapter5/Heat/ONAP Heat Networking", 
                     "full_title": "", 
                     "hide_links": "", 
                     "validation_mode": "static"
                 }
             }, 
-            "needs_amount": 821
+            "needs_amount": 823
         }
     }
 }
\ No newline at end of file
diff --git a/ice_validator/tests/fixtures/test_nesting_level/fail/bad-level0.yaml b/ice_validator/tests/fixtures/test_nesting_level/fail/bad-level0.yaml
deleted file mode 100644 (file)
index 3e93c1a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.0'
----
-resources:
-    server_0:
-        type: bad-level1.yaml
-        properties:
-            name: { get_param: server_name_0 }
-    my_resource_group_1:
-        type: OS::Heat::ResourceGroup
-        properties:
-            count: 5
-            resource_def: { type: bad-level2.yaml }
diff --git a/ice_validator/tests/fixtures/test_nesting_level/fail/bad-level3.yaml b/ice_validator/tests/fixtures/test_nesting_level/fail/bad-level3.yaml
deleted file mode 100644 (file)
index bdd6131..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.0'
----
-heat_template_version: '2013-05-23'
-
-resources:
-  volume:
-    type: OS::Cinder::Volume
-    properties:
-      size: 1
-
-  volume_attachment:
-    type: OS::Cinder::VolumeAttachment
-    properties:
-      volume_id: { get_resource: volume }
-      instance_uuid: { get_resource: instance }
-
-  instance:
-    type: OS::Nova::Server
-    properties:
-      image: myimage
-      flavor: m1.small
 ---
 resources:
     server_0:
-        type: 17528_1.yaml
+        type: level1.yaml
         properties:
             name: { get_param: server_name_0 }
     my_resource_group_1:
         type: OS::Heat::ResourceGroup
         properties:
             count: 5
+            resource_def: { type: level2.yaml }
@@ -36,7 +36,7 @@
 # ============LICENSE_END============================================
 #
 #
-# VERSION: '1.0.0'
+# VERSION: '1.0.1'
 ---
 nested_template_description: base
 
@@ -48,14 +48,14 @@ parameters:
 
 resources:
     server_0:
-        type: bad-level2.yaml
+        type: level3.yaml
         properties:
             name: {get_param: server_name_0}
     my_resource_group_1:
-        type: OS::Nova::Server
+        type: OS::Heat::ResourceGroup
         properties:
             count: 5
-            resource_def: { type: bad-level3.yaml }
+            resource_def: { type: level2.yaml }
 
 outputs:
     vm_type_volume_id_0:
@@ -36,7 +36,7 @@
 # ============LICENSE_END============================================
 #
 #
-# VERSION: '1.0.0'
+# VERSION: '1.0.1'
 ---
 nested_template_description: base
 
@@ -55,7 +55,7 @@ resources:
         type: OS::Heat::ResourceGroup
         properties:
             count: 5
-            resource_def: { type: bad-level3.yaml }
+            resource_def: { type: level3.yaml }
 
 outputs:
     vm_type_volume_id_0:
index 1ca1659..0213649 100644 (file)
@@ -47,12 +47,8 @@ parameters:
         type: number
 
 resources:
-    server_0:
-        type: level3.yaml
-        properties:
-            name: {get_param: server_name_0}
     my_resource_group_1:
-        type: OS::Nova::Server
+        type: OS::Heat::ResourceGroup
         properties:
             count: 5
             resource_def: { type: level2.yaml }
index c2f109d..fce358a 100644 (file)
@@ -35,8 +35,6 @@
 #
 # ============LICENSE_END============================================
 #
-#
-# VERSION: '1.0.1'
 ---
 nested_template_description: base
 
@@ -46,17 +44,6 @@ parameters:
     vm_type_volume_size_0:
         type: number
 
-resources:
-    server_0:
-        type: not_a_template_file
-        properties:
-            name: {get_param: server_name_0}
-    my_resource_group_1:
-        type: OS::Heat::ResourceGroup
-        properties:
-            count: 5
-            resource_def: { type: level3.yaml }
-
 outputs:
-    vm_type_volume_id_0:
-        value: {get_resource: vm_type_volume_0}
+    vm_type_volume_name_0:
+        value: {get_param: vm_type_volume_name_0}
diff --git a/ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_0.yaml b/ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_0.yaml
deleted file mode 100644 (file)
index c5ab87c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.0'
----
-resources:
-    server_0:
-        type: bad-17528_1.yaml
-        properties:
-            name: { get_param: server_name_0 }
-    my_resource_group_1:
-        type: OS::Heat::ResourceGroup
-        properties:
-            count: 5
diff --git a/ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_1.yaml b/ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_1.yaml
deleted file mode 100644 (file)
index c00e1e3..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.1'
----
-nested_template_description: base
-
-parameters:
-    vm_type_volume_name_0:
-        type: string
-    vm_type_volume_size_0:
-        type: number
-
-resources:
-    server_0:
-        type: not_a_template_file
-        properties:
-            name: {get_param: server_name_0}
-    my_resource_group_1:
-        type: OS::Nova::Server
-        properties:
-            count: 5
-            resource_def: { type: bad-17528_2.yaml }
-    my_resource_group_2:
-        type: OS::Nova::Server
-
-outputs:
-    vm_type_volume_id_0:
-        value: {get_resource: vm_type_volume_0}
diff --git a/ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_2.yaml b/ice_validator/tests/fixtures/test_nesting_nova_server/fail/bad-17528_2.yaml
deleted file mode 100644 (file)
index 7dd2f64..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.1'
----
-heat_template_version: '2013-05-23'
-
-resources:
-  volume:
-    type: OS::Cinder::Volume
-    properties:
-      size: 1
-
-  volume_attachment:
-    type: OS::Cinder::VolumeAttachment
-    properties:
-      volume_id: { get_resource: volume }
-      instance_uuid: { get_resource: instance }
-
-  instance:
-    type: OS::Nova::NotServer
-    properties:
-      image: myimage
-      flavor: m1.small
diff --git a/ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_1.yaml b/ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_1.yaml
deleted file mode 100644 (file)
index 3e2546f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.0'
----
-nested_template_description: base
-
-parameters:
-    vm_type_volume_name_0:
-        type: string
-    vm_type_volume_size_0:
-        type: number
-
-resources:
-    server_0:
-        type: not_a_template_file
-        properties:
-            name: {get_param: server_name_0}
-    my_resource_group_1:
-        type: OS::Nova::Server
-        properties:
-            count: 5
-            #resource_def: { type: 17528_3.yaml }
-            resource_def: { type: 17528_2.yaml }
-
-outputs:
-    vm_type_volume_id_0:
-        value: {get_resource: vm_type_volume_0}
diff --git a/ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_2.yaml b/ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_2.yaml
deleted file mode 100644 (file)
index 1d17164..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.0'
----
-heat_template_version: '2013-05-23'
-
-resources:
-  volume:
-    type: OS::Cinder::Volume
-    properties:
-      size: 1
-
-  volume_attachment:
-    type: OS::Cinder::VolumeAttachment
-    properties:
-      volume_id: { get_resource: volume }
-      instance_uuid: { get_resource: instance }
-
-  instance:
-    type: OS::Nova::NotServer
-    properties:
-      image: myimage
-      flavor: m1.small
diff --git a/ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_3.yaml b/ice_validator/tests/fixtures/test_nesting_nova_server/pass/17528_3.yaml
deleted file mode 100644 (file)
index a38fd9c..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-# VERSION: '1.0.0'
----
-nested_template_description: base
-
-parameters:
-    vm_type_volume_name_0:
-        type: string
-    vm_type_volume_size_0:
-        type: number
-
-resources:
-    server_0:
-        type: not_a_template_file
-        properties:
-            name: {get_param: server_name_0}
-    my_resource_group_1:
-        type: OS::Nova::Server
-        properties:
-            count: 5
-            resource_def: { type: 17528_2.yaml }
-
-outputs:
-    vm_type_volume_id_0:
-        value: {get_resource: vm_type_volume_0}
index 09dd222..aaed8d1 100644 (file)
@@ -36,8 +36,6 @@
 # ============LICENSE_END============================================
 #
 #
-"""structures
-"""
 import collections
 import inspect
 import os
@@ -732,6 +730,31 @@ class Heat(object):
             re.search("(^(%(x)s)_)|(_(%(x)s)_)|(_(%(x)s)$)" % dict(x=part), name)
         )
 
+    def iter_nested_heat(self):
+        """
+        Returns an iterable of tuples (int, heat) where the first parameter is the
+        depth of the nested file and the second item is an instance of Heat
+        """
+
+        def walk_nested(heat, level=1):
+            resources = [Resource(r_id, data) for r_id, data in heat.resources.items()]
+            for resource in resources:
+                if resource.is_nested():
+                    nested_path = os.path.join(
+                        self.dirname, resource.get_nested_filename()
+                    )
+                    nested_heat = Heat(nested_path)
+                    yield level, nested_heat
+                    yield from walk_nested(nested_heat, level + 1)
+
+        yield from walk_nested(self)
+
+    def __str__(self):
+        return "Heat({})".format(self.filepath)
+
+    def __repr__(self):
+        return str(self)
+
 
 class Env(Heat):
     """An Environment file
@@ -832,6 +855,12 @@ class Resource(object):
         else:
             return {}
 
+    def __str__(self):
+        return "Resource(id={}, type={})".format(self.resource_id, self.resource_type)
+
+    def __repr__(self):
+        return str(self)
+
 
 def get_all_resources(yaml_files):
     """Return a dict, resource id: resource
index 41a2aa1..84c5c34 100644 (file)
@@ -234,8 +234,11 @@ def get_preload_excluded_parameters(yaml_file, persistent_only=False, env_spec=N
         for spec in specs:
             if persistent_only and not spec.get("persistent"):
                 continue
-            results.extend(get_template_parameters(yaml_file, resource_type,
-                                                   spec, all_resources, nested_resources=True))
+            results.extend(
+                get_template_parameters(
+                    yaml_file, resource_type, spec, all_resources, nested_resources=True
+                )
+            )
     results = {item["param"] for item in results}
     for param in Heat(yaml_file).parameters:
         # AZs often are manipulated and passed into nested templates making
@@ -246,14 +249,18 @@ def get_preload_excluded_parameters(yaml_file, persistent_only=False, env_spec=N
     return results
 
 
-def get_template_parameters(yaml_file, resource_type, spec, all_resources=False, nested_resources=False):
+def get_template_parameters(
+    yaml_file, resource_type, spec, all_resources=False, nested_resources=False
+):
     parameters = []
 
     heat = Heat(yaml_file)
     if all_resources:
         resources = heat.resources if not nested_resources else heat.get_all_resources()
     else:
-        resources = heat.get_resource_by_type(resource_type, all_resources=nested_resources)
+        resources = heat.get_resource_by_type(
+            resource_type, all_resources=nested_resources
+        )
     for rid, resource_props in resources.items():
         for param in prop_iterator(resource_props, *spec.get("property")):
             if param and get_param(param) and param_helper(spec, get_param(param), rid):
index 6c31dbb..bb8c704 100644 (file)
 # limitations under the License.
 #
 # ============LICENSE_END============================================
-#
-#
-
-"""
-test nesting level
-0 -> 1 -> 2 -> too many levels.
-"""
 
+from .structures import Heat
 from .utils import nested_files
 from .helpers import validates
 
-VERSION = "1.1.0"
-
-# pylint: disable=invalid-name
-
 
-@validates("R-60011")
+@validates("R-60011", "R-17528")
 def test_nesting_level(yaml_files):
-    """
-    A VNF's Heat Orchestration Template **MUST** have no more than two
-    levels of nesting.
-    """
-    bad, __, __, __ = nested_files.get_nesting(yaml_files)
-    assert not bad, "nesting depth of %d exceeded: %s" % (
-        nested_files.MAX_DEPTH,
-        ", ".join(bad),
-    )
+    errors = set()
+    non_nested_files = [
+        f for f in yaml_files if not nested_files.file_is_a_nested_template(f)
+    ]
+    heats = [Heat(f) for f in non_nested_files]
+    for heat in heats:
+        for depth, nested_heat in heat.iter_nested_heat():
+            if depth >= 3:
+                errors.add(
+                    (
+                        "{} is nested {} levels deep, but a maximum of {} levels are "
+                        "supported."
+                    ).format(nested_heat.basename, depth, nested_files.MAX_DEPTH)
+                )
+            if depth == 2 and nested_heat.resources:
+                errors.add(
+                    (
+                        "{} is a second level nested file, but it includes "
+                        "resources. Remove all Heat resources from this file."
+                    ).format(nested_heat.basename)
+                )
+    assert not errors, "\n\n".join(errors)
diff --git a/ice_validator/tests/test_nesting_nova_server.py b/ice_validator/tests/test_nesting_nova_server.py
deleted file mode 100644 (file)
index cce4c98..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# -*- coding: utf8 -*-
-# ============LICENSE_START====================================================
-# org.onap.vvp/validation-scripts
-# ===================================================================
-# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
-# ===================================================================
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-#
-#
-
-"""
-test nesting level
-0 -> 1 -> 2 -> too many levels.
-"""
-
-import pytest
-
-from .utils import nested_files
-from .helpers import validates
-
-VERSION = "1.0.0"
-
-
-def get_nova_server_count(heat):
-    """return the number of OS::Nova::Server
-    resources in heat
-    """
-    return len(heat.get_resource_by_type("OS::Nova::Server"))
-
-
-# pylint: disable=invalid-name
-
-
-@validates("R-17528")
-def test_nesting_nova_server(yaml_files):
-    """
-    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.
-
-    level: 0    1         2         3
-    template -> nested -> nested -> too many levels
-    """
-    bad, __, heat, depths = nested_files.get_nesting(yaml_files)
-    if bad:
-        pytest.skip("nesting depth exceeded")
-    for parent, depth in depths.items():
-        for depth_tuple in depth:
-            depth, context = depth_tuple
-            if depth > 1:
-                fname = context[0]
-                nservers = get_nova_server_count(heat[fname])
-                if nservers > 1:
-                    bad.append(
-                        "nested template %s must have only have 1 "
-                        "OS::Nova::Server defined, but %s were found"
-                        % (fname, nservers)
-                    )
-            if depth > 2:
-                fname = context[1]
-                nservers = get_nova_server_count(heat[fname])
-                if nservers > 0:
-                    bad.append(
-                        "nested template %s must not have an "
-                        "OS::Nova::Server defined, but %s were found"
-                        % (fname, nservers)
-                    )
-    assert not bad, "; ".join(bad)
index e5f5941..e1918ad 100644 (file)
 # limitations under the License.
 #
 # ============LICENSE_END============================================
-#
-#
 
-"""nested files
-"""
 from functools import lru_cache
 from os import path, listdir
 import re
 from tests import cached_yaml as yaml
-from tests.structures import Heat
 
 from tests.helpers import load_yaml
 
-VERSION = "1.4.0"
-
-"""
-test nesting depth
-0 -> 1 -> 2 -> too deep.
-"""
-MAX_DEPTH = 3
+MAX_DEPTH = 2
 
 
 def check_for_invalid_nesting(  # pylint: disable=too-many-branches
@@ -70,7 +59,7 @@ def check_for_invalid_nesting(  # pylint: disable=too-many-branches
     for v in yml.values():
         if isinstance(v, dict) and "type" in v:
             t = v["type"]
-            if t.endswith(".yml") or t.endswith(".yaml"):
+            if t.lower().endswith(".yml") or t.lower().endswith(".yaml"):
                 filepath = path.join(dirpath, t)
             elif t == "OS::Heat::ResourceGroup":
                 rd = v["properties"]["resource_def"]
@@ -98,18 +87,6 @@ def check_for_invalid_nesting(  # pylint: disable=too-many-branches
     return invalid_nesting
 
 
-def get_dict_of_nested_files(yml, dirpath):
-    """Return dict.
-    key: resource id in yml which references a nested file.
-    value: the nested file name.
-    Nested files are either referenced through "type", or
-    for OS::Heat::ResourceGroup, through "resource_def type".
-    """
-    nested_files = get_type_nested_files(yml, dirpath)
-    nested_files.update(get_resourcegroup_nested_files(yml, dirpath))
-    return nested_files
-
-
 @lru_cache(maxsize=None)
 def get_list_of_nested_files(yml_path, dirpath):
     """
@@ -138,62 +115,6 @@ def get_list_of_nested_files(yml_path, dirpath):
     return nested_files
 
 
-def get_nesting(yaml_files):
-    """return bad, files, heat, depths
-    bad - list of error messages.
-    files - dict: key is filename, value is dict of nested files.
-            This is the tree.
-    heat - dict,: key is filename, value is Heat instance.
-    depths - dict: key is filename, value is a depth tuple
-
-    level: 0           1         2         3
-    file:  template -> nested -> nested -> nested
-    depth: 3           2         1         0
-    """
-    bad = []
-    files = {}
-    heat = {}
-    depths = {}
-    for yaml_file in yaml_files:
-        dirname, basename = path.split(yaml_file)
-        h = Heat(filepath=yaml_file)
-        heat[basename] = h
-        files[basename] = get_dict_of_nested_files(h.yml, dirname)
-    for filename in files:
-        depths[filename] = _get_nesting_depth_start(0, filename, files, [])
-        for depth in depths[filename]:
-            if depth[0] > MAX_DEPTH:
-                bad.append("{} {}".format(filename, str(depth[1])))
-    return bad, files, heat, depths
-
-
-def _get_nesting_depth_start(depth, filename, files, context):
-    depths = []
-    for rid, nf in files[filename].items():
-        depths.append(_get_nesting_depth(1, nf, files, context))
-    return depths
-
-
-def _get_nesting_depth(depth, filename, files, context):
-    """Return a depth tuple (max_depth, current_context).
-    `context` is the list of filenames.
-    `depth` is the length of `context`.
-    Finds the max_depth of all the resources of `filename`.
-    current_context is the updated list of filenames
-    and max_depth is its length.
-    """
-    max_depth = depth + 1
-    current_context = context + [filename]
-    if depth <= MAX_DEPTH:
-        nested_filenames = files.get(filename, {})
-        if nested_filenames:
-            max_depth, current_context = max(
-                _get_nesting_depth(depth + 1, nested_filename, files, current_context)
-                for nested_filename in nested_filenames.values()
-            )
-    return max_depth, current_context
-
-
 def get_resourcegroup_nested_files(yml, dirpath):
     """
     return a dict.