[DOC] Changes for vFW CNF use case and CNFO
[integration.git] / docs / docs_vFW_CNF_CDS.rst
index 6b5d5b4..e6d4249 100644 (file)
@@ -1,6 +1,6 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2020 ONAP
+.. Copyright 2022 ONAP
 
 .. _docs_vFW_CNF_CDS:
 
@@ -16,7 +16,7 @@ Source files
 
 Description
 ~~~~~~~~~~~
-This use case is a combination of `vFW CDS Dublin`_ and `vFW EDGEX K8S`_ use cases. The aim is to continue improving Kubernetes based Network Functions (a.k.a CNF) support in ONAP. Use case continues where `vFW EDGEX K8S`_ left and brings CDS support into picture like `vFW CDS Dublin`_ did for the old vFW Use case. Predecessor use case is also documented here `vFW EDGEX K8S In ONAP Wiki`_.
+This use case is a combination of `vFW CDS Dublin`_ and `vFW EDGEX K8S`_ use cases and it is continously improved since Frankfurt release. The aim is to continue improving Kubernetes based Network Functions (a.k.a CNF) support in ONAP. Use case continues where `vFW EDGEX K8S`_ left and brings CDS support into picture like `vFW CDS Dublin`_ did for the old vFW Use case. Predecessor use case is also documented here `vFW EDGEX K8S In ONAP Wiki`_.
 
 This use case shows how to onboard helm packages and to instantiate them with help of ONAP. Following improvements were made in the vFW CNF Use Case:
 
@@ -29,14 +29,17 @@ This use case shows how to onboard helm packages and to instantiate them with he
   * Unique names for resources with ONAP naming service
   * CDS is used to create and upload **multicloud/k8s profile** as part of instantiation flow
 - Combined all models (Heat, Helm, CBA) in to same git repo and a created single onboarding package `vFW_CNF_CDS Model`_
+- vFW CNF status is monitored prior to the completion of the instantiation process.
+- It is possible to not only provide overrides for Helm packages but we can modify Helm packages before instantiation or we can modify CNF after its deployment
 - Use case does not contain Closed Loop part of the vFW demo.
 
 All changes to related ONAP components and Use Case can be found in the following tickets:
 
 - `REQ-182`_
 - `REQ-341`_
-
-**Since Guilin ONAP supports Helm packages as a native onboarding artifacts and SO natively orchestrates Helm packages what brings significant advantages in the future. Also since this release ONAP has first mechanisms for monitoring of the status of deployed CNF resources**.
+- `REQ-458`_
+- `REQ-627`_
+- `REQ-890`_
 
 The vFW CNF Use Case
 ~~~~~~~~~~~~~~~~~~~~
@@ -58,91 +61,30 @@ Helm             `vFW_Helm Model`_       Helm templates used in `vFW EDGEX K8S`_
 CDS model        `vFW CBA Model`_        CDS CBA model used in `vFW CDS Dublin`_ demo
 ===============  =================       ===========
 
-.. note::  Since the Guilin release `vFW_CNF_CDS Model`_ contains sources that allow to model and instantiate CNF with VNF/Heat orchestration approach (Frankfurt) and with native Helm orchestration approach. Please follow README.txt description and further documentation here to generate and select appropriate onboarding package which will leverage appropriate SO orchestration path.
+.. note::  Since the Guilin release `vFW_CNF_CDS Model`_ contains sources that allow to model and instantiate CNF with VNF/Heat orchestration approach (Frankfurt) and with native Helm orchestration approach (Guilin and beyond). VNF/Heat orchestration approach is deprecated and will not be enhanced in the future. Please follow README.txt description and further documentation here to generate and select appropriate onboarding package which will leverage appropriate SO orchestration path.
 
-Modeling Onboarding Package/Helm
-................................
+Since Honolulu release vFW CNF use case supports three different scenarios where different capabilities of CNF Orchestration in ONAP can be experimented:
 
-The starting point for this demo was Helm package containing one Kubernetes application, see `vFW_Helm Model`_. In this demo we decided to follow SDC/SO vf-module concept the same way as original vFW demo was split into multiple vf-modules instead of one (`vFW_NextGen`_). The same way we splitted Helm version of vFW into multiple Helm packages each matching one dedicated vf-module.
+.. figure:: files/vFW_CNF_CDS/scenarios.png
+   :scale: 60 %
+   :align: center
 
-The Guilin version of the `vFW_CNF_CDS Model`_ contains files required to create **VSP onboarding packages in two formats**: the **Dummy Heat** (available in Frankfurt release already) one that considers association of each Helm package with dummy heat templates and the **Native Helm** one where each Helm package is standalone and is natively understood in consequence by SO. For both variants of VSP Helm packages are matched to the vf-module concept, so basically each Helm application after instantiation is visible to ONAP as a separate vf-module. The chosen format for onboarding has **crucial** role in the further orchestration approach applied for Helm package instantiation. The **Dummy Heat** will result with orchestration through the **Openstack Adapter** component of SO while **Native Helm** will result with **CNF Adapter**. Both approaches will result with instantiation of the same CNF, however the **Native Helm** approach will be enhanced in the future releases while **Dummy Heat** approach will become deprecated in the future.
+   vFW CNF Scenarios
 
-Produced **Dummy Heat** VSP onboarding package `Creating Onboarding Package`_ format has following MANIFEST file (package_dummy/MANIFEST.json). The Helm package is delivered as CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT package through SDC and SO. Dummy heat templates are matched to Helm packages by the same prefix <vf_module_label> of the file name that for both dummy Heat teamplate and for CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT must be the same, like i.e. *vpg* vf-module in the manifest file below. The name of the CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT artifact is predefined and needs to match the pattern: <vf_module_label>_cloudtech_k8s_charts.tgz. More examples can be found in `Modeling Onboarding Package/Helm`_ section.
+- Scenario 1: simple deployment of vFW CNF instance
+- Scenario 2: deployment of vFW CNF instance with enrichment of the Helm deployment with profiling mechanism
+- Scenario 3: deployment of vFW CNF instance with Day2 configuration applied and CNF status checked as a part of a config-deploy operation 
 
-::
+The 3rd scenario presents the most comprehensive way of managing the CNF in ONAP, including Day 0/1/2 operations. It shows also how to combine in the Day2 operation information for the AAI and SDNC MDSAL. All scenarios can be supported by execution of the dedicated Healthcheck workflow `3-5 Verification of the CNF Status`_. 
 
-    {
-        "name": "virtualFirewall",
-        "description": "",
-        "data": [
-            {
-                "file": "CBA.zip",
-                "type": "CONTROLLER_BLUEPRINT_ARCHIVE"
-            },
-            {
-                "file": "base_template.yaml",
-                "type": "HEAT",
-                "isBase": "true",
-                "data": [
-                    {
-                        "file": "base_template.env",
-                        "type": "HEAT_ENV"
-                    }
-                ]
-            },
-            {
-                "file": "base_template_cloudtech_k8s_charts.tgz",
-                "type": "CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"
-            },
-            {
-                "file": "vfw.yaml",
-                "type": "HEAT",
-                "isBase": "false",
-                "data": [
-                    {
-                        "file": "vfw.env",
-                        "type": "HEAT_ENV"
-                    }
-                ]
-            },
-            {
-                "file": "vfw_cloudtech_k8s_charts.tgz",
-                "type": "CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"
-            },
-            {
-                "file": "vpkg.yaml",
-                "type": "HEAT",
-                "isBase": "false",
-                "data": [
-                    {
-                        "file": "vpkg.env",
-                        "type": "HEAT_ENV"
-                    }
-                ]
-            },
-            {
-                "file": "vpkg_cloudtech_k8s_charts.tgz",
-                "type": "CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"
-            },
-            {
-                "file": "vsn.yaml",
-                "type": "HEAT",
-                "isBase": "false",
-                "data": [
-                    {
-                        "file": "vsn.env",
-                        "type": "HEAT_ENV"
-                    }
-                ]
-            },
-            {
-                "file": "vsn_cloudtech_k8s_charts.tgz",
-                "type": "CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT"
-            }
-        ]
-    }
+Modeling of Onboarding Package/Helm
+...................................
+
+The starting point for this demo was Helm package containing one Kubernetes application, see `vFW_Helm Model`_. In this demo we decided to follow SDC/SO vf-module concept the same way as original vFW demo was split into multiple vf-modules instead of one (`vFW_NextGen`_). The same way we splitted Helm version of vFW into multiple Helm packages each matching one dedicated vf-module.
+
+The Jakarta version of the `vFW_CNF_CDS Model`_ contains files required to create **VSP onboarding packages in Helm Native format** where each Helm package is standalone and is natively understood in consequence by SO. The **Dummy Heat** (available in Frankfurt release already) one that considers association of each Helm package with dummy heat templates since Jakarta is not a prt of the vFW CNF demo. If you are interested to see how to onboard and orchestrate the CNF using the **Dummy Heat** approach, please open the Istanbul version of the documentation. The VSP Helm packages are matched to the vf-module concept, so basically each Helm application after instantiation is visible to ONAP as a separate vf-module. The **Native Helm** format for onboarding has **crucial** role in the further orchestration approach applied for Helm package instantiation as it leverages the **CNF Adapter** and it populates k8s resource information to AAI what plays significant role in the Day operation for CNFs, including closed-loop automation with Prometheus. Read more in `3-1 CNF Orchestration Paths in ONAP`_
 
-Produced **Native Helm** VSP onboarding package `Creating Onboarding Package`_ format has following MANIFEST file (package_native/MANIFEST.json). The Helm package is delivered as HELM package through SDC and SO. The *isBase* flag of HELM artifact is ignored by SDC but in the manifest one HELM or HEAT artifacts must be defined as isBase = true. If both HEAT and HELM are present in the same manifest file the base one must be always one of HELM artifacts. Moreover, the name of HELM type artifact must match the specified pattern: *helm_<some_name>* and the HEAT type artifacts, if present in the same manifest, cannot contain keyword *helm*. These limitations are a consequence of current limitations of the SDC onboarding and VSP validation engine and will be adresssed in the future releases.
+Produced **Native Helm** VSP onboarding package `Creating Onboarding Package`_ format has following MANIFEST file (package_native/MANIFEST.json). The Helm package is delivered as HELM package through SDC and SO. The *isBase* flag of HELM artifact is ignored by SDC but in the manifest one HELM or HEAT artifacts must be defined as isBase = true. If both HEAT and HELM are present in the same manifest file the base one must be always one of HELM artifacts. Moreover, the name of HELM type artifact **MUST** match the specified pattern: *helm_<some_name>* and the HEAT type artifacts, if present in the same manifest, cannot contain keyword *helm*. These limitations are a consequence of current limitations of the SDC onboarding and VSP validation engine and will be adresssed in the future releases.
 
 ::
 
@@ -182,58 +124,36 @@ Produced **Native Helm** VSP onboarding package `Creating Onboarding Package`_ f
 CDS Model (CBA)
 ...............
 
+CDS plays a crucial role in the process of CNF instantiation and is responsible for delivery of instantiation parameters, CNF customization, configuration of CBF after the deployment and may be used in the process of CNF status verification.
+
 Creating CDS model was the core of the use case work and also the most difficult and time consuming part. Current template used by use-case should be easily reusable for anyone. Once CDS GUI will be fully working, we think that CBA development should be much easier. For CBA structure reference, please visit it's documentation page `CDS Documentation`_.
 
 At first the target was to keep CDS model as close as possible to `vFW_CNF_CDS Model`_ use case model and only add smallest possible changes to enable also k8s usage. That is still the target but in practice model deviated from the original one already and time pressure pushed us to not care about sync. Basically the end result could be possible much streamlined if wanted to be smallest possible to working only for K8S based network functions.
 
-As K8S application was split into multiple Helm packages to match vf-modules, CBA modeling follows the same and for each vf-module there's own template in CBA package. The list of artifact with the templates is different for **Dummy Heat** and **Native Helm** approach. The second one has artifact names starting with *helm_* prefix, in the same way like names of artifacts in the MANIFEST file of VSP differs. The **Dummy Heat** artifacts' list is following:
+Base on this example there are demonstrated following features of CDS and CBA model
 
-::
+- resource assignment string, integer and json types
+- sourcing of resolved value on vf-module level from vnf level assignment
+- extracting data from AAI and MD-SAL during the resource assignment
+- custom resource assignment with Kotlin script
+- templating of the vtl files
+- building of imperative workflows
+- utilization of on_succes and on_failure event in imperative workflow
+- handling of the failure in the workflow
+- implementation of custom workflow logic with Kotlin script
+- example of config-assign and config-deploy operation decomposed into many steps
+- complex parametrization of config deploy operation
+- combination and aggregation of AAI and MD-SAL data in config-assign and config-deploy operations
 
-    "artifacts" : {
-      "base_template-template" : {
-        "type" : "artifact-template-velocity",
-        "file" : "Templates/base_template-template.vtl"
-      },
-      "base_template-mapping" : {
-        "type" : "artifact-mapping-resource",
-        "file" : "Templates/base_template-mapping.json"
-      },
-      "vpkg-template" : {
-        "type" : "artifact-template-velocity",
-        "file" : "Templates/vpkg-template.vtl"
-      },
-      "vpkg-mapping" : {
-        "type" : "artifact-mapping-resource",
-        "file" : "Templates/vpkg-mapping.json"
-      },
-      "vfw-template" : {
-        "type" : "artifact-template-velocity",
-        "file" : "Templates/vfw-template.vtl"
-      },
-      "vfw-mapping" : {
-        "type" : "artifact-mapping-resource",
-        "file" : "Templates/vfw-mapping.json"
-      },
-      "vnf-template" : {
-        "type" : "artifact-template-velocity",
-        "file" : "Templates/vnf-template.vtl"
-      },
-      "vnf-mapping" : {
-        "type" : "artifact-mapping-resource",
-        "file" : "Templates/vnf-mapping.json"
-      },
-      "vsn-template" : {
-        "type" : "artifact-template-velocity",
-        "file" : "Templates/vsn-template.vtl"
-      },
-      "vsn-mapping" : {
-        "type" : "artifact-mapping-resource",
-        "file" : "Templates/vsn-mapping.json"
-      }
-    }
+The prepared CBA model demonstrates also how to utilize CNF specific features of CBA, suited for the deployment of CNF with k8splugin in ONAP:
 
-The **Native Helm** artifacts' list is following:
+- building and upload of k8s profile template into k8splugin
+- building and upload of k8s configuration template into k8splugin
+- parametrization and creation of configuration instance from configuration template
+- validation of CNF status with Kotlin script
+- execution of the CNF healtcheck
+
+As K8S application is split into multiple Helm packages to match vf-modules, CBA modeling follows the same and for each vf-module there's own template in CBA package. The **Native Helm** approach, requires the Helm artifact names to star with *helm_* prefix, in the same way like names of artifacts in the MANIFEST file of VSP differs. The **Native Helm** artifacts' list is following:
 
 ::
 
@@ -280,24 +200,24 @@ The **Native Helm** artifacts' list is following:
       }
     }
 
-Only **resource-assignment** workflow of the CBA model is utilized in this demo. If final CBA model contains also **config-deploy** workflow it's there just to keep parity with original vFW CBA (for VMs). Same applies for the related template *Templates/nf-params-template.vtl* and it's mapping file.
+SO requires for instantiation name of the profile in the parameter: *k8s-rb-profile-name* and name of the release of thr application: *k8s-rb-instance-release-name*. The latter one, when not specified, will be replaced with combination of profile name and vf-module-id for each Helm instance/vf-module instantiated. Both values can be found in vtl templates dedicated for vf-modules.
+
+CBA offers possibility of the automatic generation and upload to multicloud/k8s plugin the RB profile content. RB profile is required if you want to deploy your CNF into k8s namesapce other than *default*. Also, if you want to ensure particular templating of your Helm charts, specific to particular version of the cluster into which Helm packages will deployed on, profile is used to specify the version of your cluster.
 
-Another advance of the presented use case over solution presented in the Dublin release is possibility of the automatic generation and upload to multicloud/k8s plugin the RB profile content.
-RB profile can be used to enrich or to modify the content of the original helm package. Profile can be also used to add additional k8s helm templates for helm installation or can be used to
-modify existing k8s helm templates for each create CNF instance. It opens another level of CNF customization, much more than customization of helm package with override values.
+RB profile can be used to enrich or to modify the content of the original helm package. Profile can be also used to add additional k8s helm templates for helm installation or can be used to modify existing k8s helm templates for each create CNF instance. It opens another level of CNF customization, much more than customization of the Helm package with override values. K8splugin offers also *default* profile without content, for default namespace and default cluster version.
 
 ::
 
   ---
   version: v1
   type:
-    values: “override_values.yaml”
+    values: "override_values.yaml"
     configresource:
       - filepath: resources/deployment.yaml
         chartpath: templates/deployment.yaml
 
 
-Above we have exemplary manifest file of the RB profile. Since Frankfurt *override_values.yaml* file does not need to be used as instantiation values are passed to the plugin over Instance API of k8s plugin. In the example, profile contains additional k8s helm template which will be added on demand to the helm package during its installation. In our case, depending on the SO instantiation request input parameters, vPGN helm package can be enriched with additional ssh service. Such service will be dynamically added to the profile by CDS and later on CDS will upload whole custom RB profile to multicloud/k8s plugin.
+Above we have exemplary manifest file of the RB profile. Since Frankfurt *override_values.yaml* file does not need to be used as instantiation values are passed to the plugin over Instance API of k8s plugin. In the example, profile contains additional k8s Helm template which will be added on demand to the helm package during its installation. In our case, depending on the SO instantiation request input parameters, vPGN helm package can be enriched with additional ssh service. Such service will be dynamically added to the profile by CDS and later on CDS will upload whole custom RB profile to multicloud/k8s plugin.
 
 In order to support generation and upload of profile, our vFW CBA model has enhanced **resource-assignment** workflow which contains additional step: **profile-upload**. It leverages dedicated functionality introduced in Guilin release that can be used to upload predefined profile or to generate and upload content of the profile with Velocity templating mechanism.
 
@@ -328,7 +248,7 @@ In order to support generation and upload of profile, our vFW CBA model has enha
             }
         },
 
-.. note:: In the Frankfurt reelase profile upload was implementes as a custom Kotlin script included into the CBA. It was responsible for upload of K8S profile into multicloud/k8s plugin. It is still a good example of  the integration of Kotlin scripting into the CBA. For those interested in this functionaliy we recommend to look into the `Frankfurt CBA Definition`_ and `Frankfurt CBA Script`_.
+.. note:: In the Frankfurt release profile upload was implemented as a custom Kotlin script included into the CBA. It was responsible for upload of K8S profile into multicloud/k8s plugin. It is still a good example of the integration of Kotlin scripting into the CBA. For those interested in this functionaliy we recommend to look into the `Frankfurt CBA Definition`_ and `Frankfurt CBA Script`_. Since Honolulu we introduce more advanced use of the Kotlin script for verification of the CNF status or custom resolution of complex parameters over Kotlin script - both can be found in the further part of the documentation.
 
 In our example for vPKG helm package we may select *vfw-cnf-cds-vpkg-profile* profile that is included into CBA as a folder. Profile generation step uses Velocity templates processing embedded CDS functionality on its basis ssh port number (specified in the SO request as *vpg-management-port*).
 
@@ -370,8 +290,9 @@ In our example for vPKG helm package we may select *vfw-cnf-cds-vpkg-profile* pr
       release: {{ .Release.Name }}
       chart: {{ .Chart.Name }}
 
+.. warning:: The port value is of Integer type and CDS resolves it as an integer. If the resolved values are returned to SO during the resource resolution phase they are being passed to k8splugin back only as a strings. In consequence, Integer values are passed to the Instantiation API as a strings and then they have go be converted in the helm template to the integer. In order to avoid such conversion it is better to customize override values with Integers in the profile and to skip return of this parameters in the resource resolution phase (they should not be included in the .vtl files).
 
-The mechanism of profile generation and upload requires specific node teamplate in the CBA definition. In our case it comes with the declaration of two profiles: one static *vfw-cnf-cds-base-profile* in a form of an archive and the second complex *vfw-cnf-cds-vpkg-profile* in a form of a folder for processing and profile generation.
+The mechanism of profile generation and upload requires specific node teamplate in the CBA definition. In our case, it comes with the declaration of two profiles: one static *vfw-cnf-cds-base-profile* in a form of an archive and the second complex *vfw-cnf-cds-vpkg-profile* in a form of a folder for processing and profile generation. Below is the example of the definition of node type for execution of the profile upload operation.
 
 ::
 
@@ -412,7 +333,7 @@ The mechanism of profile generation and upload requires specific node teamplate
         }
     }
 
-Artifact file determines a place of the static profile or the content of the complex profile. In the latter case we need a pair of profile folder and mappimng file with a declaration of the parameters that CDS needs to resolve first, before the Velocity templating is applied to the .vtl files present in the profile content. After Velocity templating the .vtl extensions will be dropped from the file names. The embedded mechanism will include in the profile only files present in the profile MANIFEST file that needs to contain the list of final names of the files to be included into the profile. The figure below shows the idea of profile templating.
+Artifact file determines a place of the static profile or the content of the complex profile. In the latter case we need a pair of profile folder and mapping file with a declaration of the parameters that CDS needs to resolve first, before the Velocity templating is applied to the .vtl files present in the profile content. After Velocity templating the .vtl extensions will be dropped from the file names. The embedded mechanism will include in the profile only files present in the profile MANIFEST file that needs to contain the list of final names of the files to be included into the profile. The figure below shows the idea of profile templating.
 
 .. figure:: files/vFW_CNF_CDS/profile-templating.png
    :align: center
@@ -421,17 +342,22 @@ Artifact file determines a place of the static profile or the content of the com
 
 SO requires for instantiation name of the profile in the parameter: *k8s-rb-profile-name*. The *component-k8s-profile-upload* that stands behind the profile uploading mechanism has input parameters that can be passed directly (checked in the first order) or can be taken from the *resource-assignment-map* parameter which can be a result of associated *component-resource-resolution* result, like in our case their values are resolved on vf-module level resource assignment. The *component-k8s-profile-upload* inputs are following:
 
-- k8s-rb-profile-name – (mandatory) the name of the profile under which it will be created in k8s plugin. Other parameters are required only when profile must be uploaded
-- k8s-rb-definition-name – the name under which RB definition was created - **VF Module Model Invariant ID** in ONAP
-- k8s-rb-definition-version – the version of created RB definition name - **VF Module Model Version ID**  in ONAP
-- k8s-rb-profile-namespace – the k8s namespace name associated with profile being created
-- k8s-rb-profile-source – the source of profile content - name of the artifact of the profile
-- resource-assignment-map – result of the associated resource assignment step
-- artifact-prefix-names – (mandatory) the list of artifact prefixes like for resource-assigment step
+- k8s-rb-definition-name [string] - (mandatory) the name under which RB definition was created - **VF Module Model Invariant ID** in ONAP
+- k8s-rb-definition-version [string] - (mandatory) the version of created RB definition name - **VF Module Model Customization ID**  in ONAP
+- k8s-rb-profile-name [string] - (mandatory) the name of the profile under which it will be created in k8s plugin. Other parameters are required only when profile must be uploaded because it does not exist yet
+- k8s-rb-profile-source [string] - the source of profile content - name of the artifact of the profile. If missing *k8s-rb-profile-name* is treated as a source
+- k8s-rb-profile-namespace [string] - (mandatory) the k8s namespace name associated with profile being created
+- k8s-rb-profile-kubernetes-version [string] - the version of the cluster on which application will be deployed - it may impact the helm templating process like selection of the api versions for resources so it should match the version of k8s cluster in which resources are bing deployed.
+- k8s-rb-profile-labels [json] - the extra labels (label-name: label-value) to add for each k8s resource created for CNF in the k8s cluster (since Jakarta release).
+- k8s-rb-profile-extra-types [list<json>] - the list of extra k8s types that should be returned by StatusAPI. It may be usefull when k8s resources associated with CNF instance are created outside of the helm package (i.e. by k8s operator) but should be treated like resources of CNF. To make it hapens such resources should have the instance label *k8splugin.io/rb-instance-id* what may be assured by such tools like *kyverno*. Each extra type json object needs *Group*, *Version* and *Kind* attributes. (since Jakarta release).
+- resource-assignment-map [json] - result of the associated resource assignment step - it may deliver values of inputs if they are not specified directly
+- artifact-prefix-names [list<string>] - (mandatory) the list of artifact prefixes like for resource-assigment step in the resource-assigment workflow or its subset
+
+In the SO request user can pass parameter of name *k8s-rb-profile-name* which in our case may have value: *vfw-cnf-cds-base-profile*, *vfw-cnf-cds-vpkg-profile* or *default*. The *default* profile does not contain any content inside and allows instantiation of CNF without the need to define and upload any additional profiles. *vfw-cnf-cds-vpkg-profile* has been prepared to test instantiation of the second modified vFW CNF instance.
 
-In the SO request user can pass parameter of name *k8s-rb-profile-name* which in our case may have value: *vfw-cnf-cds-base-profile*, *vfw-cnf-cds-vpkg-profile* or *default*. The *default* profile doesn’t contain any content inside and allows instantiation of CNF without the need to define and upload any additional profiles. *vfw-cnf-cds-vpkg-profile* has been prepared to test instantiation of the second modified vFW CNF instance `Second Service Instance Instantiation`_.
+K8splugin allows to specify override parameters (similar to --set behavior of helm client) to instantiated resource bundles. This allows for providing dynamic parameters to instantiated resources without the need to create new profiles for this purpose. This mechanism should be used with *default* profile but may be used also with any custom profile.
 
-K8splugin allows to specify override parameters (similar to --set behavior of helm client) to instantiated resource bundles. This allows for providing dynamic parameters to instantiated resources without the need to create new profiles for this purpose and should be used with *default* profile but may be used also with custom profiles. The overall flow of helm overrides parameters processing is visible on following figure. When *rb definition* (helm package) is being instantiated for specified *rb profile* K8splugin combines override values from the helm pakage, *rb profile* and from the instantiation request - in the respective order. It means that the some from instantiation request (SO request input or CDS resource assignement result) has a precedence over the value from the *rb profile* and value from the *rb profile* has a precedence over the helm package default override value. Similarly, profile can contain resource files that may extend or ammend the existing files for the original helm package content.
+The overall flow of helm overrides parameters processing is visible on following figure. When *rb definition* (helm package) is being instantiated for specified *rb profile* K8splugin combines override values from the helm package, *rb profile* and from the instantiation request - in the respective order. It means that the value from the instantiation request (SO request input or CDS resource assignment result) has a precedence over the value from the *rb profile* and value from the *rb profile* has a precedence over the helm package default override value. Similarly, profile can contain resource files that may extend or ammend the existing files for the original helm package content.
 
 .. figure:: files/vFW_CNF_CDS/helm-overrides.png
    :align: center
@@ -445,9 +371,190 @@ Both profile content (4) like the instantiation request values (5) can be genera
 
    The steps of processing of helm data with help of CDS
 
-Finally, `Data Dictionary`_ is also included into demo git directory, re-modeling and making changes into model utilizing CDS model time / runtime is easier as used DD is also known. 
+Both profile content (4) like the instantiation request values (5) can be generated during the resource assignment process according to its definition for CBA associated with helm package. CBA may generate i.e. names, IP addresses, ports and can use this information to produce the *rb-profile* (3) content. Finally, all three sources of override values, temnplates and additional resources files are merged together (6) by K8splugin in the order exaplained before.
+
+Besides the deployment of Helm application the CBA of vFW demonstrates also how to use deicated features for config-assign (7) and config-deploy (8) operations. In the use case, *config-assign* and *config-deploy* operations deal mainly with creation and instantiation of configuration template for k8s plugin. The configuration template has a form of Helm package. When k8s plugin instantiates configuration, it creates or may replace existing resources deployed on k8s cluster. In our case the configuration template is used to provide alternative way of upload of the additional ssh-service but it coud be used to modify configmap of vfw or vpkg vf-modules.
+
+In order to provide configuration instantiation capability standard *config-assign* and *config-deploy* workflows have been changed into imperative workflows with first step responsible for collection of information for configuration templating and configuration instantiation. The source of data for this operations is AAI, MDSAL with data for vnf and vf-modules as *config-assign* and *config-deploy* does not receive dedicated input parameters from SO. In consequence both operations need to source from *resource-assignment* phase and data placed in the AAI and MDSAL.
+
+vFW CNF *config-assign* workflow is following:
+
+::
+
+    "config-assign": {
+        "steps": {
+            "config-setup": {
+                "description": "Gather necessary input for config template upload",
+                "target": "config-setup-process",
+                "activities": [
+                    {
+                        "call_operation": "ResourceResolutionComponent.process"
+                    }
+                ],
+                "on_success": [
+                    "config-template"
+                ]
+            },
+            "config-template": {
+                "description": "Generate and upload K8s config template",
+                "target": "k8s-config-template",
+                "activities": [
+                    {
+                        "call_operation": "K8sConfigTemplateComponent.process"
+                    }
+                ]
+            }
+        },
+
+vFW CNF *config-deploy* workflow is following:
 
-.. note:: The CBA for this use case is already enriched and there is no need to perform enrichment process for it. It is also automatically uploaded into CDS in time of the model distribution from the SDC.
+::
+
+    "config-deploy": {
+        "steps": {
+            "config-setup": {
+                "description": "Gather necessary input for config init and status verification",
+                "target": "config-setup-process",
+                "activities": [
+                    {
+                        "call_operation": "ResourceResolutionComponent.process"
+                    }
+                ],
+                "on_success": [
+                    "config-apply"
+                ]
+            },
+            "config-apply": {
+                "description": "Activate K8s config template",
+                "target": "k8s-config-apply",
+                "activities": [
+                    {
+                        "call_operation": "K8sConfigTemplateComponent.process"
+                    }
+                ],
+                "on_success": [
+                    "status-verification-script"
+                ]
+            },
+
+
+In our example configuration template for vFW CNF is a helm package that contains the same resource that we can find in the vPKG *vfw-cnf-cds-vpkg-profile* profile - extra ssh service. This helm package contains Helm encapsulation for ssh-service and the values.yaml file with declaration of all the inputs that may parametrize the ssh-service. The configuration templating step leverages the *component-k8s-config-template* component that prepares the configuration template and uploads it to k8splugin. In consequence, it may be used later on for instatiation of the configuration.
+
+In this use case we have two options with *ssh-service-config* and *ssh-service-config-customizable* as a source of the same configuration template. In consequence, or we take a complete template or we have have the template folder with the content of the helm package and CDS may perform dedicated resource resolution for it with templating of all the files with .vtl extensions. The process is very similar to the one describe for profile upload functionality.
+
+::
+
+    "k8s-config-template": {
+        "type": "component-k8s-config-template",
+        "interfaces": {
+            "K8sConfigTemplateComponent": {
+                "operations": {
+                    "process": {
+                        "inputs": {
+                            "artifact-prefix-names": [
+                                "helm_vpkg"
+                            ],
+                            "resource-assignment-map": {
+                                "get_attribute": [
+                                    "config-setup-process",
+                                    "",
+                                    "assignment-map",
+                                    "config-deploy",
+                                    "config-deploy-setup"
+                                ]
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "artifacts": {
+            "ssh-service-config": {
+                "type": "artifact-k8sconfig-content",
+                "file": "Templates/k8s-configs/ssh-service.tar.gz"
+            },
+            "ssh-service-config-customizable": {
+                "type": "artifact-k8sconfig-content",
+                "file": "Templates/k8s-configs/ssh-service-config"
+            },
+            "ssh-service-config-customizable-mapping": {
+                "type": "artifact-mapping-resource",
+                "file": "Templates/k8s-configs/ssh-service-config/ssh-service-mapping.json"
+            }
+        }
+    }
+
+The *component-k8s-config-template* that stands behind creation of configuration template has input parameters that can be passed directly (checked in the first order) or can be taken from the *resource-assignment-map* parameter which can be a result of associated *component-resource-resolution* result, like in vFW CNF use case their values are resolved on vf-module level dedicated for *config-assign* and *config-deploy* resource assignment step. The *component-k8s-config-template* inputs are following:
+
+- k8s-rb-definition-name [string] - (mandatory) the name under which RB definition was created - **VF Module Model Invariant ID** in ONAP
+- k8s-rb-definition-version [string] - (mandatory) the version of created RB definition name - **VF Module Model Customization ID**  in ONAP
+- k8s-rb-config-template-name [string] - (mandatory) the name of the configuration template under which it will be created in k8s plugin. Other parameters are required only when configuration template must be uploaded because it does not exist yet
+- k8s-rb-config-template-source [string] - the source of config template content - name of the artifact of the configuration template. When missing, the main definition helm package will be used as a configuration template source (since Jakarta release).
+- resource-assignment-map [json] - result of the associated resource assignment step - it may deliver values of inputs if they are not specified directly
+- artifact-prefix-names [list<string>] - (mandatory) the list of artifact prefixes like for resource-assigment step in the resource-assigment workflow or its subset
+
+In our case the *component-k8s-config-template* component receives all the inputs from the dedicated resource-assignment process  *config-setup* that is responsible for resolution of all the inputs for configuration templating. This process generates data for *helm_vpkg* prefix and such one is specified in the list of prefixes of the configuration template component. It means that configuration template will be prepared only for vPKG function.
+
+::
+
+    "k8s-config-apply": {
+        "type": "component-k8s-config-value",
+        "interfaces": {
+            "K8sConfigValueComponent": {
+                "operations": {
+                    "process": {
+                        "inputs": {
+                            "artifact-prefix-names": [
+                                "helm_vpkg"
+                            ],
+                            "k8s-config-operation-type": "create",
+                            "resource-assignment-map": {
+                                "get_attribute": [
+                                    "config-setup-process",
+                                    "",
+                                    "assignment-map",
+                                    "config-deploy",
+                                    "config-deploy-setup"
+                                ]
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "artifacts": {
+            "ssh-service-default": {
+                "type": "artifact-k8sconfig-content",
+                "file": "Templates/k8s-configs/ssh-service-config/values.yaml"
+            },
+            "ssh-service-config": {
+                "type": "artifact-k8sconfig-content",
+                "file": "Templates/k8s-configs/ssh-service-values/values.yaml.vtl"
+            },
+            "ssh-service-config-mapping": {
+                "type": "artifact-mapping-resource",
+                "file": "Templates/k8s-configs/ssh-service-values/ssh-service-mapping.json"
+            }
+        }
+    }
+
+
+The *component-k8s-config-value* that stands behind creation of configuration instance has input parameters that can be passed directly (checked in the first order) or can be taken from the *resource-assignment-map* parameter which can be a result of associated *component-resource-resolution* result, like in vFW CNF use case their values are resolved on vf-module level dedicated for *config-assign* and *config-deploy*'s' resource-assignment step. The *component-k8s-config-value* inputs are following:
+
+- k8s-rb-config-name [string] - (mandatory) the name of the configuration template under which it will be created in k8s plugin. Other parameters are required only when configuration template must be uploaded because it does not exist yet
+- k8s-rb-config-template-name [string] - (mandatory) the name of the configuration template under which it will be created in k8s plugin. Other parameters are required only when configuration template must be uploaded because it does not exist yet
+- k8s-rb-config-value-source [string] - the source of config template content - name of the artifact of the configuration template. If missing *k8s-rb-config-name* is treated as a source
+- k8s-rb-config-version [string] - the version of the configuration to restore during the *rollback* operation. First configuratino after *create* has version *1* and new ones, after *update* will have version of the following numbers. When *rollback* operation is performed all previous versions on the path to the desired one are being restored one, by one. (since Jakarta)
+- k8s-instance-id [string] - (mandatory) the identifier of the rb instance for which the configuration should be applied
+- k8s-config-operation-type [string] - the type of the configuration operation to perform: *create*, *update*, *rollback*, *delete* or *delete_config*. By default *create* operation is performed. *rollback* and *delete_config* types are present since Jakarta release. The *update* operation creates new version of the configuration. *delete* operation creates also new version of configuratino that deletes all the resources in k8s from the cluster. *delete_config* operation aims to delete configuration entirely but it does not delete or update any resources associated with the configuration.
+- resource-assignment-map [json] - result of the associated resource assignment step - it may deliver values of inputs if they are not specified directly
+- artifact-prefix-names [list<string>] - (mandatory) the list of artifact prefixes like for resource-assigment step in the resource-assigment workflow or its subset
+
+Like for the configuration template, the *component-k8s-config-value* component receives all the inputs from the dedicated resource-assignment process *config-setup* that is responsible for resolution of all the inputs for configuration. This process generates data for *helm_vpkg* prefix and such one is specified in the list of prefixes of the configuration values component. It means that configuration instance will be created only for vPKG function (component allows also update or delete of the configuration but in the vFW CNF case it is used only to create configuration instance).
+
+Finally, `Data Dictionary`_ is also included into demo git directory, re-modeling and making changes into model utilizing CDS model time / runtime is easier as used DD is also known.
+
+.. note:: CBA of vFW CNF use case is already enriched and VSP of vFW CNF has CBA included inside. In conequence, when VSP is being onboarded into SDC and service is being distributed, CBA is uploaded into CDS. Anyway, CDS contains in the starter dictionary all data dictionary values used in the use case and enrichment of CBA should work as well.
 
 Instantiation Overview
 ----------------------
@@ -467,7 +574,7 @@ PART 1 - ONAP Installation
 1-1 Deployment components
 .........................
 
-In order to run the vFW_CNF_CDS use case, we need ONAP Guilin Release (or later) with at least following components:
+In order to run the vFW_CNF_CDS use case, we need ONAP Jakarta Release (or later) with at least following components:
 
 =======================================================   ===========
 ONAP Component name                                       Describtion
@@ -475,8 +582,8 @@ ONAP Component name                                       Describtion
 AAI                                                       Required for Inventory Cloud Owner, Customer, Owning Entity, Service, Generic VNF, VF Module
 SDC                                                       VSP, VF and Service Modeling of the CNF
 DMAAP                                                     Distribution of the onboarding package including CBA to all ONAP components
-SO                                                        Requires for Macro Orchestration using the generic building blocks
-CDS                                                       Resolution of cloud parameters including Helm override parameters for the CNF. Creation of the multicloud/k8s profile for CNF instantion.
+SO                                                        Required for Macro Orchestration using the generic building blocks
+CDS                                                       Resolution of cloud parameters including Helm override parameters for the CNF. Creation of the multicloud/k8s profile for CNF instantion. Creation of configuration template and its instantiation
 SDNC (needs to include netbox and Naming Generation mS)   Provides GENERIC-RESOURCE-API for cloud Instantiation orchestration via CDS.
 Policy                                                    Used to Store Naming Policy
 AAF                                                       Used for Authentication and Authorization of requests
@@ -579,9 +686,9 @@ And check status of pods, deployments, jobs etc.
 1-3 Post Deployment
 ...................
 
-After completing the first part above, we should have a functional ONAP deployment for the Guilin Release.
+After completing the first part above, we should have a functional ONAP deployment for the Jakarta Release.
 
-We will need to apply a few modifications to the deployed ONAP Guilin instance in order to run the use case.
+We will need to apply a few modifications to the deployed ONAP Jakarta instance in order to run the use case.
 
 Retrieving logins and passwords of ONAP components
 ++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -662,7 +769,7 @@ Whole content of this use case is stored into single git repository and it conta
 
 ::
 
-  git clone --single-branch --branch guilin "https://gerrit.onap.org/r/demo"
+  git clone --single-branch --branch jakarta "https://gerrit.onap.org/r/demo"
   cd demo/heat/vFW_CNF_CDS/templates
 
 In order to prepare environment for onboarding and instantiation of the use case make sure you have *git*, *make*, *helm* and *pipenv* applications installed.
@@ -693,14 +800,21 @@ The automation scripts are based on `Python SDK`_ and are adopted to automate pr
 
 4. Modify config.py file
 
-- NATIVE - when enabled **Native Helm** path will be used, otherwise **Dummy Heat** path will be used
-- CLOUD_REGION - name of your k8s cluster from ONAP perspective
+- SCENARIO - like described in the `The vFW CNF Use Case`_ section
+- NATIVE - when enabled (default) **Native Helm** path will be used, otherwise **Dummy Heat** path will be used (deprecated)
+- MACRO_INSTANTIATION - instantiation method used: macro (default) or a'la carte. A'la carte only for the purpose of use with other use cases
+- K8S_NAMESPACE - k8s namespace to use for deployment of CNF (vfirewall by default)
+- K8S_VERSION - version of the k8s cluster
+- K8S_REGION - name of the k8s region from the CLOUD_REGIONS (kud by default)
+- CLOUD_REGIONS - configuration of k8s or Openstack regions
 - GLOBAL_CUSTOMER_ID - identifier of customer in ONAP
 - VENDOR - name of the Vendor in ONAP
 - SERVICENAME - **Name of your service model in SDC**
-- CUSTOMER_RESOURCE_DEFINITIONS - add list of CRDs to be installed on non KUD k8s cluster - should be used ony to use some non-KUD cluster like i.e. ONAP one to test instantiation of Helm package. For KUD should be empty list
+- SKIP_POST_INSTANTIATION - whether post instantiation configuration should be run (it is set indirectly by *SCENARIO*)
+- VNF_PARAM_LIST - list of parameters to pass for VNF creation process
+- VF_MODULE_PARAM_LIST - list of parameters to pass for VF Module creation
 
-.. note:: For automation script it is necessary to modify only NATIVE and SERVICENAME constants. Other constants may be modified if needed.
+.. note:: For automation script it is necessary to modify only SCENARIO constant. Other constants may be modified if needed.
 
 AAI
 ...
@@ -724,7 +838,7 @@ Corresponding GET operations in "Check" folder in Postman can be used to verify
 
 **<AUTOMATED>**
 
-This step is performed jointly with onboarding step `3-1 Onboarding`_
+This step is performed jointly with onboarding step `3-2 Onboarding`_
 
 Naming Policy
 +++++++++++++
@@ -763,6 +877,8 @@ Follow instructions in `KUD github`_ and install target Kubernetes cluster in yo
 
     export KUD_ADDONS="virtlet ovn4nfv"
 
+.. warning:: In order to run vFW CNF Use Case deployment test please make sure that this workaround does not have to be applied as well. `KUD Interface Permission`_
+
 2-2 Cloud Registration
 ......................
 
@@ -806,39 +922,41 @@ Please copy the kubeconfig file of existing KUD cluster to automation/artifacts/
 
 ::
 
-    python create_k8s_region.py
+    python create_cloud_regions.py
 
 PART 3 - Execution of the Use Case
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 This part contains all the steps to run the use case by using ONAP GUIs, Postman or Python automation scripts.
 
-Following pictures describe the overall sequential flow of the use case in two scenarios: **Dummy Heat** path (with OpenStack adapter) and **Native Helm** path (with CNF Adapter)
-
-Dummy Heat CNF Orchestration
-............................
-
-This orchestration method stands on the grounds of Heat template orchestration mechanisms. In SDC onboarding package needs to contains simple Heat templates that are associated with additional Cloud artifacts. SDC distributes Heat templates to SO and Helm packages to K8sPlugin directly. SO orchestrates the Heat templates without any knowledge about their existence, however the OpenStack adater in SO understands k8s region type for which communication over MSB/Mutlicloud is provided - it handles interaction with K8sPlugin for CNF instantiation.
-
-.. figure:: files/vFW_CNF_CDS/Dummy_Heat_Flow.png
-   :align: center
+3-1 CNF Orchestration Paths in ONAP
+...................................
 
-   vFW CNF CDS Use Case sequence flow for *Dummy Heat* (Frankfurt) path.
+Following picture describe the overall sequential flow of the use case for **Native Helm** path (with CNF Adapter)
 
 Native Helm CNF Orchestration
 .............................
 
-Introduced in the Guilin release CNF orchestration method brings native distribution of Helm packages from SDC and native orchestration of CNFs (Helm packages) with SO. SO leverages CNF adapter to interact with K8sPlugin that takes resposnibility for the communication with k8s clusters. Heat templates are not required in the SDC onboarding package and thanks to the fact that SO knows about Helm package orchestration future synchronization of data between k8s clusters and AAI is possible.
+Introduced in the Guilin release CNF orchestration method brings native distribution of Helm packages from SDC and native orchestration of CNFs (Helm packages) with SO. SO leverages CNF adapter to interact with K8sPlugin that takes resposnibility for the communication with k8s clusters. Heat templates are not required in the SDC onboarding package and, thanks to the fact that SO knows about Helm package orchestration, synchronization of data between k8s clusters and AAI is possible. Only in this path, since Istanbul release, k8s-resource object is created in relation to tenant, vf-module and generic-vnf objects in AAI. SO CNF adapter is resposobile for synchronization of data between AAI and k8s cluster, however currently it happens only once - after creation of CNF by SO, so any further changes (like new pods) will not be synchronized into AAI.
 
 .. figure:: files/vFW_CNF_CDS/Native_Helm_Flow.png
    :align: center
 
-   vFW CNF CDS Use Case sequence flow for *Native Helm* (Guilin) path.
+   vFW CNF CDS Use Case sequence flow for *Native Helm* (Guilin+) path.
 
-.. warning:: The **Native Helm** path has identified defects in the instantiation process and requires SO images of version 1.7.11 for successfull instantiation of the CNF. Please monitor `SO-3403`_ and `SO-3404`_ tickets to make sure that necessary fixes have been delivered. SO 1.7.11 images were released Dec 24th 2020. Make sure to use them in Your ONAP/Guilin installation.
 
+Kubernetes and Helm Compatibility
+.................................
 
-3-1 Onboarding
+K8sPlugin, in the Istanbul release (0.9.x), supports Helm packages that can be validated by Helm 3.5 application. It means that new Helm fetures introduced after Helm 3.5 version are not supported currently. Moreover, since Jakarta release K8sPlugin 0.10.x implementation supports upgrade operation but CNF Upgrade orchestration workflow is not yet fully supported in SO orchestration workflows. In consequence, new service moel cna e distributed with new Helm package over SDC but the Helm upgrade procedure must be performed by direct call to k8sPlugin. The request payload is almost the same liek for Isnatce create but release-name comes for the already created instance.
+
+::
+
+    curl -i -X POST http://${K8S_NODE_IP}:30280/api/multicloud-k8s/v1/v1/instance/{rb-instance-id}/upgrade
+
+K8sPlugin utilizes also v0.19.4 version of K8s client and its compatibility matrix with k8s clusters can be found here `K8s Client Compatibility`_, Compatibility Matrix section.
+
+3-2 Onboarding
 ..............
 
 .. note:: Make sure you have performed `Automation Environment Setup`_ steps before following actions here.
@@ -858,7 +976,7 @@ Complete content of both Onboarding Packages for **Dummy Heat**  and **Native He
 
 ::
 
-  git clone --single-branch --branch guilin "https://gerrit.onap.org/r/demo"
+  git clone --single-branch --branch jakarta "https://gerrit.onap.org/r/demo"
   cd demo/heat/vFW_CNF_CDS/templates
   make
 
@@ -1017,7 +1135,7 @@ Service Creation with SDC
 
 **<MANUAL>**
 
-Service Creation in SDC is composed of the same steps that are performed by most other use-cases. For reference, you can relate to `vLB use-case`_
+Service Creation in SDC is composed of the same steps that are performed by most other use-cases. For reference, you can look at `vLB use-case`_
 
 Onboard VSP
 
@@ -1026,13 +1144,12 @@ Onboard VSP
 Create VF and Service
 Service -> Properties Assignment -> Choose VF (at right box):
 
-- skip_post_instantiation_configuration - True
 - sdnc_artifact_name - vnf
 - sdnc_model_name - vFW_CNF_CDS
-- sdnc_model_version - 7.0.0
+- sdnc_model_version - 8.0.0
+- skip_post_instantiation_configuration - True
 
-**<AUTOMATED>**
-.. note:: The onboarding packages for **Dummy Heat** and **Native Helm** path contain different CBA packages but with the same version and number. In consequence, when one VSP is distributed it replaces the CBA package of the other one and you can instantiate service only for the vFW CNF service service model distributed as a last one. If you want to instantiate vFW CNF service, make sure you have fresh distribution of vFW CNF service model.
+.. note:: Since Honolulu skip_post_instantiation_configuration flag can be set to *False* if we want to run config-assign/config-deploy operations.
 
 ::
 
@@ -1087,7 +1204,7 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
             "serviceVnfs": [
                 {
                     "modelInfo": {
-                        "modelName": "vfw_cnf_cds_vsp",
+                        "modelName": "VfVfwK8sDemoCnfMc202109231",
                         "modelUuid": "70edaca8-8c79-468a-aa76-8224cfe686d0",
                         "modelInvariantUuid": "7901fc89-a94d-434a-8454-1e27b99dc0e2",
                         "modelVersion": "1.0",
@@ -1105,24 +1222,24 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
                     "vfModules": [
                         {
                             "modelInfo": {
-                                "modelName": "VfwCnfCdsVsp..base_template..module-0",
-                                "modelUuid": "274f4bc9-7679-4767-b34d-1df51cdf2496",
-                                "modelInvariantUuid": "52842255-b7be-4a1c-ab3b-2bd3bd4a5423",
+                                "modelName": "VfVfwK8sDemoCnfMc202109231..helm_base_template..module-4",
+                                "modelUuid": "a9f5d65f-20c3-485c-8cf9-eda9ea94300e",
+                                "modelInvariantUuid": "7888f606-3ee8-4edb-b96d-467fead6ee4f",
                                 "modelVersion": "1",
-                                "modelCustomizationUuid": "b27fad11-44da-4840-9256-7ed8a32fbe3e"
+                                "modelCustomizationUuid": "b9faba47-d03d-4ba1-a117-4c19632b2136"
                             },
-                            "isBase": true,
+                            "isBase": false,
                             "vfModuleLabel": "base_template",
                             "initialCount": 1,
                             "hasVolumeGroup": false
                         },
                         {
                             "modelInfo": {
-                                "modelName": "VfwCnfCdsVsp..vsn..module-1",
-                                "modelUuid": "0cbf558f-5a96-4555-b476-7df8163521aa",
-                                "modelInvariantUuid": "36f25e1b-199b-4de2-b656-c870d341cf0e",
+                                "modelName": "VfVfwK8sDemoCnfMc202109293..helm_vsn..module-1",
+                                "modelUuid": "8e72ed23-4842-471a-ad83-6a4d285c48e1",
+                                "modelInvariantUuid": "4f5a8a02-0dc6-4387-b86e-bd352f711e18",
                                 "modelVersion": "1",
-                                "modelCustomizationUuid": "4cac0584-c0d6-42a7-bdb3-29162792e07f"
+                                "modelCustomizationUuid": "ab5614d6-25c2-4863-bad3-93e354b4d5ba"
                             },
                             "isBase": false,
                             "vfModuleLabel": "vsn",
@@ -1131,11 +1248,11 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
                         },
                         {
                             "modelInfo": {
-                                "modelName": "VfwCnfCdsVsp..vpkg..module-2",
-                                "modelUuid": "011b5f61-6524-4789-bd9a-44cfbf321463",
-                                "modelInvariantUuid": "4e2b9975-5214-48b8-861a-5701c09eedfa",
+                                "modelName": "VfVfwK8sDemoCnfMc202109293..helm_vpkg..module-2",
+                                "modelUuid": "64f9d622-a8c1-4992-ba35-abdc13f87660",
+                                "modelInvariantUuid": "88d8d71a-30c9-4e00-a6b9-bd86bae7ed37",
                                 "modelVersion": "1",
-                                "modelCustomizationUuid": "4e7028a1-4c80-4d20-a7a2-a1fb3343d5cb"
+                                "modelCustomizationUuid": "37ab4199-19aa-4f63-9a11-d31b8c25ce46"
                             },
                             "isBase": false,
                             "vfModuleLabel": "vpkg",
@@ -1144,11 +1261,11 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
                         },
                         {
                             "modelInfo": {
-                                "modelName": "VfwCnfCdsVsp..vfw..module-3",
-                                "modelUuid": "0de4ed56-8b4c-4a2d-8ce6-85d5e269204f",
-                                "modelInvariantUuid": "9ffda670-3d77-4f6c-a4ad-fb7a09f19817",
+                                "modelName": "VfVfwK8sDemoCnfMc202109293..helm_vfw..module-3",
+                                "modelUuid": "f6f62096-d5cc-474e-82c7-655e7d6628b2",
+                                "modelInvariantUuid": "6077ce70-3a1d-47e6-87a0-6aed6a29b089",
                                 "modelVersion": "1",
-                                "modelCustomizationUuid": "1e123e43-ba40-4c93-90d7-b9f27407ec03"
+                                "modelCustomizationUuid": "879cda5e-7af9-43d2-bd6c-50e330ab328e"
                             },
                             "isBase": false,
                             "vfModuleLabel": "vfw",
@@ -1161,7 +1278,7 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
             ]
         }
 
-.. note:: For **Native Helm** path both modelName will have prefix *helm_* i.e. *helm_vfw* and vfModuleLabel will have *helm_* keyword inside i.e. *VfwCnfCdsVsp..helm_vfw..module-3*
+.. note:: For **Native Helm** path both modelName will have prefix *helm_* i.e. *helm_vfw* and vfModuleLabel will have *helm_* keyword inside i.e. *VfVfwK8sDemoCnfMc202109293..helm_vfw..module-3*
 
 - SDNC:
 
@@ -1178,7 +1295,7 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
             +-----------------+--------------------+--------------------+
             | sdnc_model_name | sdnc_model_version | sdnc_artifact_name |
             +-----------------+--------------------+--------------------+
-            | vFW_CNF_CDS     | 7.0.0              | vnf                |
+            | vFW_CNF_CDS     | 8.0.0              | vnf                |
             +-----------------+--------------------+--------------------+
             1 row in set (0.00 sec)
 
@@ -1201,8 +1318,8 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
                                         "id": "c505e516-b35d-4181-b1e2-bcba361cfd0a",
                                         "artifactUUId": null,
                                         "artifactType": "SDNC_MODEL",
-                                        "artifactVersion": "7.0.0",
-                                        "artifactDescription": "Controller Blueprint for vFW_CNF_CDS:7.0.0",
+                                        "artifactVersion": "8.0.0",
+                                        "artifactDescription": "Controller Blueprint for vFW_CNF_CDS:8.0.0",
                                         "internalVersion": null,
                                         "createdDate": "2020-05-29T06:02:20.000Z",
                                         "artifactName": "vFW_CNF_CDS",
@@ -1235,49 +1352,53 @@ Verify in SDC UI if distribution was successful. In case of any errors (sometime
     ::
 
                 [
-                        {
-                                "rb-name": "52842255-b7be-4a1c-ab3b-2bd3bd4a5423",
-                                "rb-version": "274f4bc9-7679-4767-b34d-1df51cdf2496",
-                                "chart-name": "base_template",
-                                "description": "",
-                                "labels": {
-                                        "vnf_customization_uuid": "b27fad11-44da-4840-9256-7ed8a32fbe3e"
-                                }
-                        },
-                        {
-                                "rb-name": "36f25e1b-199b-4de2-b656-c870d341cf0e",
-                                "rb-version": "0cbf558f-5a96-4555-b476-7df8163521aa",
-                                "chart-name": "vsn",
-                                "description": "",
-                                "labels": {
-                                        "vnf_customization_uuid": "4cac0584-c0d6-42a7-bdb3-29162792e07f"
-                                }
-                        },
-                        {
-                                "rb-name": "4e2b9975-5214-48b8-861a-5701c09eedfa",
-                                "rb-version": "011b5f61-6524-4789-bd9a-44cfbf321463",
-                                "chart-name": "vpkg",
-                                "description": "",
-                                "labels": {
-                                        "vnf_customization_uuid": "4e7028a1-4c80-4d20-a7a2-a1fb3343d5cb"
-                                }
-                        },
-                        {
-                                "rb-name": "9ffda670-3d77-4f6c-a4ad-fb7a09f19817",
-                                "rb-version": "0de4ed56-8b4c-4a2d-8ce6-85d5e269204f",
-                                "chart-name": "vfw",
-                                "description": "",
-                                "labels": {
-                                        "vnf_customization_uuid": "1e123e43-ba40-4c93-90d7-b9f27407ec03"
-                                }
+                    {
+                        "rb-name": "a9f5d65f-20c3-485c-8cf9-eda9ea94300e",
+                        "rb-version": "b9faba47-d03d-4ba1-a117-4c19632b2136",
+                        "chart-name": "base_template",
+                        "description": "",
+                        "labels": {
+                            "vf_module_model_name": "VfVfwK8sDemoCnfMc202109231..helm_base_template..module-4",
+                            "vf_module_model_uuid": "7888f606-3ee8-4edb-b96d-467fead6ee4f"
+                        }
+                    },
+                    {
+                        "rb-name": "f6f62096-d5cc-474e-82c7-655e7d6628b2",
+                        "rb-version": "879cda5e-7af9-43d2-bd6c-50e330ab328e",
+                        "chart-name": "vfw",
+                        "description": "",
+                        "labels": {
+                            "vf_module_model_name": "VfVfwK8sDemoCnfMc202109293..helm_vfw..module-3",
+                            "vf_module_model_uuid": "6077ce70-3a1d-47e6-87a0-6aed6a29b089"
+                        }
+                    },
+                    {
+                        "rb-name": "8e72ed23-4842-471a-ad83-6a4d285c48e1",
+                        "rb-version": "ab5614d6-25c2-4863-bad3-93e354b4d5ba",
+                        "chart-name": "vsn",
+                        "description": "",
+                        "labels": {
+                            "vf_module_model_name": "VfVfwK8sDemoCnfMc202109293..helm_vsn..module-1",
+                            "vf_module_model_uuid": "4f5a8a02-0dc6-4387-b86e-bd352f711e18"
                         }
+                    },
+                    {
+                        "rb-name": "64f9d622-a8c1-4992-ba35-abdc13f87660",
+                        "rb-version": "37ab4199-19aa-4f63-9a11-d31b8c25ce46",
+                        "chart-name": "vpkg",
+                        "description": "",
+                        "labels": {
+                            "vf_module_model_name": "VfVfwK8sDemoCnfMc202109293..helm_vpkg..module-2",
+                            "vf_module_model_uuid": "88d8d71a-30c9-4e00-a6b9-bd86bae7ed37"
+                        }
+                    }
                 ]
 
 **<AUTOMATED>**
 
 Distribution is a part of the onboarding step and at this stage is performed
 
-3-2 CNF Instantiation
+3-3 CNF Instantiation
 .....................
 
 This is the whole beef of the use case and furthermore the core of it is that we can instantiate any amount of instances of the same CNF each running and working completely of their own. Very basic functionality in VM (VNF) side but for Kubernetes and ONAP integration this is the first milestone towards other normal use cases familiar for VNFs.
@@ -1393,7 +1514,7 @@ Before second instance of service is created you need to modify *config.py* file
     python onboarding.py
     python instantiation.py
 
-3-3 Results and Logs
+3-4 Results and Logs
 ....................
 
 Now multiple instances of Kubernetes variant of vFW are running in target VIM (KUD deployment).
@@ -1525,24 +1646,37 @@ In case more detailed logging is needed, here's instructions how to setup DEBUG
     # Delete the Pods to make changes effective
     kubectl -n onap delete pods -l app=cds-blueprints-processor
 
-3-4 Verification of the CNF Status
+3-5 Verification of the CNF Status
 ..................................
 
 **<MANUAL>**
 
-The Guilin introduces new API for verification of the status of instantiated resouces in k8s cluster. The API gives result similar to *kubectl describe* operation for all the resources created for particular *rb-definition*. Status API can be used to verify the k8s resources after instantiation but also can be used leveraged for synchronization of the information with external components, like AAI in the future. To use Status API call
+The Guilin introduced new API for verification of the status of instantiated resources in k8s cluster. The API gives result similar to *kubectl describe* operation for all the resources created for particular *rb-definition*. Status API can be used to verify the k8s resources after instantiation but also can be used leveraged for synchronization of the information with external components, like AAI. To use Status API call
+
+::
+
+    curl -i http://${K8S_NODE_IP}:30280/api/multicloud-k8s/v1/v1/instance/{rb-instance-id}/status
+
+where {rb-instance-id} can be taken from the list of instances resolved the following call or from AAI *heat-stack-id* property of created *vf-module* associated with each Helm package from onboarded VSP which holds the *rb-instance-id* value.
+
+The same API can be accessed over cnf-adapter endpoint (ClusterIP):
 
 ::
 
     curl -i http://${K8S_NODE_IP}:30280/api/multicloud-k8s/v1/v1/instance/{rb-instance-id}/status
 
-where {rb-instance-id} can be taken from the list of instances resolved the following call
+The similar to Status API is Query API, avaialble since Honolulu, that allows to fetch specific resources that belong to the created instance. The Query API allows to filter resources by Name, Kind, APiVersion, Namespace and Labels. The k8splugin endpoint is:
+
+::
+
+    curl -i http://${K8S_NODE_IP}:30280/api/multicloud-k8s/v1/v1/instance/{rb-instance-id}/query?ApiVersion=v1&Kind=Deployment&Name=vfw-1-vfw&Namespace=vfirewall
+
+and cnf-adapter endpoint is:
 
 ::
 
-    curl -i http://${K8S_NODE_IP}:30280/api/multicloud-k8s/v1/v1/instance/
+    curl -i http://${K8S_NODE_IP}:8090/api/cnf-adapter/v1/instance/{rb-instance-id}/query?ApiVersion=v1&Kind=Deployment&Name=vfw-1-vfw&Namespace=vfirewall
 
-or from AAI *heat-stack-id* property of created *vf-module* associated with each Helm package from onboarded VSP which holds the *rb-instance-id* value.
 
 Examplary output of Status API is shown below (full result of test vFW CNF helm package in the attached file). It shows the list of GVK resources created for requested *rb-instance* (Helm and vf-module in the same time) with assocated describe result for all of them.
 
@@ -1564,7 +1698,7 @@ Examplary output of Status API is shown below (full result of test vFW CNF helm
                 "global.onapPrivateNetworkName": "onap-private-net-test"
             }
         },
-        "ready": false,
+        "ready": true,
         "resourceCount": 1,
         "resourcesStatus": [
             {
@@ -1597,26 +1731,138 @@ Examplary output of Status API is shown below (full result of test vFW CNF helm
         ]
     }
 
-.. note:: The example of how the Stauts API could be integrated into CDS can be found in the Frankfurt version of k8s profile upload mechanism `Frankfurt CBA Definition`_ (*profile-upload* TOSCA node template), implemented in inside of the Kotlin script `Frankfurt CBA Script`_ for profile upload. This method shows how to integrate mutlicloud-k8s API endpoint into Kotlin script executed by CDS. For more details please take a look into Definition file of 1.0.45 version of the CBA and also the kotlin script used there for uploading the profile. 
+**<AUTOMATED>**
+
+Since Honolulu release vFW CNF Use Case is equipped with dedicated mechanisms for verification of the CNF status automatically, during the instantiation. The process utilizes the k8sPlugin Status and Healthcheck APIs that both are natively exposed in the CDS and can be executed from the script execution functionality in the CDS. 
+
+.. figure:: files/vFW_CNF_CDS/healthcheck.png
+   :scale: 60 %
+   :align: center
+
+   vFW CNF Healthcheck flow concept
+
+There is exposed a dedicated workflow in CBA, where Status API result verification is run with *status-verification-script* step and execution of the healthcheck job is run with *health-check-process*. The first one verifies if all pods have *Running* state. If yes, then verification of the health is started by execution of the dedicated Helm tests which are a jobs that verify connectivity in each component.
+
+::
+
+    "health-check": {
+        "steps": {
+            "config-setup": {
+                "description": "Gather necessary input for config init and status verification",
+                "target": "config-setup-process",
+                "activities": [
+                    {
+                        "call_operation": "ResourceResolutionComponent.process"
+                    }
+                ],
+                "on_success": [
+                    "config-apply"
+                ],
+                "on_failure": [
+                    "handle_error"
+                ]
+            },
+            "status-verification-script": {
+                "description": "Simple status verification script",
+                "target": "simple-status-check",
+                "activities": [
+                    {
+                        "call_operation": "ComponentScriptExecutor.process"
+                    }
+                ],
+                "on_success": [
+                    "health-check-process"
+                ],
+                "on_failure": [
+                    "handle_error"
+                ]
+            },
+            "health-check-process": {
+                "description": "Start health check script",
+                "target": "health-check-script",
+                "activities": [
+                    {
+                        "call_operation": "ComponentScriptExecutor.process"
+                    }
+                ],
+                "on_success": [
+                    "collect-results"
+                ],
+                "on_failure": [
+                    "handle_error"
+                ]
+            },
+            "handle_error": {
+                "description": "Simple error verification script",
+                "target": "simple-error-check",
+                "activities": [
+                    {
+                        "call_operation": "ComponentScriptExecutor.process"
+                    }
+                ],
+                "on_success": [
+                    "collect-results"
+                ]
+            },
+            "collect-results": {
+                "description": "Final collection of results",
+                "target": "collect-results"
+            }
+        },
+
+
+Since Istanbul release, SO is equipped with dedicated workflow for verification of the CNF status. It works similarly to the workflow introduced in Honolulu, however basic CNF Status Verification step utilizes "Ready" flag of the StatusAPI response to check if k8s resources created from Helm package are up and running. Ready flag works properly in k8splugin 0.9.1 or higher. Both operations are performed by ControllerExecutionBB in SO and are realized by cnf-adapter component in SO. This workflow can be triggered by a dedicated endpoint documented here: `CNF Health Check`_. This workflow is not yet integrated into automation scripts.
+
+3-6 Synchronization of created k8s resources into AAI
+.....................................................
+
+Since Istanbul release `AAI v24 schema`_ version is used to store basic information about k8s resources deployed from each helm package. The AAI change is described in `K8s Resource in AAI`_. The information stored in AAI lets to identify all the deployed k8s resoureces but the details about them have to be fetched from the k8s cluster on demand. Such design is motivated by high frequency of k8s resource status change and the plethora of resource types avaialble in k8s - including the CRDs that extend the predefined resource types available in k8s. In consequence, there was no sense to store in AAI full runtime picture of the k8s resources as the synchronization of them would be impossible.
+
+K8s-Resource object is stored in the cloud-infrastructure set of AAI APIs and it belongs to the tenant, and is related with both generic-vnf and vf-module. Each k8s-resource object created in AAI has selflink for cnf-adapter Query API, described in `3-5 Verification of the CNF Status`_, that allows to fetch actual information about the resource in k8s. The examplary set of k8s-resources with related generic-vnf and vf-modules for vFW CNF use case is in the files attached below.
+
+  :download:`List of K8s Resources <files/vFW_CNF_CDS/k8s-resources-response.json>`
+
+  :download:`Generic VNF with modules <files/vFW_CNF_CDS/vfw-generic-vnf-aai.json>`
+
+  :download:`vPKG VF-Module with related k8s-resource relations <files/vFW_CNF_CDS/vpkg-vf-module-aai.json>`
+
+AAI synchronization is run just after creation of the vf-module by SO. Since Jakarta release, cnf-adapter synchronizes into AAI information about any change on k8s resources performed after their initial creation. For instance, if pod is deleted in k8s cluster, the new one is automatically created. In consequence, K8sPlugin sends notification about the change to cnf-adapter, and the latter one performs update of the information in AAI by removing the old pod and creating the new one in AAI. The update in AAI, after the change in k8s cluster, should by applied with no more than 30s delay.
+
+In order to force an imidiate update of AAI information about the concrete Helm package, the following API can be also used with properly modified body (all except the callbackUrl).
+
+::
+
+    curl -i -X POST http://${K8S_NODE_IP}:8090/api/cnf-adapter/v1/aai-update
+
+
+::
+
+    {
+        "instanceId": "keen_darwin",
+        "cloudRegion": "kud",
+        "cloudOwner": "K8sCloudOwner",
+        "tenantId": "dca807fa-0d3e-4fb1-85eb-b9e1c03108a3",
+        "callbackUrl": "http://example",
+        "genericVnfId": "8b3af2e0-fd66-460d-b928-22f5dac517a6",
+        "vfModuleId": "a0161551-9d13-47c2-ba4f-896d4ee401d4"
+    }
+
 
 PART 4 - Future improvements needed
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Future development areas for this use case:
 
-- Automated smoke use case.
-- Include Closed Loop part of the vFW demo.
-- vFW service with Openstack VNF and Kubernetes CNF
+- Include Closed Loop part of the vFW CNF demo.
+- vFW service with Openstack VNF (KUD) and Kubernetes CNF
 
 Future development areas for CNF support:
 
-- Validation of Helm package and extraction of override values in time of the package onboarding.
-- Post instantiation configuration with Day 2 configuration APIs of multicloud/k8S API.
-- Synchroinzation of information about CNF between AAI and K8s.
-- Validation of status and health of CNF.
-- Use multicloud/k8S API v2.
+- Extraction of override values in time of the package onboarding
+- Upgrade of the vFW CNF similar to Helm Upgrade through the SDC and SO
+- Use multicloud/k8S API v2 (EMCO)
 
-Many features from the list above are covered by the Honolulu roadmap described in `REQ-458`_. 
+Some of the features from the list above are covered by the Jakarta roadmap described in `REQ-890`_. 
 
 
 .. _ONAP Deployment Guide: https://docs.onap.org/projects/onap-oom/en/guilin/oom_quickstart_guide.html
@@ -1630,10 +1876,11 @@ Many features from the list above are covered by the Honolulu roadmap described
 .. _vFW_NextGen: https://git.onap.org/demo/tree/heat/vFW_NextGen?h=elalto
 .. _vFW EDGEX K8S: https://docs.onap.org/en/elalto/submodules/integration.git/docs/docs_vfw_edgex_k8s.html
 .. _vFW EDGEX K8S In ONAP Wiki: https://wiki.onap.org/display/DW/Deploying+vFw+and+EdgeXFoundry+Services+on+Kubernets+Cluster+with+ONAP
-.. _KUD github: https://github.com/onap/multicloud-k8s/tree/master/kud/hosting_providers/baremetal
+.. _KUD github: https://github.com/onap/multicloud-k8s/tree/honolulu/kud/hosting_providers/baremetal
 .. _KUD in Wiki: https://wiki.onap.org/display/DW/Kubernetes+Baremetal+deployment+setup+instructions
 .. _Multicloud k8s gerrit: https://gerrit.onap.org/r/q/status:open+project:+multicloud/k8s
-.. _KUD subproject in github: https://github.com/onap/multicloud-k8s/tree/master/kud
+.. _KUD subproject in github: https://github.com/onap/multicloud-k8s/tree/honolulu/kud
+.. _KUD Interface Permission: https://jira.onap.org/browse/MULTICLOUD-1310
 .. _Frankfurt CBA Definition: https://git.onap.org/demo/tree/heat/vFW_CNF_CDS/templates/cba/Definitions/vFW_CNF_CDS.json?h=frankfurt
 .. _Frankfurt CBA Script: https://git.onap.org/demo/tree/heat/vFW_CNF_CDS/templates/cba/Scripts/kotlin/KotlinK8sProfileUpload.kt?h=frankfurt
 .. _SO-3403: https://jira.onap.org/browse/SO-3403
@@ -1641,11 +1888,16 @@ Many features from the list above are covered by the Honolulu roadmap described
 .. _REQ-182: https://jira.onap.org/browse/REQ-182
 .. _REQ-341: https://jira.onap.org/browse/REQ-341
 .. _REQ-458: https://jira.onap.org/browse/REQ-458
+.. _REQ-627: https://jira.onap.org/browse/REQ-627
+.. _REQ-890: https://jira.onap.org/browse/REQ-890
 .. _Python SDK: https://docs.onap.org/projects/onap-integration/en/guilin/integration-tooling.html?highlight=python-sdk#python-onapsdk
 .. _KUD Jenkins ci/cd verification: https://jenkins.onap.org/job/multicloud-k8s-master-kud-deployment-verify-shell/
 .. _K8s cloud site config: https://docs.onap.org/en/guilin/guides/onap-operator/cloud_site/k8s/index.html
 .. _SO Monitoring: https://docs.onap.org/projects/onap-so/en/guilin/developer_info/Working_with_so_monitoring.html
 .. _Data Dictionary: https://git.onap.org/demo/tree/heat/vFW_CNF_CDS/templates/cba-dd.json?h=guilin
 .. _Helm Healer: https://git.onap.org/oom/offline-installer/tree/tools/helm-healer.sh?h=frankfurt
-.. _CDS UAT Testing: https://wiki.onap.org/display/DW/Modeling+Concepts
 .. _infra_workload: https://docs.onap.org/projects/onap-multicloud-framework/en/latest/specs/multicloud_infra_workload.html?highlight=multicloud
+.. _K8s Client Compatibility: https://github.com/kubernetes/client-go
+.. _CNF Health Check: https://docs.onap.org/projects/onap-so/en/latest/api/apis/serviceInstances-api.html#healthcheck
+.. _K8s Resource in AAI: https://jira.onap.org/browse/ONAPMODEL-37
+.. _AAI v24 schema: https://nexus.onap.org/service/local/repositories/releases/archive/org/onap/aai/schema-service/aai-schema/1.9.2/aai-schema-1.9.2.jar/!/onap/aai_swagger_html/aai_swagger_v24.html