Merge "added Is_nova_server method to helpers"
authorSteven Wright <sw3588@att.com>
Tue, 24 Sep 2019 14:53:57 +0000 (14:53 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 24 Sep 2019 14:53:57 +0000 (14:53 +0000)
40 files changed:
.pre-commit-config.yaml [new file with mode: 0644]
checks.py
ice_validator/app_tests/preload_tests/preload_envs/env_three/service_Starkmultimodule243550_csar.csar
ice_validator/app_tests/preload_tests/preload_envs/test.csar
ice_validator/app_tests/preload_tests/sample_env/base.env
ice_validator/app_tests/preload_tests/sample_heat/base.env
ice_validator/app_tests/preload_tests/sample_heat/base.yaml
ice_validator/app_tests/preload_tests/sample_heat/base_volume.yaml
ice_validator/app_tests/preload_tests/sample_heat/incremental.yaml
ice_validator/app_tests/preload_tests/test_environment.py
ice_validator/app_tests/preload_tests/test_grapi.py
ice_validator/app_tests/preload_tests/test_vnfapi.py
ice_validator/config.py
ice_validator/heat_requirements.json
ice_validator/preload/environment.py
ice_validator/preload/generator.py
ice_validator/preload/model.py
ice_validator/preload_grapi/grapi_generator.py
ice_validator/preload_vnfapi/vnfapi_generator.py
ice_validator/tests/conftest.py
ice_validator/tests/fixtures/test_incremental_module/fail/base.yaml [new file with mode: 0644]
ice_validator/tests/fixtures/test_incremental_module/fail/incremental.yaml [moved from ice_validator/app_tests/test_app.py with 84% similarity]
ice_validator/tests/fixtures/test_incremental_module/pass/pass0.yaml [new file with mode: 0644]
ice_validator/tests/fixtures/test_incremental_module/pass/pass0_base.yaml [new file with mode: 0644]
ice_validator/tests/helpers.py
ice_validator/tests/structures.py
ice_validator/tests/test_contrail_instance_ip_parameters.py
ice_validator/tests/test_contrail_resource_id.py
ice_validator/tests/test_environment_file_parameters.py
ice_validator/tests/test_fixed_ips_include_vm_type_network_role.py
ice_validator/tests/test_incremental_module.py [new file with mode: 0644]
ice_validator/tests/test_nested_parameters.py
ice_validator/tests/test_non_server_name.py
ice_validator/tests/utils/vm_types.py
ice_validator/vvp.py
install_win_deps.py
pom.xml
requirements.txt
tests.md [deleted file]
tox.ini

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644 (file)
index 0000000..31154e2
--- /dev/null
@@ -0,0 +1,41 @@
+# ============LICENSE_START====================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2019 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============================================
+repos:
+-   repo: https://github.com/ambv/black
+    rev: stable
+    hooks:
+    - id: black
+      language_version: python3.6
index 4431d26..9f8740a 100644 (file)
--- a/checks.py
+++ b/checks.py
@@ -40,7 +40,7 @@ import csv
 import io
 import json
 import os
-import subprocess  #nosec
+import subprocess  # nosec
 import sys
 
 import pytest
@@ -82,7 +82,7 @@ class Traceability:
         """
         testable_mappings = [m for m in self.mappings if m[self.IS_TESTABLE] == "True"]
         return [
-            f"Missing test for {m[self.REQ_ID]}"
+            f"WARN: Missing test for {m[self.REQ_ID]}"
             for m in testable_mappings
             if not m[self.TEST_NAME]
         ]
@@ -137,37 +137,41 @@ def check_requirements_up_to_date():
     """
     Checks if the requirements file packaged with VVP has meaningful differences
     to the requirements file published from VNFRQTS.
-    :return: list of errors found
     """
-    msg = ["heat_requirements.json is out-of-date. Run update_reqs.py to update."]
+    msg = "WARN: heat_requirements.json is out-of-date. Run update_reqs.py to update."
     latest_needs = json.load(get_requirements())
     with open(CURRENT_NEEDS_PATH, "r") as f:
         current_needs = json.load(f)
     latest_reqs = select_items(in_scope, current_version(latest_needs))
     current_reqs = select_items(in_scope, current_version(current_needs))
     if set(latest_reqs.keys()) != set(current_reqs.keys()):
-        return msg
-    if not all(
+        print(msg)
+    elif not all(
         latest["description"] == current_reqs[r_id]["description"]
         for r_id, latest in latest_reqs.items()
     ):
-        return msg
-    return None
+        print(msg)
 
 
 def check_app_tests_pass():
-    return run_pytest("tests", "--self-test",
-                      msg="app_tests failed. Run pytest app_tests and fix errors.")
+    return run_pytest(
+        "tests",
+        "--self-test",
+        msg="app_tests failed. Run pytest app_tests and fix errors.",
+    )
 
 
 def check_self_test_pass():
-    return run_pytest("tests", "--self-test",
-                      msg="self-test failed. Run pytest --self-test and fix errors.")
+    return run_pytest(
+        "tests",
+        "--self-test",
+        msg="self-test failed. Run pytest --self-test and fix errors.",
+    )
 
 
 def check_testable_requirements_are_mapped():
     tracing = Traceability()
-    return tracing.unmapped_requirement_errors()
+    print("\n".join(tracing.unmapped_requirement_errors()))
 
 
 def check_non_testable_requirements_are_not_mapped():
@@ -186,21 +190,22 @@ def check_flake8_passes():
 
 
 def check_bandit_passes():
-    result = subprocess.run(                                            #nosec
-        ["bandit", "-c", "bandit.yaml", "-r", ".", "-x", "./.tox/**"],  #nosec
-        encoding="utf-8",                                               #nosec
-        stdout=subprocess.PIPE,                                         #nosec
-        stderr=subprocess.PIPE,                                         #nosec
-    )                                                                   #nosec
+    result = subprocess.run(  nosec
+        ["bandit", "-c", "bandit.yaml", "-r", ".", "-x", "./.tox/**"],  # nosec
+        encoding="utf-8",  nosec
+        stdout=subprocess.PIPE,  nosec
+        stderr=subprocess.PIPE,  nosec
+    )  nosec
     msgs = result.stdout.split("\n") if result.returncode != 0 else []
-    return ["bandit errors detected:"] + [f"  {e}" for e in msgs] if msgs else []
+    return (
+        ["bandit errors detected:"] + ["  {}".format(e) for e in msgs] if msgs else []
+    )
 
 
 if __name__ == "__main__":
+
     checks = [
         check_self_test_pass,
-        check_requirements_up_to_date,
-        check_testable_requirements_are_mapped,
         check_non_testable_requirements_are_not_mapped,
         check_flake8_passes,
         check_bandit_passes,
@@ -208,4 +213,6 @@ if __name__ == "__main__":
     results = [check() for check in checks]
     errors = "\n".join("\n".join(msg) for msg in results if msg)
     print(errors or "Everything looks good!")
+    check_requirements_up_to_date()
+    check_testable_requirements_are_mapped()
     sys.exit(1 if errors else 0)
index 64ce556..1b7f7fe 100644 (file)
Binary files a/ice_validator/app_tests/preload_tests/preload_envs/env_three/service_Starkmultimodule243550_csar.csar and b/ice_validator/app_tests/preload_tests/preload_envs/env_three/service_Starkmultimodule243550_csar.csar differ
index d23a746..b1563fb 100644 (file)
Binary files a/ice_validator/app_tests/preload_tests/preload_envs/test.csar and b/ice_validator/app_tests/preload_tests/preload_envs/test.csar differ
index 3784ea0..e3ef442 100644 (file)
@@ -1,15 +1,10 @@
 parameters:
-
   db_image_name: db_image
-
   db_flavor_name: db_flavor
-
   lb_image_name: lb_image
-
   lb_flavor_name: lb_flavor
-
   svc_image_name: svc_image
-
   svc_flavor_name: svc_flavor
-
-  svc_count: 3
\ No newline at end of file
+  svc_count: 3
+  mgmt_image_name: mgmt_image
+  mgmt_flavor_name: mgmt_flavor
index 327d2ee..1a7dd4d 100644 (file)
@@ -224,7 +224,7 @@ resources:
     properties:
       network: { get_param: oam_net_id }
       fixed_ips: 
-        - subnet_id: { get_param: oam_subnet_id }
+        - subnet: { get_param: oam_subnet_id }
           ip_address: { get_param: db_oam_ip_0 }
 
   db_0_ha_port_0:
@@ -240,14 +240,14 @@ resources:
     properties:
       network: { get_resource: int_private_network }
       fixed_ips: 
-        - subnet_id: { get_resource: int_private_subnet }
+        - subnet: { get_resource: int_private_subnet }
 
   db_1_oam_port_0:
     type: OS::Neutron::Port
     properties:
       network: { get_param: oam_net_id }
       fixed_ips: 
-        - subnet_id: { get_param: oam_subnet_id }
+        - subnet: { get_param: oam_subnet_id }
           ip_address: { get_param: db_oam_ip_1 }
 
   db_1_ha_port_0:
@@ -263,20 +263,20 @@ resources:
     properties:
       network: { get_resource: int_private_network }
       fixed_ips: 
-        - subnet_id: { get_resource: int_private_subnet }
+        - subnet: { get_resource: int_private_subnet }
 
 
   db_volume_attachment_0:
     type: OS::Cinder::VolumeAttachment
     properties:
       volume_id: { get_param: db_vol0_id }
-      server: { get_resource: db_server_0 }
+      instance_uuid: { get_resource: db_server_0 }
 
   db_volume_attachment_1:
     type: OS::Cinder::VolumeAttachment
     properties:
       volume_id: { get_param: db_vol1_id }
-      server: { get_resource: db_server_1 }
+      instance_uuid: { get_resource: db_server_1 }
 
   mgmt_server_0:
     type: OS::Nova::Server
@@ -302,7 +302,7 @@ resources:
     properties:
       network: { get_resource: int_private_network }
       fixed_ips: 
-        - subnet_id: { get_resource: int_private_subnet }
+        - subnet: { get_resource: int_private_subnet }
 
   mgmt_0_ctrl_port_0:
     type: OS::Neutron::Port
@@ -345,7 +345,7 @@ resources:
     properties:
       network: { get_resource: int_private_network }
       fixed_ips: 
-        - subnet_id: { get_resource: int_private_subnet }
+        - subnet: { get_resource: int_private_subnet }
   
   svc_resource_group_0:
     type: OS::Heat::ResourceGroup
index 4d47766..e326357 100644 (file)
@@ -26,7 +26,7 @@ resources:
           params:
             VNF_NAME: {get_param: vnf_name}
       volume_type: "solidfire"
-      volume_size: { get_param: volume_size }
+      size: { get_param: volume_size }
 
   db_vol1:
     type: OS::Cinder::Volume
@@ -37,7 +37,7 @@ resources:
           params:
             VNF_NAME: {get_param: vnf_name}
       volume_type: "solidfire"
-      volume_size: { get_param: volume_size }
+      size: { get_param: volume_size }
 
 outputs:
   db_vol0_id:
index 1460149..68da36e 100644 (file)
@@ -130,7 +130,7 @@ resources:
     properties:
       network: { get_param: int_private_net_id }
       fixed_ips: 
-        - subnet_id: { get_param: int_private_subnet_id }
+        - subnet: { get_param: int_private_subnet_id }
   
   svc_resource_group_1:
     type: OS::Heat::ResourceGroup
index b627b4b..8d06a92 100644 (file)
@@ -37,6 +37,7 @@
 from pathlib import Path
 
 import pytest
+from mock import mock
 
 from preload.environment import CloudServiceArchive, PreloadEnvironment
 
@@ -55,23 +56,27 @@ def env():
 
 
 def test_csar_service_name(csar):
-    assert csar.service_name == "stark_vccf_svc"
+    assert csar.service_name == "stark_0917_vlb_svc"
 
 
 def test_csar_str_and_repr(csar):
-    assert str(csar) == "CSAR (path=test.csar, name=stark_vccf_svc)"
-    assert repr(csar) == "CSAR (path=test.csar, name=stark_vccf_svc)"
+    assert str(csar) == "CSAR (path=test.csar, name=stark_0917_vlb_svc)"
+    assert repr(csar) == "CSAR (path=test.csar, name=stark_0917_vlb_svc)"
 
 
 def test_csar_vf_module_model_name(csar):
     assert (
-        csar.get_vf_module_model_name("base_vIECCF")
-        == "StarkVccfVf..base_vIECCF..module-0"
+        csar.get_vf_module_model_name("vdns")
+        == "Stark0917VlbVf..vdns..module-3"
     )
 
 
 def test_csar_get_vf_module_resource_name(csar):
-    assert csar.get_vf_module_resource_name("base_vIECCF") == "stark_vccf_vf"
+    assert csar.get_vf_module_resource_name("vdns") == "stark_0917_vlb_vf"
+
+
+def test_csar_get_vnf_type(csar):
+    assert csar.get_vnf_type("vdns") == "stark_0917_vlb_svc/stark_0917_vlb_vf"
 
 
 def test_csar_get_vf_module_resource_name_not_found(csar):
@@ -79,12 +84,12 @@ def test_csar_get_vf_module_resource_name_not_found(csar):
 
 
 def test_preload_environment_global_csar(env):
-    assert env.csar.service_name == "stark_vccf_svc"
+    assert env.csar.service_name == "stark_0917_vlb_svc"
 
 
 def test_preload_environment_nest_env_csar_inherit(env):
     env_two = env.get_environment("env_two")
-    assert env_two.csar.service_name == "stark_vccf_svc"
+    assert env_two.csar.service_name == "stark_0917_vlb_svc"
 
 
 def test_preload_environment_nest_env_csar_override(env):
@@ -178,3 +183,14 @@ def test_preload_environment_defaults_in_module_env(env):
         "common": "ABC",
         "my_ip": "192.168.0.1",
     }
+
+
+def test_preload_environment_uses_csar(env, monkeypatch):
+    csar = mock.MagicMock(spec=CloudServiceArchive)
+    csar.get_vnf_type = mock.Mock(return_value="stark_vccf_svc/stark_vccf_vf")
+    csar.get_vf_module_model_name = mock.Mock(return_value="model_name")
+    env = env.get_environment("env_three")
+    monkeypatch.setattr(env, "csar", csar)
+    mod = env.get_module("base")
+    assert mod["vnf-type"] == "stark_vccf_svc/stark_vccf_vf"
+    assert mod["vf-module-model-name"] == "model_name"
index 7b56440..99498ec 100644 (file)
@@ -87,12 +87,12 @@ def preload(pytestconfig, session_dir):
 
 @pytest.fixture(scope="session")
 def base(preload):
-    return load_module(preload, "base.json")
+    return load_module(preload, "base_incomplete.json")
 
 
 @pytest.fixture(scope="session")
 def incremental(preload):
-    return load_module(preload, "incremental.json")
+    return load_module(preload, "incremental_incomplete.json")
 
 
 def test_base_fields(base):
@@ -211,8 +211,8 @@ def test_base_parameters(base):
         "vf-module-topology"
     ]["vf-module-parameters"]["param"]
     assert params == [
-        {"name": "svc_image_name", "value": "svc_image"},
-        {"name": "svc_flavor_name", "value": "svc_flavor"},
+        {"name": "db_vol0_id", "value": "VALUE FOR: db_vol0_id"},
+        {"name": "db_vol1_id", "value": "VALUE FOR: db_vol1_id"},
     ]
 
 
@@ -235,9 +235,18 @@ def test_incremental_networks(incremental):
 
 
 def test_preload_env_population(preload):
-    base_path = THIS_DIR / "sample_env/preloads/grapi/base.json"
+    base_path = THIS_DIR / "sample_env/preloads/grapi/base_incomplete.json"
     data = load_json(base_path)
     azs = data["input"]["preload-vf-module-topology-information"][
         "vnf-resource-assignments"
     ]["availability-zones"]["availability-zone"]
     assert azs == ["az0", "az1"]
+
+
+def test_preload_env_population_missing_value(preload):
+    base_path = THIS_DIR / "sample_env/preloads/grapi/base_incomplete.json"
+    data = load_json(base_path)
+    vnf_name = data["input"]["preload-vf-module-topology-information"][
+        "vnf-topology-identifier-structure"
+    ]["vnf-name"]
+    assert vnf_name == "VALUE FOR: vnf_name"
index 5732335..a49043f 100644 (file)
@@ -82,12 +82,12 @@ def preload(pytestconfig, session_dir):
 
 @pytest.fixture(scope="session")
 def base(preload):
-    return load_module(preload, "base.json")
+    return load_module(preload, "base_incomplete.json")
 
 
 @pytest.fixture(scope="session")
 def incremental(preload):
-    return load_module(preload, "incremental.json")
+    return load_module(preload, "incremental_incomplete.json")
 
 
 def test_base_azs(base):
@@ -163,8 +163,14 @@ def test_base_vm_types(base):
 def test_base_parameters(base):
     params = base["input"]["vnf-topology-information"]["vnf-parameters"]
     assert params == [
-        {"vnf-parameter-name": "svc_image_name", "vnf-parameter-value": "svc_image"},
-        {"vnf-parameter-name": "svc_flavor_name", "vnf-parameter-value": "svc_flavor"},
+        {
+            "vnf-parameter-name": "db_vol0_id",
+            "vnf-parameter-value": "VALUE FOR: db_vol0_id",
+        },
+        {
+            "vnf-parameter-name": "db_vol1_id",
+            "vnf-parameter-value": "VALUE FOR: db_vol1_id",
+        },
     ]
 
 
@@ -187,7 +193,7 @@ def test_incremental_networks(incremental):
 
 
 def test_preload_env_population(preload):
-    base_path = THIS_DIR / "sample_env/preloads/vnfapi/base.json"
+    base_path = THIS_DIR / "sample_env/preloads/vnfapi/base_incomplete.json"
     data = load_json(base_path)
     azs = data["input"]["vnf-topology-information"]["vnf-assignments"][
         "availability-zones"
index 5ac1cf5..fa8ec62 100644 (file)
@@ -225,6 +225,10 @@ class Config:
     def default_report_format(self):
         return self._user_settings.get("report_format", "HTML")
 
+    @property
+    def default_create_preloads(self):
+        return self._user_settings.get("create_preloads", 0)
+
     @property
     def report_formats(self):
         return ["CSV", "Excel", "HTML"]
index 14c3e74..3918702 100644 (file)
@@ -1,5 +1,5 @@
 {
-    "created": "2019-06-19T06:32:40.779928", 
+    "created": "2019-09-19T06:31:59.844469", 
     "current_version": "el alto", 
     "project": "", 
     "versions": {
             "needs_amount": 813
         }, 
         "el alto": {
-            "created": "2019-06-19T06:32:40.779858", 
+            "created": "2019-09-19T06:31:59.844406", 
             "filters": {}, 
             "filters_amount": 0, 
             "needs": {
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00011", 
+                    "id_complete": "R-00011", 
+                    "id_parent": "R-00011", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00068", 
+                    "id_complete": "R-00068", 
+                    "id_parent": "R-00068", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00098", 
+                    "id_complete": "R-00098", 
+                    "id_parent": "R-00098", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00156", 
+                    "id_complete": "R-00156", 
+                    "id_parent": "R-00156", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00228", 
+                    "id_complete": "R-00228", 
+                    "id_parent": "R-00228", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00606", 
+                    "id_complete": "R-00606", 
+                    "id_parent": "R-00606", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-00977", 
+                    "id_complete": "R-00977", 
+                    "id_parent": "R-00977", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01033", 
+                    "id_complete": "R-01033", 
+                    "id_parent": "R-01033", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01101", 
+                    "id_complete": "R-01101", 
+                    "id_parent": "R-01101", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-01123": {
-                    "description": "The VNF or PNF package Manifest file **MUST** contain: VNF or PNF package\nmeta-data, a list of all artifacts (both internal and external) entry's\nincluding their respected URI's, an algorithm to calculate a digest and\na digest result calculated on the content of each artifacts, as specified\nin ETSI GS NFV-SOL004.", 
-                    "docname": "Chapter5/Tosca", 
+                    "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", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01123", 
+                    "id_complete": "R-01123", 
+                    "id_parent": "R-01123", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01334", 
+                    "id_complete": "R-01334", 
+                    "id_parent": "R-01334", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01359", 
+                    "id_complete": "R-01359", 
+                    "id_parent": "R-01359", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01382", 
+                    "id_complete": "R-01382", 
+                    "id_parent": "R-01382", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-01427": {
-                    "description": "The VNF or PNF **MUST** support the provisioning of security and authentication\nparameters (HTTP username and password) in order to be able to authenticate\nwith DCAE (in ONAP).\n\nNote: In R3, a username and password are used with the DCAE VES Event\nListener which are used for HTTP Basic Authentication.\n\nNote: The configuration management and provisioning software are specific\nto a vendor architecture.", 
+                    "description": "If the VNF or PNF is using Basic Authentication, then the VNF or\nPNF **MUST** support the provisioning of security and authentication\nparameters (HTTP username and password) in order to be able to\nauthenticate with DCAE VES Event Listener.\n\nNote: The configuration management and provisioning software\nare specific to a vendor architecture.", 
                     "docname": "Chapter7/Monitoring-And-Management", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01427", 
+                    "id_complete": "R-01427", 
+                    "id_parent": "R-01427", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01455", 
+                    "id_complete": "R-01455", 
+                    "id_parent": "R-01455", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01478", 
+                    "id_complete": "R-01478", 
+                    "id_parent": "R-01478", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01556", 
+                    "id_complete": "R-01556", 
+                    "id_parent": "R-01556", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-01896", 
+                    "id_complete": "R-01896", 
+                    "id_parent": "R-01896", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02164", 
+                    "id_complete": "R-02164", 
+                    "id_parent": "R-02164", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02170", 
+                    "id_complete": "R-02170", 
+                    "id_parent": "R-02170", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02360", 
+                    "id_complete": "R-02360", 
+                    "id_parent": "R-02360", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02454", 
+                    "id_complete": "R-02454", 
+                    "id_parent": "R-02454", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-025941", 
+                    "id_complete": "R-025941", 
+                    "id_parent": "R-025941", 
                     "impacts": "DCAE,Documentation,Integration,SDC", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02597", 
+                    "id_complete": "R-02597", 
+                    "id_parent": "R-02597", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02616", 
+                    "id_complete": "R-02616", 
+                    "id_parent": "R-02616", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02651", 
+                    "id_complete": "R-02651", 
+                    "id_parent": "R-02651", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02691", 
+                    "id_complete": "R-02691", 
+                    "id_parent": "R-02691", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-02997", 
+                    "id_complete": "R-02997", 
+                    "id_parent": "R-02997", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03070", 
+                    "id_complete": "R-03070", 
+                    "id_parent": "R-03070", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03251", 
+                    "id_complete": "R-03251", 
+                    "id_parent": "R-03251", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03324", 
+                    "id_complete": "R-03324", 
+                    "id_parent": "R-03324", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03465", 
+                    "id_complete": "R-03465", 
+                    "id_parent": "R-03465", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03595", 
+                    "id_complete": "R-03595", 
+                    "id_parent": "R-03595", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03656", 
+                    "id_complete": "R-03656", 
+                    "id_parent": "R-03656", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-03954", 
+                    "id_complete": "R-03954", 
+                    "id_parent": "R-03954", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04158", 
+                    "id_complete": "R-04158", 
+                    "id_parent": "R-04158", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04298", 
+                    "id_complete": "R-04298", 
+                    "id_parent": "R-04298", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04344", 
+                    "id_complete": "R-04344", 
+                    "id_parent": "R-04344", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04492", 
+                    "id_complete": "R-04492", 
+                    "id_parent": "R-04492", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04697", 
+                    "id_complete": "R-04697", 
+                    "id_parent": "R-04697", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04747", 
+                    "id_complete": "R-04747", 
+                    "id_parent": "R-04747", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-04982", 
+                    "id_complete": "R-04982", 
+                    "id_parent": "R-04982", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-05050", 
+                    "id_complete": "R-05050", 
+                    "id_parent": "R-05050", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-05201", 
+                    "id_complete": "R-05201", 
+                    "id_parent": "R-05201", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-05257", 
+                    "id_complete": "R-05257", 
+                    "id_parent": "R-05257", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-06327", 
+                    "id_complete": "R-06327", 
+                    "id_parent": "R-06327", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-06413", 
+                    "id_complete": "R-06413", 
+                    "id_parent": "R-06413", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-06613", 
+                    "id_complete": "R-06613", 
+                    "id_parent": "R-06613", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-06668", 
+                    "id_complete": "R-06668", 
+                    "id_parent": "R-06668", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-06885", 
+                    "id_complete": "R-06885", 
+                    "id_parent": "R-06885", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-06924", 
+                    "id_complete": "R-06924", 
+                    "id_parent": "R-06924", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-07251", 
+                    "id_complete": "R-07251", 
+                    "id_parent": "R-07251", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-07443", 
+                    "id_complete": "R-07443", 
+                    "id_parent": "R-07443", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-07507", 
+                    "id_complete": "R-07507", 
+                    "id_parent": "R-07507", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-07545", 
+                    "id_complete": "R-07545", 
+                    "id_parent": "R-07545", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-07617", 
+                    "id_complete": "R-07617", 
+                    "id_parent": "R-07617", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-08134", 
+                    "id_complete": "R-08134", 
+                    "id_parent": "R-08134", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-08312", 
+                    "id_complete": "R-08312", 
+                    "id_parent": "R-08312", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-08315", 
+                    "id_complete": "R-08315", 
+                    "id_parent": "R-08315", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-08775", 
+                    "id_complete": "R-08775", 
+                    "id_parent": "R-08775", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-08975", 
+                    "id_complete": "R-08975", 
+                    "id_parent": "R-08975", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-09467", 
+                    "id_complete": "R-09467", 
+                    "id_parent": "R-09467", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-09811", 
+                    "id_complete": "R-09811", 
+                    "id_parent": "R-09811", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100000", 
+                    "id_complete": "R-100000", 
+                    "id_parent": "R-100000", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100010", 
+                    "id_complete": "R-100010", 
+                    "id_parent": "R-100010", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100020", 
+                    "id_complete": "R-100020", 
+                    "id_parent": "R-100020", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100030", 
+                    "id_complete": "R-100030", 
+                    "id_parent": "R-100030", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100040", 
+                    "id_complete": "R-100040", 
+                    "id_parent": "R-100040", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100050", 
+                    "id_complete": "R-100050", 
+                    "id_parent": "R-100050", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100060", 
+                    "id_complete": "R-100060", 
+                    "id_parent": "R-100060", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100070", 
+                    "id_complete": "R-100070", 
+                    "id_parent": "R-100070", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100080", 
+                    "id_complete": "R-100080", 
+                    "id_parent": "R-100080", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100090", 
+                    "id_complete": "R-100090", 
+                    "id_parent": "R-100090", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100100", 
+                    "id_complete": "R-100100", 
+                    "id_parent": "R-100100", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100110", 
+                    "id_complete": "R-100110", 
+                    "id_parent": "R-100110", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100120", 
+                    "id_complete": "R-100120", 
+                    "id_parent": "R-100120", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100130", 
+                    "id_complete": "R-100130", 
+                    "id_parent": "R-100130", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100140", 
+                    "id_complete": "R-100140", 
+                    "id_parent": "R-100140", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100150", 
+                    "id_complete": "R-100150", 
+                    "id_parent": "R-100150", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100160", 
+                    "id_complete": "R-100160", 
+                    "id_parent": "R-100160", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100170", 
+                    "id_complete": "R-100170", 
+                    "id_parent": "R-100170", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100180", 
+                    "id_complete": "R-100180", 
+                    "id_parent": "R-100180", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100190", 
+                    "id_complete": "R-100190", 
+                    "id_parent": "R-100190", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100200", 
+                    "id_complete": "R-100200", 
+                    "id_parent": "R-100200", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100210", 
+                    "id_complete": "R-100210", 
+                    "id_parent": "R-100210", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100220", 
+                    "id_complete": "R-100220", 
+                    "id_parent": "R-100220", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100230", 
+                    "id_complete": "R-100230", 
+                    "id_parent": "R-100230", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100240", 
+                    "id_complete": "R-100240", 
+                    "id_parent": "R-100240", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100250", 
+                    "id_complete": "R-100250", 
+                    "id_parent": "R-100250", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100260", 
+                    "id_complete": "R-100260", 
+                    "id_parent": "R-100260", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100270", 
+                    "id_complete": "R-100270", 
+                    "id_parent": "R-100270", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100280", 
+                    "id_complete": "R-100280", 
+                    "id_parent": "R-100280", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100310", 
+                    "id_complete": "R-100310", 
+                    "id_parent": "R-100310", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100330", 
+                    "id_complete": "R-100330", 
+                    "id_parent": "R-100330", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100350", 
+                    "id_complete": "R-100350", 
+                    "id_parent": "R-100350", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100360", 
+                    "id_complete": "R-100360", 
+                    "id_parent": "R-100360", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100370", 
+                    "id_complete": "R-100370", 
+                    "id_parent": "R-100370", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100380", 
+                    "id_complete": "R-100380", 
+                    "id_parent": "R-100380", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100400", 
+                    "id_complete": "R-100400", 
+                    "id_parent": "R-100400", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-100410", 
+                    "id_complete": "R-100410", 
+                    "id_parent": "R-100410", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                 }, 
                 "R-10087": {
                     "description": "The VNF or PNF CSAR package **MUST** include all artifacts required by\nETSI GS NFV-SOL004 including Manifest file, VNFD or PNFD (or Main\nTOSCA/YAML based Service Template) and other optional artifacts.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-10087", 
+                    "id_complete": "R-10087", 
+                    "id_parent": "R-10087", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-10129", 
+                    "id_complete": "R-10129", 
+                    "id_parent": "R-10129", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-10173", 
+                    "id_complete": "R-10173", 
+                    "id_parent": "R-10173", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-10353", 
+                    "id_complete": "R-10353", 
+                    "id_parent": "R-10353", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-106240", 
+                    "id_complete": "R-106240", 
+                    "id_parent": "R-106240", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-10716", 
+                    "id_complete": "R-10716", 
+                    "id_parent": "R-10716", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-10834", 
+                    "id_complete": "R-10834", 
+                    "id_parent": "R-10834", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11041", 
+                    "id_complete": "R-11041", 
+                    "id_parent": "R-11041", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11168", 
+                    "id_complete": "R-11168", 
+                    "id_parent": "R-11168", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11200", 
+                    "id_complete": "R-11200", 
+                    "id_parent": "R-11200", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11235", 
+                    "id_complete": "R-11235", 
+                    "id_parent": "R-11235", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11240", 
+                    "id_complete": "R-11240", 
+                    "id_parent": "R-11240", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11441", 
+                    "id_complete": "R-11441", 
+                    "id_parent": "R-11441", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11499", 
+                    "id_complete": "R-11499", 
+                    "id_parent": "R-11499", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11690", 
+                    "id_complete": "R-11690", 
+                    "id_parent": "R-11690", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-11790", 
+                    "id_complete": "R-11790", 
+                    "id_parent": "R-11790", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-118669", 
+                    "id_complete": "R-118669", 
+                    "id_parent": "R-118669", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-120182", 
+                    "id_complete": "R-120182", 
+                    "id_parent": "R-120182", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12110", 
+                    "id_complete": "R-12110", 
+                    "id_parent": "R-12110", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12271", 
+                    "id_complete": "R-12271", 
+                    "id_parent": "R-12271", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-123044", 
+                    "id_complete": "R-123044", 
+                    "id_parent": "R-123044", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12467", 
+                    "id_complete": "R-12467", 
+                    "id_parent": "R-12467", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12538", 
+                    "id_complete": "R-12538", 
+                    "id_parent": "R-12538", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12678", 
+                    "id_complete": "R-12678", 
+                    "id_parent": "R-12678", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12706", 
+                    "id_complete": "R-12706", 
+                    "id_parent": "R-12706", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-12709", 
+                    "id_complete": "R-12709", 
+                    "id_parent": "R-12709", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-130206": {
-                    "description": "If the VNF or PNF CSAR Package utilizes Option 2 for package security, then\nthe complete CSAR file **MUST** contain a Digest (a.k.a. hash) for each of\nthe components of the VNF or PNF package. The table of hashes is included\nin the package manifest file, which is signed with the VNF or PNF provider\nprivate key. In addition, the VNF or PNF provider MUST include a signing\ncertificate that includes the VNF or PNF provider public key, following a\nTOSCA pre-defined naming convention and located either at the root of the\narchive or in a predefined location specified by the TOSCA.meta file with\nthe corresponding entry named \"ETSI-Entry-Certificate\".", 
-                    "docname": "Chapter5/Tosca", 
+                    "description": "If the VNF or PNF CSAR Package utilizes Option 1 for package security, then\nthe complete CSAR file **MUST** contain a Digest (a.k.a. hash) for each of\nthe components of the VNF or PNF package. The table of hashes is included\nin the package manifest file, which is signed with the VNF or PNF provider\nprivate key. In addition, the VNF or PNF provider MUST include a signing\ncertificate that includes the VNF or PNF provider public key, following a\nTOSCA pre-defined naming convention and located either at the root of the\narchive or in a predefined location specified by the TOSCA.meta file with\nthe corresponding entry named \"ETSI-Entry-Certificate\".", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-130206", 
+                    "id_complete": "R-130206", 
+                    "id_parent": "R-130206", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF or PNF Package Authenticity and Integrity", 
                     "sections": [
                         "VNF or PNF Package Authenticity and Integrity", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13151", 
+                    "id_complete": "R-13151", 
+                    "id_parent": "R-13151", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13194", 
+                    "id_complete": "R-13194", 
+                    "id_parent": "R-13194", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13196", 
+                    "id_complete": "R-13196", 
+                    "id_parent": "R-13196", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13344", 
+                    "id_complete": "R-13344", 
+                    "id_parent": "R-13344", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13390", 
+                    "id_complete": "R-13390", 
+                    "id_parent": "R-13390", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13613", 
+                    "id_complete": "R-13613", 
+                    "id_parent": "R-13613", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13627", 
+                    "id_complete": "R-13627", 
+                    "id_parent": "R-13627", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-13800", 
+                    "id_complete": "R-13800", 
+                    "id_parent": "R-13800", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-14198", 
+                    "id_complete": "R-14198", 
+                    "id_parent": "R-14198", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-14447", 
+                    "id_complete": "R-14447", 
+                    "id_parent": "R-14447", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-146092": {
                     "description": "If one or more non-MANO artifact(s) is included in the VNF or PNF TOSCA CSAR\npackage, the Manifest file in this CSAR package **MUST** contain: non-MANO\nartifact set which MAY contain following ONAP public tag.\n\n  - onap_ves_events: contains VES registration files\n\n  - onap_pm_dictionary: contains the PM dictionary files\n\n  - onap_yang_modules: contains Yang module files for configurations\n\n  - onap_ansible_playbooks: contains any ansible_playbooks\n\n  - onap_others: contains any other non_MANO artifacts, e.g. informational\n    documents", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-146092", 
+                    "id_complete": "R-146092", 
+                    "id_parent": "R-146092", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-146931", 
+                    "id_complete": "R-146931", 
+                    "id_parent": "R-146931", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-14853", 
+                    "id_complete": "R-14853", 
+                    "id_parent": "R-14853", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15189", 
+                    "id_complete": "R-15189", 
+                    "id_parent": "R-15189", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15287", 
+                    "id_complete": "R-15287", 
+                    "id_parent": "R-15287", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15325", 
+                    "id_complete": "R-15325", 
+                    "id_parent": "R-15325", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15480", 
+                    "id_complete": "R-15480", 
+                    "id_parent": "R-15480", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15671", 
+                    "id_complete": "R-15671", 
+                    "id_parent": "R-15671", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-15837": {
                     "description": "The following table defines the major TOSCA  Types specified in\nETSI NFV-SOL001 standard draft. The VNFD provided by a VNF vendor\n**MUST** comply with the below definitions:", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15837", 
+                    "id_complete": "R-15837", 
+                    "id_parent": "R-15837", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "General", 
                     "sections": [
                         "General", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15884", 
+                    "id_complete": "R-15884", 
+                    "id_parent": "R-15884", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-15885", 
+                    "id_complete": "R-15885", 
+                    "id_parent": "R-15885", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16039", 
+                    "id_complete": "R-16039", 
+                    "id_parent": "R-16039", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16065", 
+                    "id_complete": "R-16065", 
+                    "id_parent": "R-16065", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16241", 
+                    "id_complete": "R-16241", 
+                    "id_parent": "R-16241", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16437", 
+                    "id_complete": "R-16437", 
+                    "id_parent": "R-16437", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16447", 
+                    "id_complete": "R-16447", 
+                    "id_parent": "R-16447", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16496", 
+                    "id_complete": "R-16496", 
+                    "id_parent": "R-16496", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16560", 
+                    "id_complete": "R-16560", 
+                    "id_parent": "R-16560", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16777", 
+                    "id_complete": "R-16777", 
+                    "id_parent": "R-16777", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16875", 
+                    "id_complete": "R-16875", 
+                    "id_parent": "R-16875", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-16968", 
+                    "id_complete": "R-16968", 
+                    "id_parent": "R-16968", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-17334", 
+                    "id_complete": "R-17334", 
+                    "id_parent": "R-17334", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-17528", 
+                    "id_complete": "R-17528", 
+                    "id_parent": "R-17528", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-17624", 
+                    "id_complete": "R-17624", 
+                    "id_parent": "R-17624", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                 }, 
                 "R-177937": {
                     "description": "The PNFD provided by a PNF vendor\u00a0**MUST**\u00a0comply with the following\nCapabilities Types as specified in ETSI NFV-SOL001 standard:\n\n  - tosca.datatypes.nfv.VirtualLinkable", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca PNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-177937", 
+                    "id_complete": "R-177937", 
+                    "id_parent": "R-177937", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "Capability Types", 
                     "sections": [
                         "Capability Types", 
-                        "TOSCA PNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA PNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                 }, 
                 "R-17852": {
                     "description": "The VNFD **MAY** include TOSCA/YAML definitions that are not part of\nNFV Profile. If provided, these definitions MUST comply with TOSCA\nSimple Profile in YAML v.1.2.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-17852", 
+                    "id_complete": "R-17852", 
+                    "id_parent": "R-17852", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "General", 
                     "sections": [
                         "General", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18001", 
+                    "id_complete": "R-18001", 
+                    "id_parent": "R-18001", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18008", 
+                    "id_complete": "R-18008", 
+                    "id_parent": "R-18008", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18202", 
+                    "id_complete": "R-18202", 
+                    "id_parent": "R-18202", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18525", 
+                    "id_complete": "R-18525", 
+                    "id_parent": "R-18525", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18683", 
+                    "id_complete": "R-18683", 
+                    "id_parent": "R-18683", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18725", 
+                    "id_complete": "R-18725", 
+                    "id_parent": "R-18725", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18733", 
+                    "id_complete": "R-18733", 
+                    "id_parent": "R-18733", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-18864", 
+                    "id_complete": "R-18864", 
+                    "id_parent": "R-18864", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-19082", 
+                    "id_complete": "R-19082", 
+                    "id_parent": "R-19082", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-19366", 
+                    "id_complete": "R-19366", 
+                    "id_parent": "R-19366", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-19624", 
+                    "id_complete": "R-19624", 
+                    "id_parent": "R-19624", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-19756", 
+                    "id_complete": "R-19756", 
+                    "id_parent": "R-19756", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-19768", 
+                    "id_complete": "R-19768", 
+                    "id_parent": "R-19768", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-19922", 
+                    "id_complete": "R-19922", 
+                    "id_parent": "R-19922", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20065", 
+                    "id_complete": "R-20065", 
+                    "id_parent": "R-20065", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20204", 
+                    "id_complete": "R-20204", 
+                    "id_parent": "R-20204", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20308", 
+                    "id_complete": "R-20308", 
+                    "id_parent": "R-20308", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20319", 
+                    "id_complete": "R-20319", 
+                    "id_parent": "R-20319", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20353", 
+                    "id_complete": "R-20353", 
+                    "id_parent": "R-20353", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20453", 
+                    "id_complete": "R-20453", 
+                    "id_parent": "R-20453", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20547", 
+                    "id_complete": "R-20547", 
+                    "id_parent": "R-20547", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20741", 
+                    "id_complete": "R-20741", 
+                    "id_parent": "R-20741", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20856", 
+                    "id_complete": "R-20856", 
+                    "id_parent": "R-20856", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-20860", 
+                    "id_complete": "R-20860", 
+                    "id_parent": "R-20860", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21210", 
+                    "id_complete": "R-21210", 
+                    "id_parent": "R-21210", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-21322": {
                     "description": "The VNF provider **MUST** provide their testing scripts to support\ntesting as specified in ETSI NFV-SOL004 - Testing directory in CSAR", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21322", 
+                    "id_complete": "R-21322", 
+                    "id_parent": "R-21322", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21330", 
+                    "id_complete": "R-21330", 
+                    "id_parent": "R-21330", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21511", 
+                    "id_complete": "R-21511", 
+                    "id_parent": "R-21511", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21558", 
+                    "id_complete": "R-21558", 
+                    "id_parent": "R-21558", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21652", 
+                    "id_complete": "R-21652", 
+                    "id_parent": "R-21652", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-21819": {
-                    "description": "The VNF **MUST** provide functionality that enables the Operator to comply\nwith requests for information from law enforcement and government agencies.", 
+                    "description": "VNFs that are subject to regulatory requirements **MUST** provide\nfunctionality that enables the Operator to comply with ETSI TC LI\nrequirements, and, optionally, other relevant national equivalents.", 
                     "docname": "Chapter4/Security", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-21819", 
+                    "id_complete": "R-21819", 
+                    "id_parent": "R-21819", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22059", 
+                    "id_complete": "R-22059", 
+                    "id_parent": "R-22059", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "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.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-221914", 
+                    "id_complete": "R-221914", 
+                    "id_parent": "R-221914", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
-                "R-22286": {
-                    "description": "The VNF **MUST** support Integration functionality via\nAPI/Syslog/SNMP to other functional modules in the network (e.g.,\nPCRF, PCEF) that enable dynamic security control by blocking the\nmalicious traffic or malicious end users.", 
-                    "docname": "Chapter4/Security", 
-                    "full_title": "", 
-                    "hide_links": "", 
-                    "id": "R-22286", 
-                    "impacts": "", 
-                    "introduced": "", 
-                    "is_need": true, 
-                    "is_part": false, 
-                    "keyword": "MUST", 
-                    "links": [], 
-                    "notes": "", 
-                    "parts": {}, 
-                    "section_name": "VNF Security Analytics Requirements", 
-                    "sections": [
-                        "VNF Security Analytics Requirements", 
-                        "VNF Security"
-                    ], 
-                    "status": null, 
-                    "tags": [], 
-                    "target": "VNF", 
-                    "test": "", 
-                    "test_case": "", 
-                    "test_file": "", 
-                    "title": "", 
-                    "title_from_content": "", 
-                    "type": "req", 
-                    "type_name": "Requirement", 
-                    "updated": "", 
-                    "validated_by": "", 
-                    "validation_mode": ""
-                }, 
                 "R-22288": {
                     "description": "The VNF's Heat Orchestration Template's Resource\n``OS::Neutron::Port`` property ``fixed_ips``\nmap property ``subnet`` parameter\n``int_{network-role}_v6_subnet_id``\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": "", 
                     "id": "R-22288", 
+                    "id_complete": "R-22288", 
+                    "id_parent": "R-22288", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22346", 
+                    "id_complete": "R-22346", 
+                    "id_parent": "R-22346", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22367", 
+                    "id_complete": "R-22367", 
+                    "id_parent": "R-22367", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22589", 
+                    "id_complete": "R-22589", 
+                    "id_parent": "R-22589", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22608", 
+                    "id_complete": "R-22608", 
+                    "id_parent": "R-22608", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22680", 
+                    "id_complete": "R-22680", 
+                    "id_parent": "R-22680", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22688", 
+                    "id_complete": "R-22688", 
+                    "id_parent": "R-22688", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22700", 
+                    "id_complete": "R-22700", 
+                    "id_parent": "R-22700", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22838", 
+                    "id_complete": "R-22838", 
+                    "id_parent": "R-22838", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22888", 
+                    "id_complete": "R-22888", 
+                    "id_parent": "R-22888", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-22946", 
+                    "id_complete": "R-22946", 
+                    "id_parent": "R-22946", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23035", 
+                    "id_complete": "R-23035", 
+                    "id_parent": "R-23035", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23135", 
+                    "id_complete": "R-23135", 
+                    "id_parent": "R-23135", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-231402", 
+                    "id_complete": "R-231402", 
+                    "id_parent": "R-231402", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23311", 
+                    "id_complete": "R-23311", 
+                    "id_parent": "R-23311", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23475", 
+                    "id_complete": "R-23475", 
+                    "id_parent": "R-23475", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23503", 
+                    "id_complete": "R-23503", 
+                    "id_parent": "R-23503", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23664", 
+                    "id_complete": "R-23664", 
+                    "id_parent": "R-23664", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23740", 
+                    "id_complete": "R-23740", 
+                    "id_parent": "R-23740", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23882", 
+                    "id_complete": "R-23882", 
+                    "id_parent": "R-23882", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-23957", 
+                    "id_complete": "R-23957", 
+                    "id_parent": "R-23957", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-240760", 
+                    "id_complete": "R-240760", 
+                    "id_parent": "R-240760", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24189", 
+                    "id_complete": "R-24189", 
+                    "id_parent": "R-24189", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24269", 
+                    "id_complete": "R-24269", 
+                    "id_parent": "R-24269", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24359", 
+                    "id_complete": "R-24359", 
+                    "id_parent": "R-24359", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24482", 
+                    "id_complete": "R-24482", 
+                    "id_parent": "R-24482", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                 }, 
                 "R-24632": {
                     "description": "The PNF Descriptor (PNFD) provided by PNF vendor **MUST** comply with\nTOSCA/YAML based Service template for PNF descriptor specified in ETSI\nNFV-SOL001.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca PNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24632", 
+                    "id_complete": "R-24632", 
+                    "id_parent": "R-24632", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "General", 
                     "sections": [
                         "General", 
-                        "TOSCA PNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA PNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24893", 
+                    "id_complete": "R-24893", 
+                    "id_parent": "R-24893", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-24997", 
+                    "id_complete": "R-24997", 
+                    "id_parent": "R-24997", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-25190", 
+                    "id_complete": "R-25190", 
+                    "id_parent": "R-25190", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-25238", 
+                    "id_complete": "R-25238", 
+                    "id_parent": "R-25238", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-25401", 
+                    "id_complete": "R-25401", 
+                    "id_parent": "R-25401", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-25547", 
+                    "id_complete": "R-25547", 
+                    "id_parent": "R-25547", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-256267", 
+                    "id_complete": "R-256267", 
+                    "id_parent": "R-256267", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-256347", 
+                    "id_complete": "R-256347", 
+                    "id_parent": "R-256347", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-256790", 
+                    "id_complete": "R-256790", 
+                    "id_parent": "R-256790", 
                     "impacts": "", 
                     "introduced": "el alto", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-25720", 
+                    "id_complete": "R-25720", 
+                    "id_parent": "R-25720", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-257367", 
+                    "id_complete": "R-257367", 
+                    "id_parent": "R-257367", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-258352", 
+                    "id_complete": "R-258352", 
+                    "id_parent": "R-258352", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-258686": {
-                    "description": "The VNF application processes **MUST NOT** run as root.", 
+                    "description": "The VNF application processes **SHOULD NOT** run as root. If a VNF\napplication process must run as root, the technical reason must\nbe documented.", 
                     "docname": "Chapter4/Security", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-258686", 
+                    "id_complete": "R-258686", 
+                    "id_parent": "R-258686", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "is_part": false, 
-                    "keyword": "MUST NOT", 
+                    "keyword": "SHOULD NOT", 
                     "links": [], 
                     "notes": "", 
                     "parts": {}, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-25877", 
+                    "id_complete": "R-25877", 
+                    "id_parent": "R-25877", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26115", 
+                    "id_complete": "R-26115", 
+                    "id_parent": "R-26115", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26124", 
+                    "id_complete": "R-26124", 
+                    "id_parent": "R-26124", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26351", 
+                    "id_complete": "R-26351", 
+                    "id_parent": "R-26351", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26371", 
+                    "id_complete": "R-26371", 
+                    "id_parent": "R-26371", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26506", 
+                    "id_complete": "R-26506", 
+                    "id_parent": "R-26506", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26508", 
+                    "id_complete": "R-26508", 
+                    "id_parent": "R-26508", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26567", 
+                    "id_complete": "R-26567", 
+                    "id_parent": "R-26567", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-26881", 
+                    "id_complete": "R-26881", 
+                    "id_parent": "R-26881", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-270358", 
+                    "id_complete": "R-270358", 
+                    "id_parent": "R-270358", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27078", 
+                    "id_complete": "R-27078", 
+                    "id_parent": "R-27078", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27310", 
+                    "id_complete": "R-27310", 
+                    "id_parent": "R-27310", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27469", 
+                    "id_complete": "R-27469", 
+                    "id_parent": "R-27469", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27511", 
+                    "id_complete": "R-27511", 
+                    "id_parent": "R-27511", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27818", 
+                    "id_complete": "R-27818", 
+                    "id_parent": "R-27818", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27970", 
+                    "id_complete": "R-27970", 
+                    "id_parent": "R-27970", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-27995", 
+                    "id_complete": "R-27995", 
+                    "id_parent": "R-27995", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-28168", 
+                    "id_complete": "R-28168", 
+                    "id_parent": "R-28168", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-28189", 
+                    "id_complete": "R-28189", 
+                    "id_parent": "R-28189", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-28222", 
+                    "id_complete": "R-28222", 
+                    "id_parent": "R-28222", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-283988", 
+                    "id_complete": "R-283988", 
+                    "id_parent": "R-283988", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-284934", 
+                    "id_complete": "R-284934", 
+                    "id_parent": "R-284934", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-28756", 
+                    "id_complete": "R-28756", 
+                    "id_parent": "R-28756", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-28795", 
+                    "id_complete": "R-28795", 
+                    "id_parent": "R-28795", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-28980", 
+                    "id_complete": "R-28980", 
+                    "id_parent": "R-28980", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29324", 
+                    "id_complete": "R-29324", 
+                    "id_parent": "R-29324", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-293901": {
                     "description": "The VNF or PNF CSAR PACKAGE with TOSCA-Metadata **MUST** include following\nadditional keywords pointing to TOSCA files:\n\n  - ETSI-Entry-Manifest\n\n  - ETSI-Entry-Change-Log\n\nNote: For a CSAR containing a TOSCA-Metadata directory, which includes\nthe TOSCA.meta metadata file. The TOSCA.meta metadata file includes block_0\nwith the Entry-Definitions keyword pointing to a TOSCA definitions YAML\nfile used as entry for parsing the contents of the overall CSAR archive.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-293901", 
+                    "id_complete": "R-293901", 
+                    "id_parent": "R-293901", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29488", 
+                    "id_complete": "R-29488", 
+                    "id_parent": "R-29488", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29495", 
+                    "id_complete": "R-29495", 
+                    "id_parent": "R-29495", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29705", 
+                    "id_complete": "R-29705", 
+                    "id_parent": "R-29705", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29751", 
+                    "id_complete": "R-29751", 
+                    "id_parent": "R-29751", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29760", 
+                    "id_complete": "R-29760", 
+                    "id_parent": "R-29760", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29765", 
+                    "id_complete": "R-29765", 
+                    "id_parent": "R-29765", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29872", 
+                    "id_complete": "R-29872", 
+                    "id_parent": "R-29872", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-29977", 
+                    "id_complete": "R-29977", 
+                    "id_parent": "R-29977", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30005", 
+                    "id_complete": "R-30005", 
+                    "id_parent": "R-30005", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30278", 
+                    "id_complete": "R-30278", 
+                    "id_parent": "R-30278", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-303569", 
+                    "id_complete": "R-303569", 
+                    "id_parent": "R-303569", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30395", 
+                    "id_complete": "R-30395", 
+                    "id_parent": "R-30395", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-304011", 
+                    "id_complete": "R-304011", 
+                    "id_parent": "R-304011", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30650", 
+                    "id_complete": "R-30650", 
+                    "id_parent": "R-30650", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30654", 
+                    "id_complete": "R-30654", 
+                    "id_parent": "R-30654", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30753", 
+                    "id_complete": "R-30753", 
+                    "id_parent": "R-30753", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30804", 
+                    "id_complete": "R-30804", 
+                    "id_parent": "R-30804", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-30932", 
+                    "id_complete": "R-30932", 
+                    "id_parent": "R-30932", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-31141", 
+                    "id_complete": "R-31141", 
+                    "id_parent": "R-31141", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-31614", 
+                    "id_complete": "R-31614", 
+                    "id_parent": "R-31614", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-31809", 
+                    "id_complete": "R-31809", 
+                    "id_parent": "R-31809", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32094", 
+                    "id_complete": "R-32094", 
+                    "id_parent": "R-32094", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-32155": {
                     "description": "The VNFD provided by VNF vendor may use the below described TOSCA\ninterface types. An on-boarding entity (ONAP SDC) **MUST** support them.\n\n  **tosca.interfaces.nfv.vnf.lifecycle.Nfv** supports LCM operations", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32155", 
+                    "id_complete": "R-32155", 
+                    "id_parent": "R-32155", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "Interface Types", 
                     "sections": [
                         "Interface Types", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32217", 
+                    "id_complete": "R-32217", 
+                    "id_parent": "R-32217", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32394", 
+                    "id_complete": "R-32394", 
+                    "id_parent": "R-32394", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32557", 
+                    "id_complete": "R-32557", 
+                    "id_parent": "R-32557", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32636", 
+                    "id_complete": "R-32636", 
+                    "id_parent": "R-32636", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32641", 
+                    "id_complete": "R-32641", 
+                    "id_parent": "R-32641", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32695", 
+                    "id_complete": "R-32695", 
+                    "id_parent": "R-32695", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-328086", 
+                    "id_complete": "R-328086", 
+                    "id_parent": "R-328086", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-32981", 
+                    "id_complete": "R-32981", 
+                    "id_parent": "R-32981", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33132", 
+                    "id_complete": "R-33132", 
+                    "id_parent": "R-33132", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-332680", 
+                    "id_complete": "R-332680", 
+                    "id_parent": "R-332680", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33280", 
+                    "id_complete": "R-33280", 
+                    "id_parent": "R-33280", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33488", 
+                    "id_complete": "R-33488", 
+                    "id_parent": "R-33488", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33694", 
+                    "id_complete": "R-33694", 
+                    "id_parent": "R-33694", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33846", 
+                    "id_complete": "R-33846", 
+                    "id_parent": "R-33846", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
+                "R-33878": {
+                    "description": "The VNF or PNF **MUST** support one of the following authentication\nmethods for authenticating HTTPS connections to the DCAE VES Event\nListener:\n\n- The preferred method is Certificate Authentication\n\n- The non-preferred option is Basic Authentication.", 
+                    "docname": "Chapter7/Monitoring-And-Management", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-33878", 
+                    "id_complete": "R-33878", 
+                    "id_parent": "R-33878", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MUST", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "Security", 
+                    "sections": [
+                        "Security", 
+                        "Monitoring & Management Requirements", 
+                        "Monitoring & Management"
+                    ], 
+                    "status": null, 
+                    "tags": [], 
+                    "target": "VNF or PNF", 
+                    "test": "", 
+                    "test_case": "", 
+                    "test_file": "", 
+                    "title": "", 
+                    "title_from_content": "", 
+                    "type": "req", 
+                    "type_name": "Requirement", 
+                    "updated": "", 
+                    "validated_by": "", 
+                    "validation_mode": ""
+                }, 
                 "R-33904": {
                     "description": "The VNF or PNF Package **MUST** include documentation for each KPI, provide\nlower and upper limits.", 
                     "docname": "Chapter7/VNF-On-boarding-and-package-management", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33904", 
+                    "id_complete": "R-33904", 
+                    "id_parent": "R-33904", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33946", 
+                    "id_complete": "R-33946", 
+                    "id_parent": "R-33946", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-33955", 
+                    "id_complete": "R-33955", 
+                    "id_parent": "R-33955", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-34037", 
+                    "id_complete": "R-34037", 
+                    "id_parent": "R-34037", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-34055", 
+                    "id_complete": "R-34055", 
+                    "id_parent": "R-34055", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-343842", 
+                    "id_complete": "R-343842", 
+                    "id_parent": "R-343842", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-34484", 
+                    "id_complete": "R-34484", 
+                    "id_parent": "R-34484", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-34552", 
+                    "id_complete": "R-34552", 
+                    "id_parent": "R-34552", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-34660", 
+                    "id_complete": "R-34660", 
+                    "id_parent": "R-34660", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-348813", 
+                    "id_complete": "R-348813", 
+                    "id_parent": "R-348813", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-34957", 
+                    "id_complete": "R-34957", 
+                    "id_parent": "R-34957", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35291", 
+                    "id_complete": "R-35291", 
+                    "id_parent": "R-35291", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35401", 
+                    "id_complete": "R-35401", 
+                    "id_parent": "R-35401", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35414", 
+                    "id_complete": "R-35414", 
+                    "id_parent": "R-35414", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35532", 
+                    "id_complete": "R-35532", 
+                    "id_parent": "R-35532", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35666", 
+                    "id_complete": "R-35666", 
+                    "id_parent": "R-35666", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35735", 
+                    "id_complete": "R-35735", 
+                    "id_parent": "R-35735", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35851", 
+                    "id_complete": "R-35851", 
+                    "id_parent": "R-35851", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-35854": {
                     "description": "The VNF Descriptor (VNFD) provided by VNF vendor **MUST** comply with\nTOSCA/YAML based Service template for VNF descriptor specified in\nETSI NFV-SOL001.\n\n**Note**: As the ETSI NFV-SOL001 is work in progress the below tables\nsummarizes the TOSCA definitions agreed to be part of current version\nof NFV profile and that VNFD MUST comply with in ONAP Release 2+\nRequirements.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35854", 
+                    "id_complete": "R-35854", 
+                    "id_parent": "R-35854", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "General", 
                     "sections": [
                         "General", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-35960", 
+                    "id_complete": "R-35960", 
+                    "id_parent": "R-35960", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36280", 
+                    "id_complete": "R-36280", 
+                    "id_parent": "R-36280", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36542", 
+                    "id_complete": "R-36542", 
+                    "id_parent": "R-36542", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36582", 
+                    "id_complete": "R-36582", 
+                    "id_parent": "R-36582", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36687", 
+                    "id_complete": "R-36687", 
+                    "id_parent": "R-36687", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36772", 
+                    "id_complete": "R-36772", 
+                    "id_parent": "R-36772", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36792", 
+                    "id_complete": "R-36792", 
+                    "id_parent": "R-36792", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36843", 
+                    "id_complete": "R-36843", 
+                    "id_parent": "R-36843", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-36982", 
+                    "id_complete": "R-36982", 
+                    "id_parent": "R-36982", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-37028", 
+                    "id_complete": "R-37028", 
+                    "id_parent": "R-37028", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-37039", 
+                    "id_complete": "R-37039", 
+                    "id_parent": "R-37039", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-37437", 
+                    "id_complete": "R-37437", 
+                    "id_parent": "R-37437", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-37692", 
+                    "id_complete": "R-37692", 
+                    "id_parent": "R-37692", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-378131", 
+                    "id_complete": "R-378131", 
+                    "id_parent": "R-378131", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-37929", 
+                    "id_complete": "R-37929", 
+                    "id_parent": "R-37929", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-38001", 
+                    "id_complete": "R-38001", 
+                    "id_parent": "R-38001", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-38236", 
+                    "id_complete": "R-38236", 
+                    "id_parent": "R-38236", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-384337", 
+                    "id_complete": "R-384337", 
+                    "id_parent": "R-384337", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-38474", 
+                    "id_complete": "R-38474", 
+                    "id_parent": "R-38474", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39067", 
+                    "id_complete": "R-39067", 
+                    "id_parent": "R-39067", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39349", 
+                    "id_complete": "R-39349", 
+                    "id_parent": "R-39349", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39402", 
+                    "id_complete": "R-39402", 
+                    "id_parent": "R-39402", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39562", 
+                    "id_complete": "R-39562", 
+                    "id_parent": "R-39562", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39604", 
+                    "id_complete": "R-39604", 
+                    "id_parent": "R-39604", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39650", 
+                    "id_complete": "R-39650", 
+                    "id_parent": "R-39650", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-39841", 
+                    "id_complete": "R-39841", 
+                    "id_parent": "R-39841", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40293", 
+                    "id_complete": "R-40293", 
+                    "id_parent": "R-40293", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40499", 
+                    "id_complete": "R-40499", 
+                    "id_parent": "R-40499", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40518", 
+                    "id_complete": "R-40518", 
+                    "id_parent": "R-40518", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40551", 
+                    "id_complete": "R-40551", 
+                    "id_parent": "R-40551", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40813", 
+                    "id_complete": "R-40813", 
+                    "id_parent": "R-40813", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "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**", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40820", 
+                    "id_complete": "R-40820", 
+                    "id_parent": "R-40820", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40827", 
+                    "id_complete": "R-40827", 
+                    "id_parent": "R-40827", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-408813", 
+                    "id_complete": "R-408813", 
+                    "id_parent": "R-408813", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-40971", 
+                    "id_complete": "R-40971", 
+                    "id_parent": "R-40971", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41159", 
+                    "id_complete": "R-41159", 
+                    "id_parent": "R-41159", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41215", 
+                    "id_complete": "R-41215", 
+                    "id_parent": "R-41215", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41252", 
+                    "id_complete": "R-41252", 
+                    "id_parent": "R-41252", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41430", 
+                    "id_complete": "R-41430", 
+                    "id_parent": "R-41430", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41492", 
+                    "id_complete": "R-41492", 
+                    "id_parent": "R-41492", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41493", 
+                    "id_complete": "R-41493", 
+                    "id_parent": "R-41493", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41825", 
+                    "id_complete": "R-41825", 
+                    "id_parent": "R-41825", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41829", 
+                    "id_complete": "R-41829", 
+                    "id_parent": "R-41829", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41888", 
+                    "id_complete": "R-41888", 
+                    "id_parent": "R-41888", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-41994", 
+                    "id_complete": "R-41994", 
+                    "id_parent": "R-41994", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-42018", 
+                    "id_complete": "R-42018", 
+                    "id_parent": "R-42018", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-42140", 
+                    "id_complete": "R-42140", 
+                    "id_parent": "R-42140", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-42207", 
+                    "id_complete": "R-42207", 
+                    "id_parent": "R-42207", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-42366", 
+                    "id_complete": "R-42366", 
+                    "id_parent": "R-42366", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-42685", 
+                    "id_complete": "R-42685", 
+                    "id_parent": "R-42685", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-42874", 
+                    "id_complete": "R-42874", 
+                    "id_parent": "R-42874", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43253", 
+                    "id_complete": "R-43253", 
+                    "id_parent": "R-43253", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43327", 
+                    "id_complete": "R-43327", 
+                    "id_parent": "R-43327", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43332", 
+                    "id_complete": "R-43332", 
+                    "id_parent": "R-43332", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43353", 
+                    "id_complete": "R-43353", 
+                    "id_parent": "R-43353", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
+                "R-43387": {
+                    "description": "If the VNF or PNF is using Certificate Authentication, the\nVNF or PNF **MUST** support mutual TLS authentication and the Subject\nName in the end-entity certificate MUST be used according to\n`RFC5280 <https://tools.ietf.org/html/rfc5280>`_.\n\nNote: In mutual TLS authentication, the client (VNF or PNF) must\nauthenticate the server (DCAE) certificate and must provide its own\nX.509v3 end-entity certificate to the server for authentication.", 
+                    "docname": "Chapter7/Monitoring-And-Management", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-43387", 
+                    "id_complete": "R-43387", 
+                    "id_parent": "R-43387", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MUST", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "Security", 
+                    "sections": [
+                        "Security", 
+                        "Monitoring & Management Requirements", 
+                        "Monitoring & Management"
+                    ], 
+                    "status": null, 
+                    "tags": [], 
+                    "target": "VNF or PNF", 
+                    "test": "", 
+                    "test_case": "", 
+                    "test_file": "", 
+                    "title": "", 
+                    "title_from_content": "", 
+                    "type": "req", 
+                    "type_name": "Requirement", 
+                    "updated": "", 
+                    "validated_by": "", 
+                    "validation_mode": ""
+                }, 
                 "R-43413": {
                     "description": "A VNF **MUST** utilize a modular Heat Orchestration Template design to\nsupport scaling (growth/de-growth).", 
                     "docname": "Chapter5/Heat/ONAP Heat Orchestration Templates Overview", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43413", 
+                    "id_complete": "R-43413", 
+                    "id_parent": "R-43413", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43740", 
+                    "id_complete": "R-43740", 
+                    "id_parent": "R-43740", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43884", 
+                    "id_complete": "R-43884", 
+                    "id_parent": "R-43884", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-43958", 
+                    "id_complete": "R-43958", 
+                    "id_parent": "R-43958", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44001", 
+                    "id_complete": "R-44001", 
+                    "id_parent": "R-44001", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44013", 
+                    "id_complete": "R-44013", 
+                    "id_parent": "R-44013", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-440220", 
+                    "id_complete": "R-440220", 
+                    "id_parent": "R-440220", 
                     "impacts": "dcae, dmaap", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44125", 
+                    "id_complete": "R-44125", 
+                    "id_parent": "R-44125", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44271", 
+                    "id_complete": "R-44271", 
+                    "id_parent": "R-44271", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44281", 
+                    "id_complete": "R-44281", 
+                    "id_parent": "R-44281", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44290", 
+                    "id_complete": "R-44290", 
+                    "id_parent": "R-44290", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44318", 
+                    "id_complete": "R-44318", 
+                    "id_parent": "R-44318", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44569", 
+                    "id_complete": "R-44569", 
+                    "id_parent": "R-44569", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44723", 
+                    "id_complete": "R-44723", 
+                    "id_parent": "R-44723", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-44896", 
+                    "id_complete": "R-44896", 
+                    "id_parent": "R-44896", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-45188", 
+                    "id_complete": "R-45188", 
+                    "id_parent": "R-45188", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-45197", 
+                    "id_complete": "R-45197", 
+                    "id_parent": "R-45197", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-45602", 
+                    "id_complete": "R-45602", 
+                    "id_parent": "R-45602", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-45719", 
+                    "id_complete": "R-45719", 
+                    "id_parent": "R-45719", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-45856", 
+                    "id_complete": "R-45856", 
+                    "id_parent": "R-45856", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46096", 
+                    "id_complete": "R-46096", 
+                    "id_parent": "R-46096", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46119", 
+                    "id_complete": "R-46119", 
+                    "id_parent": "R-46119", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46128", 
+                    "id_complete": "R-46128", 
+                    "id_parent": "R-46128", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46290", 
+                    "id_complete": "R-46290", 
+                    "id_parent": "R-46290", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46461", 
+                    "id_complete": "R-46461", 
+                    "id_parent": "R-46461", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-465236", 
+                    "id_complete": "R-465236", 
+                    "id_parent": "R-465236", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                 }, 
                 "R-46527": {
                     "description": "A VNFD is a deployment template which describes a VNF in terms of\ndeployment and operational behavior requirements. It contains\nvirtualized resources (nodes) requirements as well as connectivity\nand interfaces requirements and **MUST** comply with info elements\nspecified in ETSI GS NFV-IFA 011. The main parts of the VNFD are\nthe following:\n\n  - VNF topology: it is modeled in a cloud agnostic way using virtualized\n    containers and their connectivity. Virtual Deployment Units (VDU)\n    describe the capabilities of the virtualized containers, such as\n    virtual CPU, RAM, disks; their connectivity is modeled with VDU\n    Connection Point Descriptors (VduCpd), Virtual Link Descriptors\n    (VnfVld) and VNF External Connection Point Descriptors\n    (VnfExternalCpd);\n\n  - VNF deployment aspects: they are described in one or more\n    deployment flavours, including configurable parameters, instantiation\n    levels, placement constraints (affinity / antiaffinity), minimum and\n    maximum VDU instance numbers. Horizontal scaling is modeled with\n    scaling aspects and the respective scaling levels in the deployment\n    flavours;\n\n**Note**: The deployment aspects (deployment flavour etc.) are postponed\nfor future ONAP releases.\n\n  - VNF lifecycle management (LCM) operations: describes the LCM operations\n    supported per deployment flavour, and their input parameters;\n    Note, thatthe actual LCM implementation resides in a different layer,\n    namely referring to additional template artifacts.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46527", 
+                    "id_complete": "R-46527", 
+                    "id_parent": "R-46527", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "General", 
                     "sections": [
                         "General", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46567", 
+                    "id_complete": "R-46567", 
+                    "id_parent": "R-46567", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46839", 
+                    "id_complete": "R-46839", 
+                    "id_parent": "R-46839", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46851", 
+                    "id_complete": "R-46851", 
+                    "id_parent": "R-46851", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46908", 
+                    "id_complete": "R-46908", 
+                    "id_parent": "R-46908", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46960", 
+                    "id_complete": "R-46960", 
+                    "id_parent": "R-46960", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46968", 
+                    "id_complete": "R-46968", 
+                    "id_parent": "R-46968", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-46986", 
+                    "id_complete": "R-46986", 
+                    "id_parent": "R-46986", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-47061", 
+                    "id_complete": "R-47061", 
+                    "id_parent": "R-47061", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-47068", 
+                    "id_complete": "R-47068", 
+                    "id_parent": "R-47068", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-470963", 
+                    "id_complete": "R-470963", 
+                    "id_parent": "R-470963", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-47204", 
+                    "id_complete": "R-47204", 
+                    "id_parent": "R-47204", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-47597", 
+                    "id_complete": "R-47597", 
+                    "id_parent": "R-47597", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-47849", 
+                    "id_complete": "R-47849", 
+                    "id_parent": "R-47849", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-47874", 
+                    "id_complete": "R-47874", 
+                    "id_parent": "R-47874", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-479386", 
+                    "id_complete": "R-479386", 
+                    "id_parent": "R-479386", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48067", 
+                    "id_complete": "R-48067", 
+                    "id_parent": "R-48067", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48080", 
+                    "id_complete": "R-48080", 
+                    "id_parent": "R-48080", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-481670", 
+                    "id_complete": "R-481670", 
+                    "id_parent": "R-481670", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48247", 
+                    "id_complete": "R-48247", 
+                    "id_parent": "R-48247", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48356", 
+                    "id_complete": "R-48356", 
+                    "id_parent": "R-48356", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48470", 
+                    "id_complete": "R-48470", 
+                    "id_parent": "R-48470", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-484843": {
                     "description": "The PNFD provided by a PNF vendor\u00a0**MUST**\u00a0comply with the following Data\nTypes as specified in ETSI NFV-SOL001 standard:\n\n  - tosca.datatypes.nfv.CpProtocolData\n\n  - tosca.datatypes.nfv.AddressData\n\n  - tosca.datatypes.nfv.L2AddressData\n\n  - tosca.datatypes.nfv.L3AddressData\n\n  - tosca.datatypes.nfv.LocationInfo\n\n  - tosca.datatypes.nfv.CivicAddressElement", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca PNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-484843", 
+                    "id_complete": "R-484843", 
+                    "id_parent": "R-484843", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "Data Types", 
                     "sections": [
                         "Data Types", 
-                        "TOSCA PNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA PNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48596", 
+                    "id_complete": "R-48596", 
+                    "id_parent": "R-48596", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48698", 
+                    "id_complete": "R-48698", 
+                    "id_parent": "R-48698", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48761", 
+                    "id_complete": "R-48761", 
+                    "id_parent": "R-48761", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48880", 
+                    "id_complete": "R-48880", 
+                    "id_parent": "R-48880", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48917", 
+                    "id_complete": "R-48917", 
+                    "id_parent": "R-48917", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-48987", 
+                    "id_complete": "R-48987", 
+                    "id_parent": "R-48987", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49036", 
+                    "id_complete": "R-49036", 
+                    "id_parent": "R-49036", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-49109": {
-                    "description": "The VNF **MUST** support HTTP/S using TLS v1.2 or higher\nwith strong cryptographic ciphers.", 
+                    "description": "The VNF or PNF **MUST** support HTTPS using TLS v1.2 or higher\nwith strong cryptographic ciphers.", 
                     "docname": "Chapter4/Security", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49109", 
+                    "id_complete": "R-49109", 
+                    "id_parent": "R-49109", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "VNF", 
+                    "target": "VNF or PNF", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "casablanca", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49145", 
+                    "id_complete": "R-49145", 
+                    "id_parent": "R-49145", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49224", 
+                    "id_complete": "R-49224", 
+                    "id_parent": "R-49224", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49308", 
+                    "id_complete": "R-49308", 
+                    "id_parent": "R-49308", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49396", 
+                    "id_complete": "R-49396", 
+                    "id_parent": "R-49396", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49466", 
+                    "id_complete": "R-49466", 
+                    "id_parent": "R-49466", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49751", 
+                    "id_complete": "R-49751", 
+                    "id_parent": "R-49751", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-49911", 
+                    "id_complete": "R-49911", 
+                    "id_parent": "R-49911", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-50011", 
+                    "id_complete": "R-50011", 
+                    "id_parent": "R-50011", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-50252", 
+                    "id_complete": "R-50252", 
+                    "id_parent": "R-50252", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-50436", 
+                    "id_complete": "R-50436", 
+                    "id_parent": "R-50436", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-50468", 
+                    "id_complete": "R-50468", 
+                    "id_parent": "R-50468", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-506221": {
                     "description": "The VNF or PNF TOSCA CSAR file **MUST** be a zip file with .csar extension.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-506221", 
+                    "id_complete": "R-506221", 
+                    "id_parent": "R-506221", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF Package Structure and Format", 
                     "sections": [
                         "VNF Package Structure and Format", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-50816", 
+                    "id_complete": "R-50816", 
+                    "id_parent": "R-50816", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-511776", 
+                    "id_complete": "R-511776", 
+                    "id_parent": "R-511776", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                 }, 
                 "R-51347": {
                     "description": "The VNF or PNF CSAR package **MUST** be arranged as a CSAR archive as\nspecified in TOSCA Simple Profile in YAML 1.2.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-51347", 
+                    "id_complete": "R-51347", 
+                    "id_parent": "R-51347", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "VNF Package Structure and Format", 
                     "sections": [
                         "VNF Package Structure and Format", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-51430", 
+                    "id_complete": "R-51430", 
+                    "id_parent": "R-51430", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-51442", 
+                    "id_complete": "R-51442", 
+                    "id_parent": "R-51442", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-52060", 
+                    "id_complete": "R-52060", 
+                    "id_parent": "R-52060", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-520802", 
+                    "id_complete": "R-520802", 
+                    "id_parent": "R-520802", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-52425", 
+                    "id_complete": "R-52425", 
+                    "id_parent": "R-52425", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-52499", 
+                    "id_complete": "R-52499", 
+                    "id_parent": "R-52499", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-52753", 
+                    "id_complete": "R-52753", 
+                    "id_parent": "R-52753", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-52870", 
+                    "id_complete": "R-52870", 
+                    "id_parent": "R-52870", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-528866", 
+                    "id_complete": "R-528866", 
+                    "id_parent": "R-528866", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-53015", 
+                    "id_complete": "R-53015", 
+                    "id_parent": "R-53015", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-53310", 
+                    "id_complete": "R-53310", 
+                    "id_parent": "R-53310", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-53317", 
+                    "id_complete": "R-53317", 
+                    "id_parent": "R-53317", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-53433", 
+                    "id_complete": "R-53433", 
+                    "id_parent": "R-53433", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-535009": {
                     "description": "The PNFD provided by a PNF vendor\u00a0**MUST**\u00a0comply with the following Node\nTypes as specified in ETSI NFV-SOL001 standard:\n\n  - tosca.nodes.nfv.PNF\n\n  - tosca.nodes.nfv.PnfExtCp\n\n  - tosca.nodes.nfv.Cp", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca PNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-535009", 
+                    "id_complete": "R-535009", 
+                    "id_parent": "R-535009", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "Node Types", 
                     "sections": [
                         "Node Types", 
-                        "TOSCA PNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA PNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-53598", 
+                    "id_complete": "R-53598", 
+                    "id_parent": "R-53598", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-53952", 
+                    "id_complete": "R-53952", 
+                    "id_parent": "R-53952", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54171", 
+                    "id_complete": "R-54171", 
+                    "id_parent": "R-54171", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54190", 
+                    "id_complete": "R-54190", 
+                    "id_parent": "R-54190", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54340", 
+                    "id_complete": "R-54340", 
+                    "id_parent": "R-54340", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-54356": {
                     "description": "The below table includes the data types used by NFV node and is based\non TOSCA/YAML constructs specified in draft GS NFV-SOL 001. The node\ndata definitions/attributes used in VNFD **MUST** comply with the below\ntable.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54356", 
+                    "id_complete": "R-54356", 
+                    "id_parent": "R-54356", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "Data Types", 
                     "sections": [
                         "Data Types", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54373", 
+                    "id_complete": "R-54373", 
+                    "id_parent": "R-54373", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54430", 
+                    "id_complete": "R-54430", 
+                    "id_parent": "R-54430", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54517", 
+                    "id_complete": "R-54517", 
+                    "id_parent": "R-54517", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54520", 
+                    "id_complete": "R-54520", 
+                    "id_parent": "R-54520", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54816", 
+                    "id_complete": "R-54816", 
+                    "id_parent": "R-54816", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-54876": {
                     "description": "The below table describes the data types used for LCM configuration\nand is based on TOSCA constructs specified in draft GS NFV-SOL 001.\nThe LCM configuration data elements used in VNFD **MUST** comply\nwith the below table.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54876", 
+                    "id_complete": "R-54876", 
+                    "id_parent": "R-54876", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "Data Types", 
                     "sections": [
                         "Data Types", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-54930", 
+                    "id_complete": "R-54930", 
+                    "id_parent": "R-54930", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-55218", 
+                    "id_complete": "R-55218", 
+                    "id_parent": "R-55218", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-55306", 
+                    "id_complete": "R-55306", 
+                    "id_parent": "R-55306", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-55345", 
+                    "id_complete": "R-55345", 
+                    "id_parent": "R-55345", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-55478", 
+                    "id_complete": "R-55478", 
+                    "id_parent": "R-55478", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
+                "R-55634": {
+                    "description": "If VNF or PNF is using Basic Authentication, then the VNF or PNF\n**MUST** be in compliance with\n`RFC7617 <https://tools.ietf.org/html/rfc7617>`_ for authenticating HTTPS\nconnections to the DCAE VES Event Listener.", 
+                    "docname": "Chapter7/Monitoring-And-Management", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-55634", 
+                    "id_complete": "R-55634", 
+                    "id_parent": "R-55634", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MUST", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "Security", 
+                    "sections": [
+                        "Security", 
+                        "Monitoring & Management Requirements", 
+                        "Monitoring & Management"
+                    ], 
+                    "status": null, 
+                    "tags": [], 
+                    "target": "VNF or PNF", 
+                    "test": "", 
+                    "test_case": "", 
+                    "test_file": "", 
+                    "title": "", 
+                    "title_from_content": "", 
+                    "type": "req", 
+                    "type_name": "Requirement", 
+                    "updated": "", 
+                    "validated_by": "", 
+                    "validation_mode": ""
+                }, 
                 "R-55802": {
                     "description": "The VNF Package **MUST** include VM requirements via a Heat\ntemplate that provides the necessary data for scaling/growth VM\nspecifications.\n\nNote: Must comply with the *Heat requirements in 5.b*.", 
                     "docname": "Chapter7/VNF-On-boarding-and-package-management", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-55802", 
+                    "id_complete": "R-55802", 
+                    "id_parent": "R-55802", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56183", 
+                    "id_complete": "R-56183", 
+                    "id_parent": "R-56183", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56218", 
+                    "id_complete": "R-56218", 
+                    "id_parent": "R-56218", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56287", 
+                    "id_complete": "R-56287", 
+                    "id_parent": "R-56287", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56385", 
+                    "id_complete": "R-56385", 
+                    "id_parent": "R-56385", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56438", 
+                    "id_complete": "R-56438", 
+                    "id_parent": "R-56438", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56718", 
+                    "id_complete": "R-56718", 
+                    "id_parent": "R-56718", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56721", 
+                    "id_complete": "R-56721", 
+                    "id_parent": "R-56721", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56793", 
+                    "id_complete": "R-56793", 
+                    "id_parent": "R-56793", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56815", 
+                    "id_complete": "R-56815", 
+                    "id_parent": "R-56815", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56904", 
+                    "id_complete": "R-56904", 
+                    "id_parent": "R-56904", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-56920", 
+                    "id_complete": "R-56920", 
+                    "id_parent": "R-56920", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-570134", 
+                    "id_complete": "R-570134", 
+                    "id_parent": "R-570134", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                 }, 
                 "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", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-57019", 
+                    "id_complete": "R-57019", 
+                    "id_parent": "R-57019", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-57282", 
+                    "id_complete": "R-57282", 
+                    "id_parent": "R-57282", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-57424", 
+                    "id_complete": "R-57424", 
+                    "id_parent": "R-57424", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-57617", 
+                    "id_complete": "R-57617", 
+                    "id_parent": "R-57617", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-57855", 
+                    "id_complete": "R-57855", 
+                    "id_parent": "R-57855", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
-                "R-579051": {
-                    "description": "The PNF **MAY** support a HTTP connection to the DCAE VES Event Listener.\n\nNote: HTTP is allowed but not recommended.", 
-                    "docname": "Chapter7/PNF-Plug-and-Play", 
-                    "full_title": "", 
-                    "hide_links": "", 
-                    "id": "R-579051", 
-                    "impacts": "", 
-                    "introduced": "casablanca", 
-                    "is_need": true, 
-                    "is_part": false, 
-                    "keyword": "MAY", 
-                    "links": [], 
-                    "notes": "", 
-                    "parts": {}, 
-                    "section_name": "PNF Plug and Play", 
-                    "sections": [
-                        "PNF Plug and Play", 
-                        "PNF Plug and Play"
-                    ], 
-                    "status": null, 
-                    "tags": [], 
-                    "target": "PNF", 
-                    "test": "", 
-                    "test_case": "", 
-                    "test_file": "", 
-                    "title": "", 
-                    "title_from_content": "", 
-                    "type": "req", 
-                    "type_name": "Requirement", 
-                    "updated": "", 
-                    "validated_by": "", 
-                    "validation_mode": ""
-                }, 
                 "R-581188": {
                     "description": "A failed authentication attempt **MUST NOT** identify the reason for the\nfailure to the user, only that the authentication failed.", 
                     "docname": "Chapter4/Security", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-581188", 
+                    "id_complete": "R-581188", 
+                    "id_parent": "R-581188", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58301", 
+                    "id_complete": "R-58301", 
+                    "id_parent": "R-58301", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58358", 
+                    "id_complete": "R-58358", 
+                    "id_parent": "R-58358", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58370", 
+                    "id_complete": "R-58370", 
+                    "id_parent": "R-58370", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58421", 
+                    "id_complete": "R-58421", 
+                    "id_parent": "R-58421", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58424", 
+                    "id_complete": "R-58424", 
+                    "id_parent": "R-58424", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58670", 
+                    "id_complete": "R-58670", 
+                    "id_parent": "R-58670", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58775", 
+                    "id_complete": "R-58775", 
+                    "id_parent": "R-58775", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-589037", 
+                    "id_complete": "R-589037", 
+                    "id_parent": "R-589037", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-58964", 
+                    "id_complete": "R-58964", 
+                    "id_parent": "R-58964", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-59391", 
+                    "id_complete": "R-59391", 
+                    "id_parent": "R-59391", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-59434", 
+                    "id_complete": "R-59434", 
+                    "id_parent": "R-59434", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-59482", 
+                    "id_complete": "R-59482", 
+                    "id_parent": "R-59482", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-59568", 
+                    "id_complete": "R-59568", 
+                    "id_parent": "R-59568", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-596064": {
                     "description": "The PNFD provided by a PNF vendor **MUST** comply with the following Policy\nTypes as specified in ETSI NFV-SOL001 standard:\n\n  - tosca.datatypes.nfv.SecurityGroupRule", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca PNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-596064", 
+                    "id_complete": "R-596064", 
+                    "id_parent": "R-596064", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "Policy Types", 
                     "sections": [
                         "Policy Types", 
-                        "TOSCA PNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA PNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-59610", 
+                    "id_complete": "R-59610", 
+                    "id_parent": "R-59610", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-59930", 
+                    "id_complete": "R-59930", 
+                    "id_parent": "R-59930", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-599443", 
+                    "id_complete": "R-599443", 
+                    "id_parent": "R-599443", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-60011", 
+                    "id_complete": "R-60011", 
+                    "id_parent": "R-60011", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-60106", 
+                    "id_complete": "R-60106", 
+                    "id_parent": "R-60106", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-60656", 
+                    "id_complete": "R-60656", 
+                    "id_parent": "R-60656", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-61001", 
+                    "id_complete": "R-61001", 
+                    "id_parent": "R-61001", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validated_by": "", 
                     "validation_mode": "none"
                 }, 
+                "R-610010": {
+                    "description": "A VNF's Heat Orchestration Template's Base Module **MAY** declare zero, one,\nor more than one ``OS::Nova::Server`` resource.", 
+                    "docname": "Chapter5/Heat/ONAP Heat VNF Modularity", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-610010", 
+                    "id_complete": "R-610010", 
+                    "id_parent": "R-610010", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MAY", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "ONAP Heat VNF Modularity", 
+                    "sections": [
+                        "ONAP Heat VNF Modularity"
+                    ], 
+                    "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-610020": {
+                    "description": "If a VNF's Heat Orchestration Template's Base Module contains two or more\n``OS::Nova::Server`` resources, the ``OS::Nova::Server`` resources **MAY**\ndefine the same ``{vm-type}`` (as defined in R-01455) or **MAY**\ndefine different ``{vm-type}``.\n\nNote that\n\n- there is no constraint on the number of unique ``{vm-type}`` defined in\n  the base module.\n- there is no constraint on the number of ``OS::Nova::Server`` resources\n  that define the same ``{vm-type}`` in the base module.", 
+                    "docname": "Chapter5/Heat/ONAP Heat VNF Modularity", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-610020", 
+                    "id_complete": "R-610020", 
+                    "id_parent": "R-610020", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MAY", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "ONAP Heat VNF Modularity", 
+                    "sections": [
+                        "ONAP Heat VNF Modularity"
+                    ], 
+                    "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-610030": {
+                    "description": "A VNF's Heat Orchestration Template's Incremental Module **MUST**\ndeclare one or more ``OS::Nova::Server`` resources.", 
+                    "docname": "Chapter5/Heat/ONAP Heat VNF Modularity", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-610030", 
+                    "id_complete": "R-610030", 
+                    "id_parent": "R-610030", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MUST", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "ONAP Heat VNF Modularity", 
+                    "sections": [
+                        "ONAP Heat VNF Modularity"
+                    ], 
+                    "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-610040": {
+                    "description": "If a VNF\u2019s Heat Orchestration Template\u2019s Incremental Module contains two or\nmore ``OS::Nova::Server`` resources, the ``OS::Nova::Server`` resources\n**MAY** define the same ``{vm-type}`` (as defined in R-01455) or **MAY**\ndefine different ``{vm-type}``.\n\nNote that\n\n- there is no constraint on the number of unique ``{vm-type}`` defined in\n  the incremental module.\n- there is no constraint on the number of ``OS::Nova::Server`` resources\n  that define the same ``{vm-type}`` in the incremental module.", 
+                    "docname": "Chapter5/Heat/ONAP Heat VNF Modularity", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-610040", 
+                    "id_complete": "R-610040", 
+                    "id_parent": "R-610040", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MAY", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "ONAP Heat VNF Modularity", 
+                    "sections": [
+                        "ONAP Heat VNF Modularity"
+                    ], 
+                    "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-610050": {
+                    "description": "A VNF\u2019s Heat Orchestration Template's ``OS::Nova::Server`` resource unique\n``{vm-type}`` (as defined in R-01455) **MAY** exist in the VNF's\nHeat Orchestration Template's Base Module and/or one or more of the VNF's\nHeat Orchestration Template's Incremental Modules.", 
+                    "docname": "Chapter5/Heat/ONAP Heat VNF Modularity", 
+                    "full_title": "", 
+                    "hide_links": "", 
+                    "id": "R-610050", 
+                    "id_complete": "R-610050", 
+                    "id_parent": "R-610050", 
+                    "impacts": "", 
+                    "introduced": "el alto", 
+                    "is_need": true, 
+                    "is_part": false, 
+                    "keyword": "MAY", 
+                    "links": [], 
+                    "notes": "", 
+                    "parts": {}, 
+                    "section_name": "ONAP Heat VNF Modularity", 
+                    "sections": [
+                        "ONAP Heat VNF Modularity"
+                    ], 
+                    "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-61354": {
                     "description": "The VNF **MUST** provide a mechanism (e.g., access control list) to\npermit and/or restrict access to services on the VNF by source,\ndestination, protocol, and/or port.", 
                     "docname": "Chapter4/Security", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-61354", 
+                    "id_complete": "R-61354", 
+                    "id_parent": "R-61354", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62170", 
+                    "id_complete": "R-62170", 
+                    "id_parent": "R-62170", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62187", 
+                    "id_complete": "R-62187", 
+                    "id_parent": "R-62187", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62428", 
+                    "id_complete": "R-62428", 
+                    "id_parent": "R-62428", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62468", 
+                    "id_complete": "R-62468", 
+                    "id_parent": "R-62468", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62498", 
+                    "id_complete": "R-62498", 
+                    "id_parent": "R-62498", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62590", 
+                    "id_complete": "R-62590", 
+                    "id_parent": "R-62590", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62802", 
+                    "id_complete": "R-62802", 
+                    "id_parent": "R-62802", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-629534", 
+                    "id_complete": "R-629534", 
+                    "id_parent": "R-629534", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-62983", 
+                    "id_complete": "R-62983", 
+                    "id_parent": "R-62983", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63137", 
+                    "id_complete": "R-63137", 
+                    "id_parent": "R-63137", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63229", 
+                    "id_complete": "R-63229", 
+                    "id_parent": "R-63229", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63330", 
+                    "id_complete": "R-63330", 
+                    "id_parent": "R-63330", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63473", 
+                    "id_complete": "R-63473", 
+                    "id_parent": "R-63473", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-638216", 
+                    "id_complete": "R-638216", 
+                    "id_parent": "R-638216", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-638682", 
+                    "id_complete": "R-638682", 
+                    "id_parent": "R-638682", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63935", 
+                    "id_complete": "R-63935", 
+                    "id_parent": "R-63935", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63953", 
+                    "id_complete": "R-63953", 
+                    "id_parent": "R-63953", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-63956", 
+                    "id_complete": "R-63956", 
+                    "id_parent": "R-63956", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-64064": {
                     "description": "The PNFD provided by a PNF vendor **MUST** comply with the following\nRelationship Types as specified in ETSI NFV-SOL001 standard:\n\n  - tosca.datatypes.nfv.VirtualLinksTo", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca PNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-64064", 
+                    "id_complete": "R-64064", 
+                    "id_parent": "R-64064", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "Relationship Types", 
                     "sections": [
                         "Relationship Types", 
-                        "TOSCA PNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA PNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-64445", 
+                    "id_complete": "R-64445", 
+                    "id_parent": "R-64445", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-64713", 
+                    "id_complete": "R-64713", 
+                    "id_parent": "R-64713", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-64768", 
+                    "id_complete": "R-64768", 
+                    "id_parent": "R-64768", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65134", 
+                    "id_complete": "R-65134", 
+                    "id_parent": "R-65134", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-65486": {
                     "description": "The VNFD **MUST** comply with ETSI GS NFV-SOL001 specification endorsing\nthe above mentioned NFV Profile and maintaining the gaps with the\nrequirements specified in ETSI GS NFV-IFA011 standard.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65486", 
+                    "id_complete": "R-65486", 
+                    "id_parent": "R-65486", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "General", 
                     "sections": [
                         "General", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65515", 
+                    "id_complete": "R-65515", 
+                    "id_parent": "R-65515", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65516", 
+                    "id_complete": "R-65516", 
+                    "id_parent": "R-65516", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65618", 
+                    "id_complete": "R-65618", 
+                    "id_parent": "R-65618", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65641", 
+                    "id_complete": "R-65641", 
+                    "id_parent": "R-65641", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-65755", 
+                    "id_complete": "R-65755", 
+                    "id_parent": "R-65755", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-659655", 
+                    "id_complete": "R-659655", 
+                    "id_parent": "R-659655", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-66070", 
+                    "id_complete": "R-66070", 
+                    "id_parent": "R-66070", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-663631", 
+                    "id_complete": "R-663631", 
+                    "id_parent": "R-663631", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-66793", 
+                    "id_complete": "R-66793", 
+                    "id_parent": "R-66793", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67114", 
+                    "id_complete": "R-67114", 
+                    "id_parent": "R-67114", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67124", 
+                    "id_complete": "R-67124", 
+                    "id_parent": "R-67124", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67231", 
+                    "id_complete": "R-67231", 
+                    "id_parent": "R-67231", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67386", 
+                    "id_complete": "R-67386", 
+                    "id_parent": "R-67386", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67597", 
+                    "id_complete": "R-67597", 
+                    "id_parent": "R-67597", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67709", 
+                    "id_complete": "R-67709", 
+                    "id_parent": "R-67709", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67793", 
+                    "id_complete": "R-67793", 
+                    "id_parent": "R-67793", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-67895": {
                     "description": "The VNFD provided by VNF vendor may use the below described TOSCA\ncapabilities. An on-boarding entity (ONAP SDC) **MUST** support them.\n\n  **tosca.capabilities.nfv.VirtualBindable**\n\n    A node type that includes the VirtualBindable capability indicates\n    that it can be pointed by **tosca.relationships.nfv.VirtualBindsTo**\n    relationship type.\n\n  **tosca.capabilities.nfv.VirtualLinkable**\n\n    A node type that includes the VirtualLinkable capability indicates\n    that it can be pointed by **tosca.relationships.nfv.VirtualLinksTo**\n    relationship.\n\n  **tosca.capabilities.nfv.ExtVirtualLinkable**\n\n    A node type that includes the ExtVirtualLinkable capability\n    indicates that it can be pointed by\n    **tosca.relationships.nfv.VirtualLinksTo** relationship.\n\n  **Note**: This capability type is used in Casablanca how it does\n  not exist in the last SOL001 draft\n\n  **tosca.capabilities.nfv.VirtualCompute** and\n  **tosca.capabilities.nfv.VirtualStorage** includes flavours of VDU", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67895", 
+                    "id_complete": "R-67895", 
+                    "id_parent": "R-67895", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "Capability Types", 
                     "sections": [
                         "Capability Types", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-67918", 
+                    "id_complete": "R-67918", 
+                    "id_parent": "R-67918", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68023", 
+                    "id_complete": "R-68023", 
+                    "id_parent": "R-68023", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68122", 
+                    "id_complete": "R-68122", 
+                    "id_parent": "R-68122", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68165", 
+                    "id_complete": "R-68165", 
+                    "id_parent": "R-68165", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-681859", 
+                    "id_complete": "R-681859", 
+                    "id_parent": "R-681859", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68198", 
+                    "id_complete": "R-68198", 
+                    "id_parent": "R-68198", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68200", 
+                    "id_complete": "R-68200", 
+                    "id_parent": "R-68200", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68520", 
+                    "id_complete": "R-68520", 
+                    "id_parent": "R-68520", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-686466", 
+                    "id_complete": "R-686466", 
+                    "id_parent": "R-686466", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-68990", 
+                    "id_complete": "R-68990", 
+                    "id_parent": "R-68990", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69014", 
+                    "id_complete": "R-69014", 
+                    "id_parent": "R-69014", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69431", 
+                    "id_complete": "R-69431", 
+                    "id_parent": "R-69431", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69565", 
+                    "id_complete": "R-69565", 
+                    "id_parent": "R-69565", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69588", 
+                    "id_complete": "R-69588", 
+                    "id_parent": "R-69588", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69610", 
+                    "id_complete": "R-69610", 
+                    "id_parent": "R-69610", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69634", 
+                    "id_complete": "R-69634", 
+                    "id_parent": "R-69634", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69649", 
+                    "id_complete": "R-69649", 
+                    "id_parent": "R-69649", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69663", 
+                    "id_complete": "R-69663", 
+                    "id_parent": "R-69663", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-697654", 
+                    "id_complete": "R-697654", 
+                    "id_parent": "R-697654", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-69877", 
+                    "id_complete": "R-69877", 
+                    "id_parent": "R-69877", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-70013", 
+                    "id_complete": "R-70013", 
+                    "id_parent": "R-70013", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-70266", 
+                    "id_complete": "R-70266", 
+                    "id_parent": "R-70266", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-70276", 
+                    "id_complete": "R-70276", 
+                    "id_parent": "R-70276", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-703767", 
+                    "id_complete": "R-703767", 
+                    "id_parent": "R-703767", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-70496", 
+                    "id_complete": "R-70496", 
+                    "id_parent": "R-70496", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-707977", 
+                    "id_complete": "R-707977", 
+                    "id_parent": "R-707977", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-708564", 
+                    "id_complete": "R-708564", 
+                    "id_parent": "R-708564", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-70933", 
+                    "id_complete": "R-70933", 
+                    "id_parent": "R-70933", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-70964", 
+                    "id_complete": "R-70964", 
+                    "id_parent": "R-70964", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-71152", 
+                    "id_complete": "R-71152", 
+                    "id_parent": "R-71152", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-71493", 
+                    "id_complete": "R-71493", 
+                    "id_parent": "R-71493", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-71577", 
+                    "id_complete": "R-71577", 
+                    "id_parent": "R-71577", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-71699", 
+                    "id_complete": "R-71699", 
+                    "id_parent": "R-71699", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-717227", 
+                    "id_complete": "R-717227", 
+                    "id_parent": "R-717227", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-71787", 
+                    "id_complete": "R-71787", 
+                    "id_parent": "R-71787", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-71842", 
+                    "id_complete": "R-71842", 
+                    "id_parent": "R-71842", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-72184", 
+                    "id_complete": "R-72184", 
+                    "id_parent": "R-72184", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-72483", 
+                    "id_complete": "R-72483", 
+                    "id_parent": "R-72483", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-72871", 
+                    "id_complete": "R-72871", 
+                    "id_parent": "R-72871", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73067", 
+                    "id_complete": "R-73067", 
+                    "id_parent": "R-73067", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73213", 
+                    "id_complete": "R-73213", 
+                    "id_parent": "R-73213", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73223", 
+                    "id_complete": "R-73223", 
+                    "id_parent": "R-73223", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73285", 
+                    "id_complete": "R-73285", 
+                    "id_parent": "R-73285", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73364", 
+                    "id_complete": "R-73364", 
+                    "id_parent": "R-73364", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73459", 
+                    "id_complete": "R-73459", 
+                    "id_parent": "R-73459", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73468", 
+                    "id_complete": "R-73468", 
+                    "id_parent": "R-73468", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73560", 
+                    "id_complete": "R-73560", 
+                    "id_parent": "R-73560", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-73583", 
+                    "id_complete": "R-73583", 
+                    "id_parent": "R-73583", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-74304", 
+                    "id_complete": "R-74304", 
+                    "id_parent": "R-74304", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-74481", 
+                    "id_complete": "R-74481", 
+                    "id_parent": "R-74481", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-74712", 
+                    "id_complete": "R-74712", 
+                    "id_parent": "R-74712", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-74958", 
+                    "id_complete": "R-74958", 
+                    "id_parent": "R-74958", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-74978", 
+                    "id_complete": "R-74978", 
+                    "id_parent": "R-74978", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-75041", 
+                    "id_complete": "R-75041", 
+                    "id_parent": "R-75041", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-75141", 
+                    "id_complete": "R-75141", 
+                    "id_parent": "R-75141", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-75343", 
+                    "id_complete": "R-75343", 
+                    "id_parent": "R-75343", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-75608", 
+                    "id_complete": "R-75608", 
+                    "id_parent": "R-75608", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-756950", 
+                    "id_complete": "R-756950", 
+                    "id_parent": "R-756950", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-75850", 
+                    "id_complete": "R-75850", 
+                    "id_parent": "R-75850", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-75943", 
+                    "id_complete": "R-75943", 
+                    "id_parent": "R-75943", 
                     "impacts": "dcae, dmaap", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76014", 
+                    "id_complete": "R-76014", 
+                    "id_parent": "R-76014", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76057", 
+                    "id_complete": "R-76057", 
+                    "id_parent": "R-76057", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76160", 
+                    "id_complete": "R-76160", 
+                    "id_parent": "R-76160", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": "static"
                 }, 
                 "R-763774": {
-                    "description": "The PNF **MUST** support a HTTPS connection to the DCAE VES Event\nListener.", 
+                    "description": "The VNF or PNF **MUST** support a HTTPS connection to the DCAE\nVES Event Listener.", 
                     "docname": "Chapter7/PNF-Plug-and-Play", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-763774", 
+                    "id_complete": "R-763774", 
+                    "id_parent": "R-763774", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     ], 
                     "status": null, 
                     "tags": [], 
-                    "target": "PNF", 
+                    "target": "VNF or PNF", 
                     "test": "", 
                     "test_case": "", 
                     "test_file": "", 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76449", 
+                    "id_complete": "R-76449", 
+                    "id_parent": "R-76449", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76682", 
+                    "id_complete": "R-76682", 
+                    "id_parent": "R-76682", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76718", 
+                    "id_complete": "R-76718", 
+                    "id_parent": "R-76718", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-76901", 
+                    "id_complete": "R-76901", 
+                    "id_parent": "R-76901", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-77334", 
+                    "id_complete": "R-77334", 
+                    "id_parent": "R-77334", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-77667", 
+                    "id_complete": "R-77667", 
+                    "id_parent": "R-77667", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-78010", 
+                    "id_complete": "R-78010", 
+                    "id_parent": "R-78010", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-78116", 
+                    "id_complete": "R-78116", 
+                    "id_parent": "R-78116", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-78282", 
+                    "id_complete": "R-78282", 
+                    "id_parent": "R-78282", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-78380", 
+                    "id_complete": "R-78380", 
+                    "id_parent": "R-78380", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-78569", 
+                    "id_complete": "R-78569", 
+                    "id_parent": "R-78569", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-787965": {
                     "description": "If the VNF or PNF CSAR Package utilizes Option 2 for package security, then\nthe complete CSAR file **MUST** be digitally signed with the VNF or PNF\nprovider private key. The VNF or PNF provider delivers one zip file\nconsisting of the CSAR file, a signature file and a certificate file that\nincludes the VNF or PNF provider public key. The certificate may also be\nincluded in the signature container, if the signature format allows that.\nThe VNF or PNF provider creates a zip file consisting of the CSAR file with\n.csar extension, signature and certificate files. The signature and\ncertificate files must be siblings of the CSAR file with extensions .cms\nand .cert respectively.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-787965", 
+                    "id_complete": "R-787965", 
+                    "id_parent": "R-787965", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF or PNF Package Authenticity and Integrity", 
                     "sections": [
                         "VNF or PNF Package Authenticity and Integrity", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-79107", 
+                    "id_complete": "R-79107", 
+                    "id_parent": "R-79107", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-79224", 
+                    "id_complete": "R-79224", 
+                    "id_parent": "R-79224", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-793716", 
+                    "id_complete": "R-793716", 
+                    "id_parent": "R-793716", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-79412", 
+                    "id_complete": "R-79412", 
+                    "id_parent": "R-79412", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "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", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-795126", 
+                    "id_complete": "R-795126", 
+                    "id_parent": "R-795126", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "section_name": "VNF Package Contents", 
                     "sections": [
                         "VNF Package Contents", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-79817", 
+                    "id_complete": "R-79817", 
+                    "id_parent": "R-79817", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-798933", 
+                    "id_complete": "R-798933", 
+                    "id_parent": "R-798933", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-79952", 
+                    "id_complete": "R-79952", 
+                    "id_parent": "R-79952", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-80070", 
+                    "id_complete": "R-80070", 
+                    "id_parent": "R-80070", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-80335", 
+                    "id_complete": "R-80335", 
+                    "id_parent": "R-80335", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-80374", 
+                    "id_complete": "R-80374", 
+                    "id_parent": "R-80374", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-805572", 
+                    "id_complete": "R-805572", 
+                    "id_parent": "R-805572", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-807129", 
+                    "id_complete": "R-807129", 
+                    "id_parent": "R-807129", 
                     "impacts": "dcae, dmaap", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-80829", 
+                    "id_complete": "R-80829", 
+                    "id_parent": "R-80829", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-80898", 
+                    "id_complete": "R-80898", 
+                    "id_parent": "R-80898", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-809261", 
+                    "id_complete": "R-809261", 
+                    "id_parent": "R-809261", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-81147", 
+                    "id_complete": "R-81147", 
+                    "id_parent": "R-81147", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-81214", 
+                    "id_complete": "R-81214", 
+                    "id_parent": "R-81214", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-81339", 
+                    "id_complete": "R-81339", 
+                    "id_parent": "R-81339", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-814377", 
+                    "id_complete": "R-814377", 
+                    "id_parent": "R-814377", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-816745", 
+                    "id_complete": "R-816745", 
+                    "id_parent": "R-816745", 
                     "impacts": "DCAE,Documentation,Integration,SDC", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-81725", 
+                    "id_complete": "R-81725", 
+                    "id_parent": "R-81725", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-81777", 
+                    "id_complete": "R-81777", 
+                    "id_parent": "R-81777", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-81979", 
+                    "id_complete": "R-81979", 
+                    "id_parent": "R-81979", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82018", 
+                    "id_complete": "R-82018", 
+                    "id_parent": "R-82018", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82115", 
+                    "id_complete": "R-82115", 
+                    "id_parent": "R-82115", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82134", 
+                    "id_complete": "R-82134", 
+                    "id_parent": "R-82134", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-821473", 
+                    "id_complete": "R-821473", 
+                    "id_parent": "R-821473", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-821839", 
+                    "id_complete": "R-821839", 
+                    "id_parent": "R-821839", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82223", 
+                    "id_complete": "R-82223", 
+                    "id_parent": "R-82223", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82551", 
+                    "id_complete": "R-82551", 
+                    "id_parent": "R-82551", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82732", 
+                    "id_complete": "R-82732", 
+                    "id_parent": "R-82732", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-82811", 
+                    "id_complete": "R-82811", 
+                    "id_parent": "R-82811", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83146", 
+                    "id_complete": "R-83146", 
+                    "id_parent": "R-83146", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83227", 
+                    "id_complete": "R-83227", 
+                    "id_parent": "R-83227", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83412", 
+                    "id_complete": "R-83412", 
+                    "id_parent": "R-83412", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83500", 
+                    "id_complete": "R-83500", 
+                    "id_parent": "R-83500", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83677", 
+                    "id_complete": "R-83677", 
+                    "id_parent": "R-83677", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83706", 
+                    "id_complete": "R-83706", 
+                    "id_parent": "R-83706", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83790", 
+                    "id_complete": "R-83790", 
+                    "id_parent": "R-83790", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-83873", 
+                    "id_complete": "R-83873", 
+                    "id_parent": "R-83873", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84123", 
+                    "id_complete": "R-84123", 
+                    "id_parent": "R-84123", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84160", 
+                    "id_complete": "R-84160", 
+                    "id_parent": "R-84160", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-841740", 
+                    "id_complete": "R-841740", 
+                    "id_parent": "R-841740", 
                     "impacts": "dcae, dmaap", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-842258", 
+                    "id_complete": "R-842258", 
+                    "id_parent": "R-842258", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84322", 
+                    "id_complete": "R-84322", 
+                    "id_parent": "R-84322", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84366", 
+                    "id_complete": "R-84366", 
+                    "id_parent": "R-84366", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-844011", 
+                    "id_complete": "R-844011", 
+                    "id_parent": "R-844011", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84457", 
+                    "id_complete": "R-84457", 
+                    "id_parent": "R-84457", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84473", 
+                    "id_complete": "R-84473", 
+                    "id_parent": "R-84473", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84517", 
+                    "id_complete": "R-84517", 
+                    "id_parent": "R-84517", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-84879", 
+                    "id_complete": "R-84879", 
+                    "id_parent": "R-84879", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85235", 
+                    "id_complete": "R-85235", 
+                    "id_parent": "R-85235", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85328", 
+                    "id_complete": "R-85328", 
+                    "id_parent": "R-85328", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85419", 
+                    "id_complete": "R-85419", 
+                    "id_parent": "R-85419", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85653", 
+                    "id_complete": "R-85653", 
+                    "id_parent": "R-85653", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85734", 
+                    "id_complete": "R-85734", 
+                    "id_parent": "R-85734", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-859208", 
+                    "id_complete": "R-859208", 
+                    "id_parent": "R-859208", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85959", 
+                    "id_complete": "R-85959", 
+                    "id_parent": "R-85959", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-85991", 
+                    "id_complete": "R-85991", 
+                    "id_parent": "R-85991", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86182", 
+                    "id_complete": "R-86182", 
+                    "id_parent": "R-86182", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86235", 
+                    "id_complete": "R-86235", 
+                    "id_parent": "R-86235", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86261", 
+                    "id_complete": "R-86261", 
+                    "id_parent": "R-86261", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86285", 
+                    "id_complete": "R-86285", 
+                    "id_parent": "R-86285", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86476", 
+                    "id_complete": "R-86476", 
+                    "id_parent": "R-86476", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86497", 
+                    "id_complete": "R-86497", 
+                    "id_parent": "R-86497", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86585", 
+                    "id_complete": "R-86585", 
+                    "id_parent": "R-86585", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86586", 
+                    "id_complete": "R-86586", 
+                    "id_parent": "R-86586", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86588", 
+                    "id_complete": "R-86588", 
+                    "id_parent": "R-86588", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86758", 
+                    "id_complete": "R-86758", 
+                    "id_parent": "R-86758", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86835", 
+                    "id_complete": "R-86835", 
+                    "id_parent": "R-86835", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86926", 
+                    "id_complete": "R-86926", 
+                    "id_parent": "R-86926", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-86972", 
+                    "id_complete": "R-86972", 
+                    "id_parent": "R-86972", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87004", 
+                    "id_complete": "R-87004", 
+                    "id_parent": "R-87004", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87096", 
+                    "id_complete": "R-87096", 
+                    "id_parent": "R-87096", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87123", 
+                    "id_complete": "R-87123", 
+                    "id_parent": "R-87123", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "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.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP VNF or PNF CSAR Package", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87234", 
+                    "id_complete": "R-87234", 
+                    "id_parent": "R-87234", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "VNF Package Structure and Format", 
                     "sections": [
                         "VNF Package Structure and Format", 
-                        "VNF or PNF CSAR Package", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "VNF or PNF CSAR Package"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87247", 
+                    "id_complete": "R-87247", 
+                    "id_parent": "R-87247", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-872986", 
+                    "id_complete": "R-872986", 
+                    "id_parent": "R-872986", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87352", 
+                    "id_complete": "R-87352", 
+                    "id_parent": "R-87352", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87485", 
+                    "id_complete": "R-87485", 
+                    "id_parent": "R-87485", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87563", 
+                    "id_complete": "R-87563", 
+                    "id_parent": "R-87563", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87564", 
+                    "id_complete": "R-87564", 
+                    "id_parent": "R-87564", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-87817", 
+                    "id_complete": "R-87817", 
+                    "id_parent": "R-87817", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88026", 
+                    "id_complete": "R-88026", 
+                    "id_parent": "R-88026", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88031", 
+                    "id_complete": "R-88031", 
+                    "id_parent": "R-88031", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88199", 
+                    "id_complete": "R-88199", 
+                    "id_parent": "R-88199", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88482", 
+                    "id_complete": "R-88482", 
+                    "id_parent": "R-88482", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88524", 
+                    "id_complete": "R-88524", 
+                    "id_parent": "R-88524", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88536", 
+                    "id_complete": "R-88536", 
+                    "id_parent": "R-88536", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88863", 
+                    "id_complete": "R-88863", 
+                    "id_parent": "R-88863", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-88899", 
+                    "id_complete": "R-88899", 
+                    "id_parent": "R-88899", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-89010", 
+                    "id_complete": "R-89010", 
+                    "id_parent": "R-89010", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": ""
                 }, 
                 "R-894004": {
-                    "description": "When the VNF or PNF sets up a HTTP or HTTPS connection to the collector, it **MUST**\nprovide a username and password to the DCAE VES Collector for HTTP Basic\nAuthentication.\n\nNote: HTTP Basic Authentication has 4 steps: Request, Authenticate,\nAuthorization with Username/Password Credentials, and Authentication Status\nas per RFC7617 and RFC 2617.", 
+                    "description": "If the VNF or PNF is using Basic Authentication, then when the VNF\nor PNF sets up a HTTPS connection to the DCAE VES Event Listener,\nthe VNF or PNF **MUST** provide a username and password to the\nDCAE VES Event Listener in the Authorization header and the VNF\nor PNF MUST support one-way TLS authentication.\n\nNote: In one-way TLS authentication, the client (VNF or PNF)\nmust authentication the server (DCAE) certificate.", 
                     "docname": "Chapter7/Monitoring-And-Management", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-894004", 
+                    "id_complete": "R-894004", 
+                    "id_parent": "R-894004", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "title_from_content": "", 
                     "type": "req", 
                     "type_name": "Requirement", 
-                    "updated": "dublin", 
+                    "updated": "el alto", 
                     "validated_by": "", 
                     "validation_mode": ""
                 }, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-89474", 
+                    "id_complete": "R-89474", 
+                    "id_parent": "R-89474", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-89571", 
+                    "id_complete": "R-89571", 
+                    "id_parent": "R-89571", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-89800", 
+                    "id_complete": "R-89800", 
+                    "id_parent": "R-89800", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-89913", 
+                    "id_complete": "R-89913", 
+                    "id_parent": "R-89913", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90007", 
+                    "id_complete": "R-90007", 
+                    "id_parent": "R-90007", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90022", 
+                    "id_complete": "R-90022", 
+                    "id_parent": "R-90022", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-901331", 
+                    "id_complete": "R-901331", 
+                    "id_parent": "R-901331", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90152", 
+                    "id_complete": "R-90152", 
+                    "id_parent": "R-90152", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90206", 
+                    "id_complete": "R-90206", 
+                    "id_parent": "R-90206", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90279", 
+                    "id_complete": "R-90279", 
+                    "id_parent": "R-90279", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90526", 
+                    "id_complete": "R-90526", 
+                    "id_parent": "R-90526", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90632", 
+                    "id_complete": "R-90632", 
+                    "id_parent": "R-90632", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-90748", 
+                    "id_complete": "R-90748", 
+                    "id_parent": "R-90748", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-908291", 
+                    "id_complete": "R-908291", 
+                    "id_parent": "R-908291", 
                     "impacts": "dcae, dmaap", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-91125", 
+                    "id_complete": "R-91125", 
+                    "id_parent": "R-91125", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-91273", 
+                    "id_complete": "R-91273", 
+                    "id_parent": "R-91273", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-91342", 
+                    "id_complete": "R-91342", 
+                    "id_parent": "R-91342", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-91497", 
+                    "id_complete": "R-91497", 
+                    "id_parent": "R-91497", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-91745", 
+                    "id_complete": "R-91745", 
+                    "id_parent": "R-91745", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-92193", 
+                    "id_complete": "R-92193", 
+                    "id_parent": "R-92193", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-92207", 
+                    "id_complete": "R-92207", 
+                    "id_parent": "R-92207", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-92571", 
+                    "id_complete": "R-92571", 
+                    "id_parent": "R-92571", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-92635", 
+                    "id_complete": "R-92635", 
+                    "id_parent": "R-92635", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-92866", 
+                    "id_complete": "R-92866", 
+                    "id_parent": "R-92866", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-92935", 
+                    "id_complete": "R-92935", 
+                    "id_parent": "R-92935", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-93030", 
+                    "id_complete": "R-93030", 
+                    "id_parent": "R-93030", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-931076", 
+                    "id_complete": "R-931076", 
+                    "id_parent": "R-931076", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-932071", 
+                    "id_complete": "R-932071", 
+                    "id_parent": "R-932071", 
                     "impacts": "dcae", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-93443", 
+                    "id_complete": "R-93443", 
+                    "id_parent": "R-93443", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-93496", 
+                    "id_complete": "R-93496", 
+                    "id_parent": "R-93496", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-93860", 
+                    "id_complete": "R-93860", 
+                    "id_parent": "R-93860", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-94084", 
+                    "id_complete": "R-94084", 
+                    "id_parent": "R-94084", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-94509", 
+                    "id_complete": "R-94509", 
+                    "id_parent": "R-94509", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-94525", 
+                    "id_complete": "R-94525", 
+                    "id_parent": "R-94525", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-94567", 
+                    "id_complete": "R-94567", 
+                    "id_parent": "R-94567", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-94669", 
+                    "id_complete": "R-94669", 
+                    "id_parent": "R-94669", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-94978", 
+                    "id_complete": "R-94978", 
+                    "id_parent": "R-94978", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-952314", 
+                    "id_complete": "R-952314", 
+                    "id_parent": "R-952314", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-95303", 
+                    "id_complete": "R-95303", 
+                    "id_parent": "R-95303", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                 }, 
                 "R-95321": {
                     "description": "The VNFD provided by VNF vendor may use the below described TOSCA\nrelationships. An on-boarding entity (ONAP SDC) **MUST** support them.\n\n  **tosca.relationships.nfv.VirtualBindsTo**\n\n    This relationship type represents an association relationship between\n    VDU and CP node types.\n\n  **tosca.relationships.nfv.VirtualLinksTo**\n\n    This relationship type represents an association relationship between\n    the VduCpd's and VirtualLinkDesc node types.", 
-                    "docname": "Chapter5/Tosca", 
+                    "docname": "Chapter5/Tosca/ONAP Tosca VNF Descriptor", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-95321", 
+                    "id_complete": "R-95321", 
+                    "id_parent": "R-95321", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "section_name": "Relationship Types", 
                     "sections": [
                         "Relationship Types", 
-                        "TOSCA VNF Descriptor", 
-                        "ONAP TOSCA VNFD or PNFD Requirements"
+                        "TOSCA VNF Descriptor"
                     ], 
                     "status": null, 
                     "tags": [], 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-95430", 
+                    "id_complete": "R-95430", 
+                    "id_parent": "R-95430", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-95864", 
+                    "id_complete": "R-95864", 
+                    "id_parent": "R-95864", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-95950", 
+                    "id_complete": "R-95950", 
+                    "id_parent": "R-95950", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-96227", 
+                    "id_complete": "R-96227", 
+                    "id_parent": "R-96227", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-96253", 
+                    "id_complete": "R-96253", 
+                    "id_parent": "R-96253", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-96482", 
+                    "id_complete": "R-96482", 
+                    "id_parent": "R-96482", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-96554", 
+                    "id_complete": "R-96554", 
+                    "id_parent": "R-96554", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-96634", 
+                    "id_complete": "R-96634", 
+                    "id_parent": "R-96634", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-96983", 
+                    "id_complete": "R-96983", 
+                    "id_parent": "R-96983", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97102", 
+                    "id_complete": "R-97102", 
+                    "id_parent": "R-97102", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97201", 
+                    "id_complete": "R-97201", 
+                    "id_parent": "R-97201", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97293", 
+                    "id_complete": "R-97293", 
+                    "id_parent": "R-97293", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97343", 
+                    "id_complete": "R-97343", 
+                    "id_parent": "R-97343", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97345", 
+                    "id_complete": "R-97345", 
+                    "id_parent": "R-97345", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97445", 
+                    "id_complete": "R-97445", 
+                    "id_parent": "R-97445", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97451", 
+                    "id_complete": "R-97451", 
+                    "id_parent": "R-97451", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97529", 
+                    "id_complete": "R-97529", 
+                    "id_parent": "R-97529", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-97726", 
+                    "id_complete": "R-97726", 
+                    "id_parent": "R-97726", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-978752", 
+                    "id_complete": "R-978752", 
+                    "id_parent": "R-978752", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-980039", 
+                    "id_complete": "R-980039", 
+                    "id_parent": "R-980039", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98138", 
+                    "id_complete": "R-98138", 
+                    "id_parent": "R-98138", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-981585", 
+                    "id_complete": "R-981585", 
+                    "id_parent": "R-981585", 
                     "impacts": "", 
                     "introduced": "casablanca", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98191", 
+                    "id_complete": "R-98191", 
+                    "id_parent": "R-98191", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98374", 
+                    "id_complete": "R-98374", 
+                    "id_parent": "R-98374", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validated_by": "", 
                     "validation_mode": "static"
                 }, 
-                "R-98391": {
-                    "description": "The VNF **MUST**, if not integrated with the Operator's Identity and\nAccess Management system, support Role-Based Access Control to enforce\nleast privilege.", 
-                    "docname": "Chapter4/Security", 
-                    "full_title": "", 
-                    "hide_links": "", 
-                    "id": "R-98391", 
-                    "impacts": "", 
-                    "introduced": "", 
-                    "is_need": true, 
-                    "is_part": false, 
-                    "keyword": "MUST", 
-                    "links": [], 
-                    "notes": "", 
-                    "parts": {}, 
-                    "section_name": "VNF Identity and Access Management Requirements", 
-                    "sections": [
-                        "VNF Identity and Access Management Requirements", 
-                        "VNF Security"
-                    ], 
-                    "status": null, 
-                    "tags": [], 
-                    "target": "VNF", 
-                    "test": "", 
-                    "test_case": "", 
-                    "test_file": "", 
-                    "title": "", 
-                    "title_from_content": "", 
-                    "type": "req", 
-                    "type_name": "Requirement", 
-                    "updated": "casablanca", 
-                    "validated_by": "", 
-                    "validation_mode": ""
-                }, 
                 "R-98407": {
                     "description": "A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST** contain only\nalphanumeric characters and/or underscores '_' and **MUST NOT**\ncontain any of the following strings:\n``_int`` or ``int_`` or ``_int_``.", 
                     "docname": "Chapter5/Heat/ONAP Heat Resource ID and Parameter Naming Convention/{vm-type}", 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98407", 
+                    "id_complete": "R-98407", 
+                    "id_parent": "R-98407", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98450", 
+                    "id_complete": "R-98450", 
+                    "id_parent": "R-98450", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98569", 
+                    "id_complete": "R-98569", 
+                    "id_parent": "R-98569", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98617", 
+                    "id_complete": "R-98617", 
+                    "id_parent": "R-98617", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98905", 
+                    "id_complete": "R-98905", 
+                    "id_parent": "R-98905", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98911", 
+                    "id_complete": "R-98911", 
+                    "id_parent": "R-98911", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-98989", 
+                    "id_complete": "R-98989", 
+                    "id_parent": "R-98989", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99110", 
+                    "id_complete": "R-99110", 
+                    "id_parent": "R-99110", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99174", 
+                    "id_complete": "R-99174", 
+                    "id_parent": "R-99174", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99646", 
+                    "id_complete": "R-99646", 
+                    "id_parent": "R-99646", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99656", 
+                    "id_complete": "R-99656", 
+                    "id_parent": "R-99656", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99730", 
+                    "id_complete": "R-99730", 
+                    "id_parent": "R-99730", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99766", 
+                    "id_complete": "R-99766", 
+                    "id_parent": "R-99766", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99771", 
+                    "id_complete": "R-99771", 
+                    "id_parent": "R-99771", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-997907", 
+                    "id_complete": "R-997907", 
+                    "id_parent": "R-997907", 
                     "impacts": "", 
                     "introduced": "dublin", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99794", 
+                    "id_complete": "R-99794", 
+                    "id_parent": "R-99794", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99798", 
+                    "id_complete": "R-99798", 
+                    "id_parent": "R-99798", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "full_title": "", 
                     "hide_links": "", 
                     "id": "R-99812", 
+                    "id_complete": "R-99812", 
+                    "id_parent": "R-99812", 
                     "impacts": "", 
                     "introduced": "", 
                     "is_need": true, 
                     "validation_mode": "static"
                 }
             }, 
-            "needs_amount": 814
+            "needs_amount": 819
         }
     }
 }
\ No newline at end of file
index c0f357a..083be9b 100644 (file)
@@ -90,6 +90,15 @@ class CloudServiceArchive:
             if props.get("type") == "org.openecomp.groups.VfModule"
         }
 
+    def get_vnf_type(self, module):
+        """
+        Concatenation of service and VF instance name
+        """
+        service_name = self.service_name
+        instance_name = self.get_vf_module_resource_name(module)
+        if service_name and instance_name:
+            return "{}/{}".format(service_name, instance_name)
+
     @property
     def vf_module_resource_names(self):
         """
@@ -125,8 +134,9 @@ class CloudServiceArchive:
         def_dir = csar_dir / "Definitions"
         check(
             def_dir.exists(),
-            f"CSAR is invalid. {csar_dir.as_posix()} does not contain a "
-            f"Definitions directory.",
+            "CSAR is invalid. {} does not contain a Definitions directory.".format(
+                csar_dir.as_posix()
+            ),
         )
         return yaml_files(def_dir)
 
@@ -158,17 +168,13 @@ class CloudServiceArchive:
         return self._service.get("metadata", {}).get("name")
 
     def __repr__(self):
-        return f"CSAR (path={self.csar_path.name}, name={self.service_name})"
+        return "CSAR (path={}, name={})".format(self.csar_path.name, self.service_name)
 
     def __str__(self):
         return repr(self)
 
 
 class PreloadEnvironment:
-    """
-    A
-    """
-
     def __init__(self, env_dir, parent=None):
         self.base_dir = Path(env_dir)
         self.parent = parent
@@ -219,7 +225,7 @@ class PreloadEnvironment:
         return [e for e in all_envs if e.is_leaf]
 
     def get_module(self, name):
-        name = name if name.lower().endswith(".env") else f"{name}.env".lower()
+        name = name if name.lower().endswith(".env") else "{}.env".format(name).lower()
         if name not in self.module_names:
             return {}
         result = {}
@@ -228,6 +234,13 @@ class PreloadEnvironment:
         for m in (parent_module, self.defaults, module):
             if m:
                 result.update(m)
+        if self.csar:
+            vnf_type = self.csar.get_vnf_type(name)
+            if vnf_type:
+                result["vnf-type"] = vnf_type
+            model_name = self.csar.get_vf_module_model_name(name)
+            if model_name:
+                result["vf-module-model-name"] = model_name
         return result
 
     @property
@@ -264,4 +277,4 @@ class PreloadEnvironment:
         return self.base_dir.name
 
     def __repr__(self):
-        return f"PreloadEnvironment(name={self.name})"
+        return "PreloadEnvironment(name={})".format(self.name)
index 38a051d..3da4014 100644 (file)
 import json
 import os
 from abc import ABC, abstractmethod
+from collections import OrderedDict
 
 import yaml
 
 
+def represent_ordered_dict(dumper, data):
+    value = []
+
+    for item_key, item_value in data.items():
+        node_key = dumper.represent_data(item_key)
+        node_value = dumper.represent_data(item_value)
+
+        value.append((node_key, node_value))
+
+    return yaml.nodes.MappingNode(u"tag:yaml.org,2002:map", value)
+
+
 def get_json_template(template_dir, template_name):
     template_name = template_name + ".json"
     with open(os.path.join(template_dir, template_name)) as f:
@@ -109,6 +122,7 @@ class AbstractPreloadGenerator(ABC):
         self.current_module_env = {}
         self.base_output_dir = base_output_dir
         self.env_cache = {}
+        self.module_incomplete = False
 
     @classmethod
     @abstractmethod
@@ -163,9 +177,19 @@ class AbstractPreloadGenerator(ABC):
 
     def replace(self, param_name, alt_message=None, single=False):
         value = self.get_param(param_name, single)
+        value = None if value == "CHANGEME" else value
         if value:
             return value
-        return alt_message or replace(param_name)
+        else:
+            self.module_incomplete = True
+            return alt_message or replace(param_name)
+
+    def start_module(self, module, env):
+        """Initialize/reset the environment for the module"""
+        self.current_module = module
+        self.current_module_env = env
+        self.module_incomplete = False
+        self.env_cache = {}
 
     def generate_environments(self, module):
         """
@@ -179,9 +203,7 @@ class AbstractPreloadGenerator(ABC):
         print("\nGenerating Preloads for {}".format(module))
         print("-" * 50)
         print("... generating blank template")
-        self.current_module = module
-        self.current_module_env = {}
-        self.env_cache = {}
+        self.start_module(module, {})
         blank_preload_dir = self.make_preload_dir(self.base_output_dir)
         self.generate_module(module, blank_preload_dir)
         self.generate_preload_env(module, blank_preload_dir)
@@ -193,12 +215,8 @@ class AbstractPreloadGenerator(ABC):
                         env.name, output_dir
                     )
                 )
-                self.env_cache = {}
-                self.current_module = module
-                self.current_module_env = env.get_module(module.label)
+                self.start_module(module, env.get_module(module.label))
                 self.generate_module(module, output_dir)
-        self.current_module = None
-        self.current_module_env = None
 
     def make_preload_dir(self, base_dir):
         path = os.path.join(base_dir, self.output_sub_dir())
@@ -206,17 +224,23 @@ class AbstractPreloadGenerator(ABC):
             os.makedirs(path, exist_ok=True)
         return path
 
-    def generate_preload_env(self, module, blank_preload_dir):
+    @staticmethod
+    def generate_preload_env(module, blank_preload_dir):
         """
         Create a .env template suitable for completing and using for
         preload generation from env files.
         """
+        yaml.add_representer(OrderedDict, represent_ordered_dict)
         output_dir = os.path.join(blank_preload_dir, "preload_env")
-        output_file = os.path.join(output_dir, "{}.env".format(module.vnf_name))
+        env_file = os.path.join(output_dir, "{}.env".format(module.vnf_name))
+        defaults_file = os.path.join(output_dir, "defaults.yaml")
         if not os.path.exists(output_dir):
             os.makedirs(output_dir, exist_ok=True)
-        with open(output_file, "w") as f:
+        with open(env_file, "w") as f:
             yaml.dump(module.env_template, f)
+        if not os.path.exists(defaults_file):
+            with open(defaults_file, "w") as f:
+                yaml.dump({"vnf_name": "CHANGEME"}, f)
 
     def get_param(self, param_name, single):
         """
@@ -234,6 +258,7 @@ class AbstractPreloadGenerator(ABC):
         if not value:
             value = self.current_module_env.get(param_name)
             if isinstance(value, list):
+                value = value.copy()
                 value.reverse()
             self.env_cache[param_name] = value
         if value and single and isinstance(value, list):
index e37c914..c772465 100644 (file)
@@ -37,6 +37,7 @@
 import os
 import shutil
 from abc import ABC, abstractmethod
+from collections import OrderedDict
 
 from preload.generator import yield_by_count
 from preload.environment import PreloadEnvironment
@@ -55,6 +56,8 @@ from tests.utils import nested_dict
 from tests.utils.vm_types import get_vm_type_for_nova_server
 from config import Config, get_generator_plugins
 
+from tests.test_environment_file_parameters import ENV_PARAMETER_SPEC
+
 CHANGE = "CHANGEME"
 
 
@@ -259,7 +262,8 @@ class VnfModule(FilterBaseOutputs):
         self.heat = Heat(filepath=template_file, envpath=env_path(template_file))
         env_pair = get_environment_pair(self.template_file)
         env_yaml = env_pair.get("eyml") if env_pair else {}
-        self.parameters = env_yaml.get("parameters") or {}
+        self.parameters = {key: "" for key in self.heat.parameters}
+        self.parameters.update(env_yaml.get("parameters") or {})
         self.networks = []
         self.virtual_machine_types = self._create_vm_types()
         self._add_networks()
@@ -324,7 +328,18 @@ class VnfModule(FilterBaseOutputs):
     @property
     def env_specs(self):
         """Return available Environment Spec definitions"""
-        return Config().env_specs
+        try:
+            return Config().env_specs
+        except FileNotFoundError:
+            return [ENV_PARAMETER_SPEC]
+
+    @property
+    def platform_provided_params(self):
+        result = set()
+        for spec in self.env_specs:
+            for props in spec["PLATFORM PROVIDED"]:
+                result.add(props["property"][-1])
+        return result
 
     @property
     def env_template(self):
@@ -332,11 +347,12 @@ class VnfModule(FilterBaseOutputs):
         Returns a a template .env file that can be completed to enable
         preload generation.
         """
-        params = {}
-        params["vnf-name"] = CHANGE
+        params = OrderedDict()
         params["vnf-type"] = CHANGE
         params["vf-module-model-name"] = CHANGE
         params["vf_module_name"] = CHANGE
+        for az in self.availability_zones:
+            params[az] = CHANGE
         for network in self.networks:
             params[network.name_param] = CHANGE
             for param in set(network.subnet_params):
@@ -351,10 +367,11 @@ class VnfModule(FilterBaseOutputs):
         excluded = get_preload_excluded_parameters(
             self.template_file, persistent_only=True
         )
+        excluded.update(self.platform_provided_params)
         for name, value in self.parameters.items():
             if name in excluded:
                 continue
-            params[name] = value
+            params[name] = value if value else CHANGE
         return {"parameters": params}
 
     @property
@@ -367,7 +384,8 @@ class VnfModule(FilterBaseOutputs):
         :return: dict of parameters suitable for the preload
         """
         excluded = get_preload_excluded_parameters(self.template_file)
-        return {k: v for k, v in self.parameters.items() if k not in excluded}
+        params = {k: v for k, v in self.parameters.items() if k not in excluded}
+        return params
 
     def _get_vm_type(self, vm_type):
         for vm in self.virtual_machine_types:
index 2060cb4..d75fbbd 100644 (file)
@@ -74,7 +74,8 @@ class GrApiPreloadGenerator(AbstractPreloadGenerator):
         template = get_json_template(DATA_DIR, "preload_template")
         self._populate(template, vnf_module)
         vnf_name = vnf_module.vnf_name
-        outfile = "{}/{}.json".format(output_dir, vnf_name)
+        incomplete = "_incomplete" if self.module_incomplete else ""
+        outfile = "{}/{}{}.json".format(output_dir, vnf_name, incomplete)
         with open(outfile, "w") as f:
             json.dump(template, f, indent=4)
 
index 517c789..87a8408 100644 (file)
@@ -76,10 +76,32 @@ class VnfApiPreloadGenerator(AbstractPreloadGenerator):
     def generate_module(self, vnf_module, output_dir):
         preload = get_json_template(DATA_DIR, "preload_template")
         self._populate(preload, vnf_module)
-        outfile = "{}/{}.json".format(output_dir, vnf_module.vnf_name)
+        incomplete = "_incomplete" if self.module_incomplete else ""
+        outfile = "{}/{}{}.json".format(output_dir, vnf_module.vnf_name, incomplete)
         with open(outfile, "w") as f:
             json.dump(preload, f, indent=4)
 
+    def _populate(self, preload, vnf_module):
+        self._add_vnf_metadata(preload)
+        self._add_availability_zones(preload, vnf_module)
+        self._add_vnf_networks(preload, vnf_module)
+        self._add_vms(preload, vnf_module)
+        self._add_parameters(preload, vnf_module)
+
+    def _add_vnf_metadata(self, preload):
+        vnf_meta = preload["input"]["vnf-topology-information"][
+            "vnf-topology-identifier"
+        ]
+        vnf_meta["vnf-name"] = self.replace("vnf_name")
+        vnf_meta["generic-vnf-type"] = self.replace(
+            "vnf-type",
+            "VALUE FOR: Concatenation of <Service Name>/"
+            "<VF Instance Name> MUST MATCH SDC",
+        )
+        vnf_meta["vnf-type"] = self.replace(
+            "vf-module-model-name", "VALUE FOR: <vfModuleModelName> from CSAR or SDC"
+        )
+
     def add_floating_ips(self, network_template, network):
         # only one floating IP is really supported, in the preload model
         # so for now we'll just use the last one.  We might revisit this
@@ -102,12 +124,6 @@ class VnfApiPreloadGenerator(AbstractPreloadGenerator):
                 )
                 network_template["ip-count-ipv6"] += 1
 
-    def _populate(self, preload, vnf_module):
-        self._add_availability_zones(preload, vnf_module)
-        self._add_vnf_networks(preload, vnf_module)
-        self._add_vms(preload, vnf_module)
-        self._add_parameters(preload, vnf_module)
-
     def _add_availability_zones(self, preload, vnf_module):
         zones = preload["input"]["vnf-topology-information"]["vnf-assignments"][
             "availability-zones"
index 9868067..ecaf662 100644 (file)
@@ -833,7 +833,7 @@ def pytest_addoption(parser):
         "--env-directory",
         dest="env_dir",
         action="store",
-        help="optional directory of .env files for preload generation"
+        help="optional directory of .env files for preload generation",
     )
 
     parser.addoption(
@@ -843,7 +843,7 @@ def pytest_addoption(parser):
         help=(
             "Preload format to create (multiple allowed). If not provided "
             "then all available formats will be created: {}"
-        ).format(", ".join(get_generator_plugin_names()))
+        ).format(", ".join(get_generator_plugin_names())),
     )
 
 
diff --git a/ice_validator/tests/fixtures/test_incremental_module/fail/base.yaml b/ice_validator/tests/fixtures/test_incremental_module/fail/base.yaml
new file mode 100644 (file)
index 0000000..5e3cafd
--- /dev/null
@@ -0,0 +1,47 @@
+# -*- 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'
+
+---
+parameters:
+
+resources:
+
+  oam_network:
+    type: OS::Neutron::Net
 # ============LICENSE_END============================================
 #
 #
+# VERSION: '1.0.0'
 
-from threading import Thread
+---
+parameters:
 
-from vvp import ValidatorApp, VERSION
 
+resources:
 
-def test_app_starts():
-    app = ValidatorApp()
-    assert "VNF Validation Tool" in app.title
-    assert VERSION in app.title
-    app_thread = Thread(target=app.start, args=())
-    app_thread.daemon = True
-    app.config.command_queue.put("SHUTDOWN")
diff --git a/ice_validator/tests/fixtures/test_incremental_module/pass/pass0.yaml b/ice_validator/tests/fixtures/test_incremental_module/pass/pass0.yaml
new file mode 100644 (file)
index 0000000..3758c7a
--- /dev/null
@@ -0,0 +1,50 @@
+# -*- 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:
+
+  my_instance:
+    type: OS::Nova::Server
+    properties:
+      key_name: my_key
+      image: F18-x86_64-cfntools
+      flavor: m1.small
diff --git a/ice_validator/tests/fixtures/test_incremental_module/pass/pass0_base.yaml b/ice_validator/tests/fixtures/test_incremental_module/pass/pass0_base.yaml
new file mode 100644 (file)
index 0000000..420b06f
--- /dev/null
@@ -0,0 +1,48 @@
+# -*- 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'
+
+---
+parameters:
+
+resources:
+
+  oam_network:
+    type: OS::Neutron::Net
+
index 291464d..764be11 100644 (file)
@@ -393,7 +393,10 @@ def unzip(zip_path, target_dir):
     :param zip_path:    path to valid zip file
     :param target_dir:  directory to unzip zip_path
     """
-    check(zipfile.is_zipfile(zip_path), "{} is not a valid zipfile or does not exist".format(zip_path))
+    check(
+        zipfile.is_zipfile(zip_path),
+        "{} is not a valid zipfile or does not exist".format(zip_path),
+    )
     archive = zipfile.ZipFile(zip_path)
     if not os.path.exists(target_dir):
         os.makedirs(target_dir, exist_ok=True)
index 12bfc63..0223bc3 100644 (file)
@@ -495,7 +495,10 @@ class NeutronPortProcessor(HeatProcessor):
         An OS::Nova:Port with the property binding:vnic_type
         """
         resource_properties = nested_dict.get(resource, "properties", default={})
-        if nested_dict.get(resource, "type") == cls.resource_type and resource_properties.get("binding:vnic_type", "") == "direct":
+        if (
+            nested_dict.get(resource, "type") == cls.resource_type
+            and resource_properties.get("binding:vnic_type", "") == "direct"
+        ):
             return True
 
         return False
@@ -785,10 +788,12 @@ class Resource(object):
             try:
                 return int(count_value)
             except (ValueError, TypeError):
-                print((
-                    "WARNING: Invalid value for count parameter {}. Expected "
-                    "an integer, but got {}. Defaulting to 1"
-                ).format(count_param, count_value))
+                print(
+                    (
+                        "WARNING: Invalid value for count parameter {}. Expected "
+                        "an integer, but got {}. Defaulting to 1"
+                    ).format(count_param, count_value)
+                )
         return 1
 
     @property
index 312c8e9..4071f66 100644 (file)
@@ -100,13 +100,13 @@ sid_regx_dict = {
         "string": {
             "readable": "{network-role}_subnet_id or {network-role}_v6_subnet_id",
             "machine": RE_EXTERNAL_PARAM_SID,
-        },
+        }
     },
     "internal": {
         "string": {
             "readable": "int_{network-role}_subnet_id or int_{network-role}_v6_subnet_id",
             "machine": RE_INTERNAL_PARAM_SID,
-        },
+        }
     },
     "parameter_to_resource_comparisons": ["network_role"],
 }
@@ -114,22 +114,46 @@ sid_regx_dict = {
 
 @validates("R-100000", "R-100010", "R-100030", "R-100050", "R-100070")
 def test_contrail_external_instance_ip_address_parameter(yaml_file):
-    check_parameter_format(yaml_file, iip_regx_dict, "external", ContrailV2InstanceIpProcessor, "instance_ip_address")
+    check_parameter_format(
+        yaml_file,
+        iip_regx_dict,
+        "external",
+        ContrailV2InstanceIpProcessor,
+        "instance_ip_address",
+    )
 
 
 @validates("R-100000", "R-100090", "R-100110", "R-100130", "R-100150")
 def test_contrail_internal_instance_ip_address_parameter(yaml_file):
-    check_parameter_format(yaml_file, iip_regx_dict, "internal", ContrailV2InstanceIpProcessor, "instance_ip_address")
+    check_parameter_format(
+        yaml_file,
+        iip_regx_dict,
+        "internal",
+        ContrailV2InstanceIpProcessor,
+        "instance_ip_address",
+    )
 
 
 @validates("R-100190", "R-100200", "R-100220")
 def test_contrail_external_instance_subnet_id_parameter(yaml_file):
-    check_parameter_format(yaml_file, sid_regx_dict, "external", ContrailV2InstanceIpProcessor, "subnet_uuid")
+    check_parameter_format(
+        yaml_file,
+        sid_regx_dict,
+        "external",
+        ContrailV2InstanceIpProcessor,
+        "subnet_uuid",
+    )
 
 
 @validates("R-100190", "R-100240", "R-100260")
 def test_contrail_internal_instance_subnet_id_parameter(yaml_file):
-    check_parameter_format(yaml_file, sid_regx_dict, "internal", ContrailV2InstanceIpProcessor, "subnet_uuid")
+    check_parameter_format(
+        yaml_file,
+        sid_regx_dict,
+        "internal",
+        ContrailV2InstanceIpProcessor,
+        "subnet_uuid",
+    )
 
 
 @validates("R-100240", "R-100260")
@@ -150,10 +174,12 @@ def test_contrail_incremental_module_internal_subnet_usage(yaml_files):
             if not subnet_param:
                 continue
             if subnet_param not in base_outputs:
-                errors.append((
-                    "Resource ({}) is designated as an internal IP, but its "
-                    "subnet_uuid parameter ({}) does not refer to subnet in "
-                    "this template nor is it defined in the output section "
-                    "of the base module ({})"
-                ).format(r_id, subnet_param, os.path.basename(base_path)))
+                errors.append(
+                    (
+                        "Resource ({}) is designated as an internal IP, but its "
+                        "subnet_uuid parameter ({}) does not refer to subnet in "
+                        "this template nor is it defined in the output section "
+                        "of the base module ({})"
+                    ).format(r_id, subnet_param, os.path.basename(base_path))
+                )
     assert not errors, ". ".join(errors)
index 06b41b4..dbbedbb 100644 (file)
@@ -139,9 +139,7 @@ def test_contrail_servicehealthcheck_resource_id(yaml_file):
     **MUST**
     contain the ``{vm-type}``.
     """
-    run_test(
-        yaml_file, ContrailV2ServiceHealthCheckProcessor, get_vm_types, "vm_type"
-    )
+    run_test(yaml_file, ContrailV2ServiceHealthCheckProcessor, get_vm_types, "vm_type")
 
 
 @validates("R-16437")
index 69485bc..99d76a0 100644 (file)
@@ -59,13 +59,13 @@ from tests.utils.nested_files import file_is_a_nested_template
 # at the end of a property to make it a tuple.
 ENV_PARAMETER_SPEC = {
     "PLATFORM PROVIDED": [
-        {"property": ("vnf_id",), "persistent": False, "kwargs": {}},
-        {"property": ("vnf_name",), "persistent": False, "kwargs": {}},
-        {"property": ("vf_module_id",), "persistent": False, "kwargs": {}},
-        {"property": ("vf_module_index",), "persistent": False, "kwargs": {}},
-        {"property": ("vf_module_name",), "persistent": False, "kwargs": {}},
-        {"property": ("workload_context",), "persistent": False, "kwargs": {}},
-        {"property": ("environment_context",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "vnf_id",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "vnf_name",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "vf_module_id",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "vf_module_index",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "vf_module_name",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "workload_context",), "persistent": False, "kwargs": {}},
+        {"property": ("metadata", "environment_context",), "persistent": False, "kwargs": {}},
         {"property": (r"^(.+?)_net_fqdn$",), "persistent": False, "kwargs": {}},
     ],
     "ALL": [{"property": ("name",), "persistent": False, "kwargs": {}}],
@@ -90,13 +90,13 @@ ENV_PARAMETER_SPEC = {
         },
         {"property": ("fixed_ips", "subnet"), "persistent": False, "kwargs": {}},
         {
-            "property": ("fixed_ips", "allowed_address_pairs"),
+            "property": ("allowed_address_pairs", "ip_address"),
             "persistent": False,
             "network_type": "external",
             "kwargs": {"exclude_parameter": re.compile(r"^(.+?)_int_(.+?)$")},
         },
         {
-            "property": ("fixed_ips", "allowed_address_pairs"),
+            "property": ("allowed_address_pairs", "ip_address"),
             "persistent": True,
             "network_type": "internal",
             "kwargs": {"exclude_parameter": re.compile(r"^((?!_int_).)*$")},
@@ -235,19 +235,25 @@ def get_preload_excluded_parameters(yaml_file, persistent_only=False, env_spec=N
             if persistent_only and not spec.get("persistent"):
                 continue
             results.extend(get_template_parameters(yaml_file, resource_type,
-                                                   spec, all_resources))
-    return {item["param"] for item in results}
-
-
-def get_template_parameters(yaml_file, resource_type, spec, all_resources=False):
+                                                   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
+        # them difficult to detect by looking for the assignment.  We'll
+        # just extract them from the parameters if they are there to be safe
+        if re.match(r"availability_zone_\d+", param):
+            results.add(param)
+    return results
+
+
+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
+        resources = heat.resources if not nested_resources else heat.get_all_resources()
     else:
-        resources = heat.get_resource_by_type(resource_type)
-
+        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):
@@ -255,7 +261,6 @@ def get_template_parameters(yaml_file, resource_type, spec, all_resources=False)
                 # then checking if its actually using get_param
                 # then checking a custom helper function (mostly for internal vs external networks)
                 parameters.append({"resource": rid, "param": get_param(param)})
-
     return parameters
 
 
index 2ce1bcf..feb48e5 100644 (file)
@@ -87,9 +87,23 @@ fip_regx_dict = {
 
 @validates("R-40971", "R-35735", "R-23503", "R-71577", "R-04697", "R-34037")
 def test_external_fip_format(yaml_file):
-    check_parameter_format(yaml_file, fip_regx_dict, "external", NeutronPortProcessor, "fixed_ips", "ip_address")
+    check_parameter_format(
+        yaml_file,
+        fip_regx_dict,
+        "external",
+        NeutronPortProcessor,
+        "fixed_ips",
+        "ip_address",
+    )
 
 
 @validates("R-27818", "R-29765", "R-85235", "R-78380", "R-34037")
 def test_internal_fip_format(yaml_file):
-    check_parameter_format(yaml_file, fip_regx_dict, "internal", NeutronPortProcessor, "fixed_ips", "ip_address")
+    check_parameter_format(
+        yaml_file,
+        fip_regx_dict,
+        "internal",
+        NeutronPortProcessor,
+        "fixed_ips",
+        "ip_address",
+    )
diff --git a/ice_validator/tests/test_incremental_module.py b/ice_validator/tests/test_incremental_module.py
new file mode 100644 (file)
index 0000000..606dfe4
--- /dev/null
@@ -0,0 +1,59 @@
+# -*- 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============================================
+import os
+
+from tests.helpers import validates
+from tests.utils.incrementals import is_incremental_module
+
+from tests.structures import Heat
+
+
+@validates("R-610030")
+def test_incremental_module_has_server(yaml_files):
+    modules = (f for f in yaml_files if is_incremental_module(f, yaml_files))
+    errors = []
+    for module in modules:
+        servers = Heat(filepath=module).get_resource_by_type(
+            "OS::Nova::Server", all_resources=True
+        )
+        if not servers:
+            errors.append(os.path.basename(module))
+
+    assert not errors, (
+        "The following incremental modules do not contain an OS::Nova::Server "
+        "as required: {}".format(", ".join(errors))
+    )
index 47c4d90..97d2f76 100644 (file)
@@ -81,7 +81,12 @@ def check_nested_parameter_doesnt_change(yaml_file, nresource_type, *nprops):
             r = Resource(resource_id=resource_id, resource=resource)
             properties = r.get_nested_properties()
             resources = r.get_nested_yaml(base_dir).get("resources", {})
-            for nrid, nresource_dict in resources.items():  # iterate through nested file until found target r type
+            for (
+                nrid,
+                nresource_dict,
+            ) in (
+                resources.items()
+            ):  # iterate through nested file until found target r type
 
                 if (
                     nresource_dict.get("type")
@@ -89,10 +94,19 @@ def check_nested_parameter_doesnt_change(yaml_file, nresource_type, *nprops):
                 ):
                     continue
 
-                for nparam in prop_iterator(nresource_dict, *nprops):  # get iterator of all target parameters
-                    if nparam and "get_param" in nparam:  # iterator yields None if parameter isn't found
+                for nparam in prop_iterator(
+                    nresource_dict, *nprops
+                ):  # get iterator of all target parameters
+                    if (
+                        nparam and "get_param" in nparam
+                    ):  # iterator yields None if parameter isn't found
                         nparam = nparam.get("get_param")
-                        for k1, v1 in properties.items():  # found nparam, now comparing to parent template
+                        for (
+                            k1,
+                            v1,
+                        ) in (
+                            properties.items()
+                        ):  # found nparam, now comparing to parent template
                             if isinstance(v1, dict) and "get_param" in v1:
                                 parameter = v1.get("get_param")
                                 # k1: nested resource parameter definition
@@ -105,7 +119,9 @@ def check_nested_parameter_doesnt_change(yaml_file, nresource_type, *nprops):
                                 if isinstance(parameter, list):
                                     parameter = parameter[0]
 
-                                if k1 != nparam:  # we only care about the parameter we found in nested template
+                                if (
+                                    k1 != nparam
+                                ):  # we only care about the parameter we found in nested template
                                     continue
 
                                 if k1 != parameter:
@@ -129,6 +145,7 @@ def check_nested_parameter_doesnt_change(yaml_file, nresource_type, *nprops):
 # def test_parameter_name_doesnt_change_in_nested_template(yaml_file):
 #    check_nested_parameter_doesnt_change(yaml_file)
 
+
 @validates("R-708564")
 def test_server_name_parameter_name_doesnt_change_in_nested_template(heat_template):
     check_nested_parameter_doesnt_change(heat_template, "OS::Nova::Server", "name")
@@ -257,7 +274,7 @@ def test_vmi_aap_parameter_name_doesnt_change_in_nested_template(heat_template):
         "virtual_machine_interface_allowed_address_pairs",
         "virtual_machine_interface_allowed_address_pairs_allowed_address_pair",
         "virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip",
-        "virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix"
+        "virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix",
     )
 
 
index 7139c9b..9361389 100644 (file)
@@ -151,7 +151,9 @@ def test_non_server_name(yaml_file):
 def test_non_server_name_unique(heat_template):
     """Test name has unique value
     """
-    list_nest = nested_files.get_list_of_nested_files(heat_template, os.path.dirname(heat_template))
+    list_nest = nested_files.get_list_of_nested_files(
+        heat_template, os.path.dirname(heat_template)
+    )
     list_nest.append(heat_template)
     non_servers = {}
     for yaml_file in list_nest:
index ae14336..ae6d7ff 100644 (file)
@@ -83,7 +83,11 @@ def get_vm_types_for_resource(resource):
 
 def is_nova_server(resource):
 
-    return "type" in resource and "properties" in resource and resource.get("type") == "OS::Nova::Server"
+    return (
+        "type" in resource
+        and "properties" in resource
+        and resource.get("type") == "OS::Nova::Server"
+    )
 
 
 def get_vm_type_for_nova_server(resource):
index cc2c66f..a998fd1 100644 (file)
@@ -477,7 +477,7 @@ class ValidatorApp:
         settings_row += 1
 
         self.create_preloads = BooleanVar(self._root, name="create_preloads")
-        self.create_preloads.set(0)
+        self.create_preloads.set(self.config.default_create_preloads)
         create_preloads_label = Label(
             settings_frame,
             text="Create Preload from Env Files:",
@@ -507,8 +507,9 @@ class ValidatorApp:
         env_dir_label = Label(actions, text="Env Files:")
         env_dir_label.grid(row=5, column=1, pady=5, sticky=W)
         self.env_dir = StringVar(self._root, name="env_dir")
+        env_dir_state = NORMAL if self.create_preloads.get() else DISABLED
         self.env_dir_entry = Entry(
-            actions, width=40, textvariable=self.env_dir, state=DISABLED
+            actions, width=40, textvariable=self.env_dir, state=env_dir_state
         )
         self.env_dir_entry.grid(row=5, column=2, pady=5, sticky=W)
         env_dir_browse = Button(actions, text="...", command=self.ask_env_dir_source)
@@ -563,9 +564,9 @@ class ValidatorApp:
             self.input_format,
             self.report_format,
             self.halt_on_failure,
+            self.preload_format,
+            self.create_preloads,
         )
-        if self.config.preload_formats:
-            self.config.watch(self.preload_format)
         self.schedule(self.execute_pollers)
         if self.config.terms_link_text and not self.config.are_terms_accepted:
             TermsAndConditionsDialog(parent_frame, self.config)
index 01e9503..e7d9c20 100644 (file)
@@ -36,7 +36,7 @@
 #
 import os
 import platform
-import subprocess #nosec
+import subprocess  # nosec
 import sys
 import tempfile
 from urllib import request
@@ -44,12 +44,12 @@ from urllib import request
 PREBUILT_DOWNLOAD_SITE = "https://download.lfd.uci.edu/pythonlibs/n5jyqt7p/"
 PREBUILT_WIN_LIBS = [
     "yappi-1.0-cp{python_version}-cp{python_version}m-{arch}.whl",
-    "setproctitle-1.1.10-cp{python_version}-cp{python_version}m-{arch}.whl"
+    "setproctitle-1.1.10-cp{python_version}-cp{python_version}m-{arch}.whl",
 ]
 
 
 def is_windows():
-    return os.name == 'nt'
+    return os.name == "nt"
 
 
 def python_version():
@@ -62,7 +62,7 @@ def system_architecture():
 
 
 def download_url(url):
-    resp = request.urlopen(url) #nosec
+    resp = request.urlopen(url)  # nosec
     return resp.read()
 
 
@@ -81,15 +81,16 @@ def install_prebuilt_binaries_on_windows():
         return
     temp_dir = tempfile.mkdtemp()
     for lib in PREBUILT_WIN_LIBS:
-        filename = lib.format(python_version=python_version(),
-                              arch=system_architecture())
+        filename = lib.format(
+            python_version=python_version(), arch=system_architecture()
+        )
         url = PREBUILT_DOWNLOAD_SITE + filename
         print(f"Downloading {url}")
         contents = download_url(url)
         file_path = os.path.join(temp_dir, filename)
         write_file(contents, file_path, mode="wb")
         print("Download complete. Installing dependency.")
-        subprocess.call(["pip", "install", file_path]) #nosec
+        subprocess.call(["pip", "install", file_path])  # nosec
 
 
 if __name__ == "__main__":
diff --git a/pom.xml b/pom.xml
index 398db16..8c1fab1 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
         <sonar.python.coverage.reportPath>coverage.xml</sonar.python.coverage.reportPath>
         <sonar.language>py</sonar.language>
         <sonar.pluginName>python</sonar.pluginName>
-        <sonar.inclusions>ice_validator/tests/**.py</sonar.inclusions>
+        <sonar.inclusions>ice_validator/**.py</sonar.inclusions>
   </properties>
 
   <build>
index a0d292d..ce63496 100644 (file)
@@ -50,3 +50,7 @@ pyinstaller
 mock
 openstack-heat
 cached-property>=1.5,<1.6
+bandit
+black ; python_version>="3.6"
+pre-commit
+flake8
diff --git a/tests.md b/tests.md
deleted file mode 100644 (file)
index 7f3c90d..0000000
--- a/tests.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Implemented Tests
-
-Reworking the documentation so removing these for now
diff --git a/tox.ini b/tox.ini
index 8bbf1fc..261fdf0 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -42,6 +42,7 @@ skipsdist=True
 envlist = py36
 
 [testenv]
+DISPLAY = :0.0
 whitelist_externals =
     install_win_deps.py
 passenv =
@@ -53,7 +54,7 @@ commands =
     pip install -r requirements.txt
     {envpython} --version
     pytest --version
-    coverage run --module pytest ice_validator/tests --self-test -rxXs
+    coverage run --module pytest ice_validator --self-test -rxXs
     coverage xml
     flake8 --version
     flake8 ice_validator