Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
netbox mS Capability [HELM Chart]
    Expand
    titleArchitecture

    Image Removed

    Expand
    titlenetbox mS Capability [ccsdk]
    E2E Swim Lane Diagrams Design Time and Run Time
    View file
    nameSwimming Diagram for instantiation.bdf.pptx
    height400
                              
    Expand
    title
    There is a possibility to hook the prefix with the following notion: site, vft, tenant, vlan. For now, I kept things very simplistic.
    Casablanca:
    Robot to create the prefix.
    Robot to delete the prefix.
    Expand
    title
    netbox mS Capability [IPAM DB Creation SDN-C]
    TableColumns 
    ipam_ip_poolipam_serial_pool_idcreate_dateprefixprefix_idaddress_family(v4/v6)prefix_status:Pending, Activate, Deletedescription (vfw-protect, or vfw-unprotected)region (RegionOne, RegionTwo)  
    ipam_ip_assignmentipam_serial_ip_assignment_idcreate_dateservice_instance_idvf_module_idip_adressip_address_type (vip, fixed, floating etc..) prefix_id (string)ip_address_id (string)ip_statusip_response
    Expand
    titlenetbox mS Capability [pre-provisioning scripts]
    ActionVerbURIJSON payload (Bare minimal)ParamsTypeCommentsJSON responseNote
    Create PrefixPOST/api/ipam/prefixes/{
      "prefix": "192.168.10.0/24",
      "is_pool": true,
      "description": "IP Pool for private network - vFW"
    }
    prefixStringPv4 or IPv6 network with mask{
        "id": 10,
        "prefix": "10.10.10.0/24",
        "site": null,
        "vrf": null,
        "tenant": null,
        "vlan": null,
        "status": 1,
        "role": null,
        "is_pool": true,
        "description": "IP Pool for private network - vFW",
        "created": "2018-06-08",
        "last_updated": "2018-06-08T14:46:07.417407Z"
    }
    is_poolBooleanAll IP addresses within this prefix are considered usable
    descriptionString (100) 
       
    Architecture

    Image Added

    SDNC Modeling Process (via Controller Design Studio UI).

    1. Heat Mapping: Start by the HEAT environment file as final product required for Openstack spin up. Then for each cloud parameter we define the following:
      1. Cloud parameters assignment type (Default, Input, Capability)
      2. Resources ruleset (Assignment logic : Recipe, ingredients, Model-driven vs Custom logic)
      3. Assignment Capabilities: (microServices, DG-Capability logic, Policy models...

    2. Data Dictionaries: Define the SDNC model used to resolve resource values from various systems.
      1. Define source type (default. Input, DB, A&AI, mS…etc)
      2. Define model used to retrieve the resource value from the various sub-systems (input-key-mapping, output-key-mapping, url, path)
      3. Define DD’s name, type, complex data type (if sub-system supports a list of complex data structure)

    3. Controller Blueprint: Create SDNC model and all associated capabilities, artifact templates, Data Dictionaries
      1. model Identifier: (model name, version, author…etc)
      2. Capabilities ( Resource-Assignment, Artifact-template)
      3. Template Instance (Upload Artifact Templates)
        1. Edit/View each Artifact Template
        2. Upload Artifact Template JSON file
        3. Load template and Auto-Map to Data Dictionaries
        4. Review Mapping Table and Edit DDs, Default values, DD Source


    Execution - Runtime process (via VID to SO to SDNC)

    5. Capability DGs execution flow

    Logic for vnf and vf-module assignement is pretty much the same. The main difference is, vnf assignment will take care of calling the naming microservice if specified in the controller blueprint artifact.

    This is the general logic of the VNF assign flow and sub-flows:

    Gliffy Diagram
    nameVNF_Assign_flow
    pagePin4


        This is the general logic of the vf-module assign flow and sub-flows:

    Gliffy Diagram
    nameVF_Module_DG_Flow
    pagePin3
                                                             

    Expand
    titleONAP GIT Repo for Heat YML/ENV files

    https://github.com/onap/demo/blob/master/heat/vFW/base_vfw.yaml

    Expand
    titlenetbox mS Capability [ccsdk]
    Expand
    titlenetbox mS Capability [HELM Chart]

    The work bellow is based on the following git repository, providing netbox docker images: https://github.com/ninech/netbox-docker

    The Netbox helm chart has been submitted in OOM, the code can be found here: https://github.com/onap/oom/tree/master/kubernetes/contrib/charts/netbox

    This helm chart is comprised of three subcharts, being:

    • netbox-app: provides the IPAM capability we're seeking for current selected use cases (vFW).
    • netbox-nginx: reverse proxy exposing IPAM system in a secure fashion (using NodePort).
    • netbox-postgress: backend database persisting the Netbox data. Currently a deployment, should be converted to statefull set using StorageClass.


    Regarding the netbox-app, this charts come with possibility for customization. The folder tree structure is the following:

    Code Block
    .
    ??? config
        ??? configuration				Those are configuration scripts coming from Netbox itself, they remained un-touched.
        ?   ??? configuration.py
        ?   ??? gunicorn_config.py
        ?   ??? ldap_config.py
        ??? initializers				Those YAML files are where we can added so pre-provisioning data, such as user or custom fields.
        ?   ??? custom_fields.yml
        ?   ??? groups.yml
        ?   ??? users.yml
        ??? provisioning				This defines the entrypoint of netbox-app deployment, that will provision prefix to support vFW use case.
        ?   ??? provision.sh
        ??? startup_scripts				Those scripts are provided by Netbox itself, they remained un-touched.
            ??? 00_users.py
            ??? 10_groups.py
            ??? 20_custom_fields.py


    In order to test Netbox locally using this helm chart, here are the steps to follow:

    Code Block
    git clone https://gerrit.onap.org/r/oom
    cd oom/kubernetes
    helm serve &
    make contrib
    helm install local/contrib --name netbox --namespace $NAMESPACE

    This will result in installing the 3 charts, and run the job that will provisioned Netbox for us.

    Ouput of the helm install should look like the following:

    Code Block
    $ helm install local/contrib --name netbox --namespace onap-adetalhouet
    NAME:   netbox
    
    LAST DEPLOYED: Tue Aug 28 14:30:57 2018
    NAMESPACE: onap-adetalhouet
    STATUS: DEPLOYED
    
    RESOURCES:
    ==> v1/ConfigMap
    NAME                                        DATA  AGE
    netbox-netbox-app-configuration-configmap   3     1s
    netbox-netbox-app-initializers-configmap    3     1s
    netbox-netbox-app-startupscripts-configmap  3     1s
    netbox-netbox-app-provisioning-configmap    1     1s
    netbox-netbox-nginx-config-configmap        1     1s
    netbox-netbox-postgres-docker-entry-initd   0     1s
    
    ==> v1/PersistentVolumeClaim
    NAME                    STATUS   VOLUME                                    CAPACITY  ACCESS MODES  STORAGECLASS  AGE
    netbox-netbox-static    Pending  nfs-dev-sc                                1s
    netbox-netbox-postgres  Bound    pvc-8193e062-aaf0-11e8-beaa-f40343575464  1Gi  RWX  nfs-dev-sc  1s
    
    ==> v1/Service
    NAME             TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)         AGE
    netbox-app       ClusterIP  10.43.179.246  <none>       8001/TCP        1s
    netbox-nginx     NodePort   10.43.136.76   <none>       8080:30269/TCP  1s
    netbox-postgres  ClusterIP  10.43.64.155   <none>       5432/TCP        1s
    
    ==> v1beta1/Deployment
    NAME                    DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
    netbox-netbox-app       1        1        1           0          1s
    netbox-netbox-nginx     1        1        1           0          1s
    netbox-netbox-postgres  1        1        1           0          1s
    
    ==> v1/Job
    NAME                            DESIRED  SUCCESSFUL  AGE
    netbox-netbox-app-provisioning  1        0           1s
    
    ==> v1/Pod(related)
    NAME                                    READY  STATUS   RESTARTS  AGE
    netbox-netbox-app-f54cd84d5-g6xr2       0/1    Pending  0         1s
    netbox-netbox-nginx-5d4f86ffcf-qlkhc    0/1    Pending  0         1s
    netbox-netbox-postgres-76857df45-5jjm9  0/1    Pending  0         1s
    netbox-netbox-app-provisioning-26stg    0/1    Pending  0         1s
    
    ==> v1/Secret
    NAME                    TYPE    DATA  AGE
    netbox-netbox-app-pass  Opaque  6     1s
    Expand
    titlenetbox mS Capability [IPAM DB Creation SDN-C]

    These are the tables to create:

    TableColumns 
    ipam_ip_poolipam_serial_pool_idcreate_dateprefixprefix_idaddress_family(v4/v6)prefix_status:Pending, Activate, Deletedescription (vfw-protect, or vfw-unprotected)region (RegionOne, RegionTwo)  
    ipam_ip_assignmentipam_serial_ip_assignment_idcreate_dateservice_instance_idvf_module_idip_adressip_address_type (vip, fixed, floating etc..) prefix_id (string)ip_address_id (string)ip_statusip_response


    These are the tables we created:


    Code Block
    mysql> show columns from IPAM_IP_ASSIGNEMENT;
    +---------------------+--------------+------+-----+-------------------+----------------+
    | Field               | Type         | Null | Key | Default           | Extra          |
    +---------------------+--------------+------+-----+-------------------+----------------+
    | ipam_ip_uuid        | int(11)      | NO   | PRI | NULL              | auto_increment |
    | create_date         | datetime     | NO   |     | CURRENT_TIMESTAMP |                |
    | service_instance_id | varchar(255) | YES  |     | NULL              |                |
    | vf_module_id        | varchar(255) | YES  |     | NULL              |                |
    | external_key        | varchar(255) | YES  |     | NULL              |                |
    | prefix_id           | varchar(255) | YES  |     | NULL              |                |
    | ip_address_id       | varchar(255) | YES  |     | NULL              |                |
    | ip_address          | varchar(255) | YES  |     | NULL              |                |
    | ip_address_type     | varchar(255) | YES  |     | NULL              |                |
    | ip_status           | varchar(255) | YES  |     | NULL              |                |
    | ip_response_json    | varchar(255) | YES  |     | NULL              |                |
    +---------------------+--------------+------+-----+-------------------+----------------+
    10 rows in set (0.00 sec)mysql> show columns from IPAM_IP_POOL;
    +----------------+--------------+------+-----+-------------------+----------------+
    | Field          | Type         | Null | Key | Default           | Extra          |
    +----------------+--------------+------+-----+-------------------+----------------+
    | ipam_pool_uuid | int(11)      | NO   | PRI | NULL              | auto_increment |
    | create_date    | datetime     | NO   |     | CURRENT_TIMESTAMP |                |
    | prefix_id      | int(2)       | YES  |     | NULL              |                |
    | prefix         | varchar(255) | YES  |     | NULL              |                |
    | address_family | int(1)       | YES  |     | NULL              |                |
    | prefix_status  | varchar(255) | YES  |     | NULL              |                |
    | description    | varchar(255) | YES  |     | NULL              |                |
    +----------------+--------------+------+-----+-------------------+----------------+


    This is the pool being hardcoded in the pool table to support vFW use case

    Code Block
    mysql> select * from IPAM_IP_POOL;
    +----------------+---------------------+-----------+-----------------+----------------+---------------+-------------+
    | ipam_pool_uuid | create_date         | prefix_id | prefix          | address_family | prefix_status | description |
    +----------------+---------------------+-----------+-----------------+----------------+---------------+-------------+
    |              1 | 2018-08-17 20:15:12 |         3 | 10.0.0.0/8      |              4 | ACTIVE        | private     |
    |              2 | 2018-08-17 20:19:29 |         2 | 192.168.10.0/24 |              4 | ACTIVE        | unprotected |
    |              3 | 2018-08-17 20:20:08 |         1 | 192.168.20.0/24 |              4 | ACTIVE        | protected   |
    +----------------+---------------------+-----------+-----------------+----------------+---------------+-------------+



    Expand
    titlenetbox mS Capability [pre-provisioning scripts]

    Three main things are achived durig pre-provisioning:

    • Create an admin onap user, as follow. This is part of the netbbox-app chart resources file: config/initializers/users.yml.

      Code Block
      onap:
          first_name: Steve
          last_name: McQueen
          email: steve.mcqueen@onap.org
          password: onap123$
          api_token: onceuponatimeiplayedwithnetbox20180814
          is_staff: true # whether user is admin or not, default = false
          is_active: true # whether user is active, default = true
          is_superuser: true # Whether user has all edit rights or not, default = false
    • Create an custom_fields being client_key in order to uniquely identify the resource with a key generated by ONAP. This is part of the netbbox-app chart resources file: config/initializers/custom_fields.yml.

      Code Block
      external-key: 
        description: "The external-key uniquely identify the resources to a service within ONAP."
        filterable: true
        label: ONAP external key
        on_objects: 
          - ipam.models.IPAddress
        required: true
        type: text
        weight: 0
      resource-name:
        description: "The resource-name of the element using this IP."
        filterable: true
        label: ONAP resource name
        on_objects:
          - ipam.models.IPAddress
        required: true
        type: text
        weight: 0
    • The following script creating the prefixes and some objects within Netbox:

      Code Block
      #!/bin/bash
      
      # Create region
      
      echo "Create region: RegionOne"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/dcim/regions/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "name": "RegionOne",
        "slug": "RegionOne"
      }'
      
      # Create tenant group
      
      echo "Create tenant group: ONAP group"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/tenancy/tenant-groups/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "name": "ONAP group",
        "slug": "onap-group"
      }'
      
      # Create tenant
      
      echo "Create tenant ONAP in ONAP group"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/tenancy/tenants/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "name": "ONAP",
        "slug": "onap",
        "group": 1,
        "description": "ONAP tenant",
        "comments": "Tenant for ONAP demo use cases"
      }'
      
      # Create site
      
      echo "Create ONAP demo site: Montreal Lab"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/dcim/sites/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "name": "Montreal Lab D3",
        "slug": "mtl-lab-d3",
        "region": 1,
        "tenant": 1,
        "facility": "Campus",
        "time_zone": "Canada/Atlantic",
        "description": "Site hosting the ONAP use cases",
        "physical_address": "1 Graham Bell",
        "shipping_address": "1 Graham Bell",
        "contact_name": "Alexis",
        "contact_phone": "0000000000",
        "contact_email": "adetalhouet89@gmail.com",
        "comments": "ONAP lab"
      }'
      
      # Create prefixes
      
      echo "Create Prefix for vFW protected network"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/ipam/prefixes/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "prefix": "192.168.20.0/24",
        "site": 1,
        "tenant": 1,
        "is_pool": true,
        "description": "IP Pool for protected network - vFW use case"
      }'
      
      echo "Create Prefix for vFW unprotected network"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/ipam/prefixes/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "prefix": "192.168.10.0/24",
        "site": 1,
        "tenant": 1,
        "is_pool": true,
        "description": "IP Pool for unprotected network - vFW use case"
      }'
      
      echo "Create Prefix for ONAP general purpose network"
      curl --silent -X POST \
        http://{{ .Values.service.name }}:{{ .Values.service.internalPort }}/api/ipam/prefixes/ \
        -H 'Authorization: Token onceuponatimeiplayedwithnetbox20180814' \
        -H 'Content-Type: application/json' \
        -d '{
        "prefix": "10.0.0.0/8",
        "site": 1,
        "tenant": 1,
        "is_pool": true,
        "description": "IP Pool for ONAP - general purpose"
      }'
      
      
      
    Expand
    titleAdding capability in CCSDK / SDNC-OAM
    Work items required to add a new capability:

        If there is any database needed for the plugin, create them in sdnc/oam:
        sdnc/oam:
            - add a dump of the tables + static data if any in sdnc-oam/installation/sdnc/src/main/resources with the file name being ${SOMETHING}.data.dump. example: https://gerrit.onap.org/r/#/c/61137/
            - add the DG flow for the operation you're implementing. The DG should be named 'self-serve-$CAPABILITY_NAME', e.g. self-serve-netbbox-ip-assign

        The code to interact with the external system has to be done in the ccsdk/sli/adaptors:
        ccsdk/sli/apdaptors:
            - create a new plugin composed of features/installer/provider. example: https://github.com/onap/ccsdk-sli-adaptors/tree/master/netbox-client
            - add the module in the root pom.xml file. example: https://github.com/onap/ccsdk-sli-adaptors/blob/master/pom.xml#L114
            - add the plugin feature into ccsdk/sli/apdaptors/features/ccsdk-sli-adaptors-all/pom.xml. example: https://github.com/onap/ccsdk-sli-adaptors/blob/master/features/ccsdk-sli-adaptors-all/pom.xml#L61-L67
            - the interface you will create in the provider has to extend org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin. example: https://github.com/onap/ccsdk-sli-adaptors/blob/master/netbox-client/provider/src/main/java/org/onap/ccsdk/sli/adaptors/netbox/api/NetboxClient.java#L27
            - the functions defined in your interfaces: example: https://github.com/onap/ccsdk-sli-adaptors/blob/master/netbox-client/provider/src/main/java/org/onap/ccsdk/sli/adaptors/netbox/api/NetboxClient.java#L32-L42
                - can have up to two parameters, a Map<String,String> passing all the input parameters, and the org.onap.ccsdk.sli.core.sli.SvcLogicContext being the DG context
                - have to return org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus as this is the standard output for 'execute' block of DG

        In order to of the plugin has to be added to odlsli to it's landing in the SDNC image down the CI:
        ccsdk/distribution:
            - add the *.repo artifact in ccsdk/distribution/odlsli/pom.xml. example: https://github.com/onap/ccsdk-distribution/blob/master/odlsli/pom.xml#L122-L128
    Expand
    titlePlugin IP Assignment DG flow using generic-resource-api [Assign]

    Overview

    The generic-resource-api is used to assign cloud parameter assignment during instantiation flow. The vf-module instantiation flow begins with the main DG, self-serve-vfmodule-assign, when the svc-action = assign in the rpc request.

    The main DG will call a series of sub-DGs according to the execution order of all the predefined capability components, such as generate-name, vlan-tag-assignment, eipam-ip-assignment, etc.

    For IP assignment, the main DG calls the sub-DG, self-serve-eipam-ip-assignment to start the ip assignment process.

    This wiki serves as the blueprint for capability integration with generic-resource-api for ip assignments, and it is used to integrate EIPAM custom plugin to obtain ip address assignments during vf-module orchestration.

    Prerequisite                  

    The following parameters must be set in context memory prior to the self-serve-eipam-ip-assignment sub-DG is called.

    • ss.capability-name
      • value that matches the capability DG name; i.e. self-serve-eipam-ip-assignment
    • ss.capability-action
      • assign
    • vnf-index
      • The array index of the vnf that owns this vf-module in config tree
    • vf-module-index
      • The array index of this vf-module in config tree
    • service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[].

    Logic

    1.   Unresolved Parameter Resolution

    -        Calls self-serve-capability-param-resolution DG to resolve all the unresolved values in vf-module-parameters.param[].resource-resolution-data.resource-key[].value where resource-resolution-data.capability-name matches this DG name.

    2.   Call EIPAM Plugin

    -        The EIPAM plugin returns the ip assignment in a context variable, called eipam-ip-block

    -        eipam-ip-block.plans[].requests[].ip-prefix

    -        eipam-ip-block.plans[].requests[].ip-prefix-length

    -        eipam-ip-block.plans[].requests[].ReservedAssignments[0]. ReservedAssignment[3].ReservedKeyIPAddress

    -        Insert an entry to EIPAM_IP_ASSIGNMENTS table

    3.   Set Heat Parameters

    The sub-DG, self-serve-vfmodule-assign will set value of then heat parameters based on the EIPAM

    -        vmxvre_oam_ip_0 = eipam-ip-block.plans[].requests[].ip-prefix

    -        vmxvre_oam_ip_prefix_0 = eipam-ip-block.plans[].requests[].ip-prefix-length

    -        vmxvre_oam_gateway = eipam-ip-block.plans[].requests[].ReservedAssignments[0].

    -        ReservedAssignment[3].ReservedKeyIPAddress

    4.   Netbox API call

    VerbURIJSON payload (Bare minimal)ParamsTypeCommentsJSON responseNote
    POST/api/ipam/prefixes/{prefix-id}/available-ips/

    {

      "custom_fields": {

        "external-key": "test",

        "resource-name": "cloudParamName"

      }

    }

    prefix-idIntegerThe ID of the prefix from which to retrieve next available IP

    {


        "id": 4,


        "address": "192.168.10.2/32",


        "vrf": null,


        "tenant": null,


        "status": 1,


        "role": null,


        "interface": null,


        "description": "",


        "nat_inside": null,


        "custom_fields": {


            "external-key": "test",


            "resource-name": "cloudParamName"


        },


        "created": "2018-08-30",


        "last_updated": "2018-08-30T14:59:05.277820Z"


    }

    Loop function within the SDNC for getting the next available for each cloud param resource. 

    5.   Testing out the DG

    To test the DG to resolve multiple IPs, that mock-up data can be used:

    Code Block
    {
      "input": {
        "module-name": "GENERIC-RESOURCE-API",
        "rpc-name": "self-serve-netbox-ip-assignment",
        "mode": "sync",
        "sli-parameter": [
          {
            "parameter-name": "ss.capability-name",
            "string-value": "netbox-ip-assign"
          },
          {
            "parameter-name": "ss.capability-action",
            "string-value": "assign"
          },
          {
            "parameter-name": "vnf-index",
            "int-value": 0
          },
          {
            "parameter-name": "vf-module-index",
            "int-value": 0
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param_length",
            "string-value": "2"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].name",
            "string-value": "unprotected_private_net_cidr"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.capability-name",
            "string-value": "netbox-ip-assign"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.status",
            "string-value": "PENDING"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key_length",
            "int-value": 4
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].name",
            "string-value": "service-instance-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].value",
            "string-value": "1234-56789-4321-98766"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].name",
            "string-value": "prefix-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].value",
            "string-value": "1"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].name",
            "string-value": "vf-module-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].value",
            "string-value": "9999-999999-9999-999999"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[3].name",
            "string-value": "external_key"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[3].value",
            "string-value": "david-the-boss-blah"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].name",
            "string-value": "protected_private_net_cidr"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.capability-name",
            "string-value": "netbox-ip-assign"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.status",
            "string-value": "PENDING"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key_length",
            "int-value": 4
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].name",
            "string-value": "service-instance-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].value",
            "string-value": "1234-56789-4321-98765"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].name",
            "string-value": "prefix-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].value",
            "string-value": "1"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].name",
            "string-value": "vf-module-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].value",
            "string-value": "9999-999999-9999-999999"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[3].name",
            "string-value": "external_key"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[3].value",
            "string-value": "david-the-boss-blah-2"
          }
        ]
      }
    }

    6.   Additional notes

    Code Block
    collapsetrue
    Self Service flow, once the topology-operation run-time assign flow is forked to use the self-service flow, DG will trigger the self service execute node “configAssignmentNode” with the required input to get the resolved artifact template. DG then will persist the template in MDSAL and trigger the rest of capabilities according to execution order. Below is summary of flow. We can discuss the flow in more details on Monday’s call.  
     
    vnf-topology-operation
    
    -      This is the top level DG that will handle the rpc from MSO and it will invoke other DGs based on svc-action.
     
    vnf-topology-operation-assign
    
    -      Called by vnf-topology-operation when svc-action=assign
    -      execute self-serve forking logic and invoke self-serve-vnf-assign DG
     
    self-serve-vnf-assign
    
    -      Called by vnf-topology-operation-assign
    -      Set vnf-index
    -      Copy MSO request inputs to service-data
    -      Call self-serve-ra-assignment if vnf-parameters-data.param_length is not null
    -      When self-serve-ra-assignment returns success, loop thru VNF capability execution order to call each capability DG by capabaility-name
    -      Each capability DG will call self-serve-capability-param-resolution to resolve all unresolved value in resource-keys before calling its
    -      capability component.
    -      When ALL capability DG returns success, call self-serve-unresolved-composite-data DG.
    -      Call AAI Put to update AAI
    -      If ALL capability DG and AAI update are successful, persists service-data in MD-SAL and return SUCCESS to MSO
    -      If Any capability DG returns failure, persists service-data in MD-SAL and return FAILED to MSO
     
    self-serve-ra-assignment
    
    -      Called by self-serve-vnf-assign
    -      Generate input json string for configAssignmentNode
    -      Call ConfigAssignmentNode
    -      Parse ConfigAssignmentNode Response
    -      Copy RA response to param[] 
     
    self-service-capability-param-resolution
    
    -      Called by all Capability DGs
    -      Loop thru all resource-key[].value that contains “$”
    -      Resolve resource-key[].value by looping thru all param[].value
    -      Return failure if resource-key[].value cannot be resolved.
    Expand
    titlePlugin IP Unassignment DG flow using generic-resource-api [Unassignment]


    Overview

    The generic-resource-api is used to unassign cloud parameters during the vf-module unassign flow. The vf-module unassign flow begins with the main DG, self-serve-vfmodule-unassign, when the svc-action = unassign in the rpc request.

    The main DG will call a series of sub-DGs according to the execution order of all the predefined capability components, such as generate-name, vlan-tag-assignment, eipam-ip-assignment, etc to unassign cloud parameters.  Upon successful unassignment, the main DG will clear the service-data data in MD-SAL

    Prerequisites

    The following parameters must be set in context memory prior to the self-serve-eipam-ip-assignment sub-DG is called.


    • ss.capability-name

      • value that matches the capability DG name; i.e. self-serve-eipam-ip-assignment

    • ss.capability-action

      • unassign

    • vnf-index

      • The array index of the vnf that owns this vf-module in config tree

    • vf-module-index

      • The array index of this vf-module in config tree

    • service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[].

    Logic

    1.   Set EIPAM_IP_ASSIGNMENTS status

    • set EIPAM_IP_ASSIGNMENTS.status t0 PENDING_DELETE by service-instance-id and client-key

    2.   Call EIPAM Plugin unassignIp

    • Calls EIPAM plugin unassignIp method to unassign ip from EIPAM

    3.   Set Heat Parameters status

    • Set service-data … vf-module-parameters.param[].resource-resolution-data.status to DELETED for the following params

      • vmxvre_oam_ip_0

      • vmxvre_oam_ip_prefix_0

      • vmxvre_oam_gateway

    4.   Netbox API call

    ActionVerbURIJSON payload (Bare minimal)ParamsTypeCommentsJSON responseNote
    Delete IPDELETE/api/ipam/ip-addresses/{ip-id}/-ip-idIntegerThe ID of the IP address to delete-done as part of the VF Module delete action.

    5.   Testing out the DG

    To test the DG to release multiple IPs, that mock-up data can be used:

    Code Block
    {
      "input": {
        "module-name": "GENERIC-RESOURCE-API",
        "rpc-name": "self-serve-netbox-ip-assignment",
        "mode": "sync",
        "sli-parameter": [
          {
            "parameter-name": "ss.capability-name",
            "string-value": "netbox-ip-assign"
          },
          {
            "parameter-name": "ss.capability-action",
            "string-value": "unassign"
          },
          {
            "parameter-name": "vnf-index",
            "int-value": 0
          },
          {
            "parameter-name": "vf-module-index",
            "int-value": 0
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param_length",
            "string-value": "2"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.capability-name",
            "string-value": "netbox-ip-assign"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.status",
            "string-value": "PENDING"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key_length",
            "int-value": 2
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].name",
            "string-value": "service-instance-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].value",
            "string-value": "1234-56789-4321-98766"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].name",
            "string-value": "external_key"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].value",
            "string-value": "david-the-boss-blah"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.capability-name",
            "string-value": "netbox-ip-assign"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.status",
            "string-value": "PENDING"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key_length",
            "int-value": 2
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].name",
            "string-value": "service-instance-id"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].value",
            "string-value": "1234-56789-4321-98765"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].name",
            "string-value": "external_key"
          },
          {
            "parameter-name": "service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].value",
            "string-value": "david-the-boss-blah-2"
          }
        ]
      }
    }



    Overview

    The generic-resource-api is used to assign cloud parameter assignment during instantiation flow. The vf-module instantiation flow begins with the main DG, self-serve-vfmodule-assign, when the svc-action = assign in the rpc request.

    The main DG will call a series of sub-DGs according to the execution order of all the predefined capability components, such as generate-name, vlan-tag-assignment, eipam-ip-assignment, etc.

    For IP assignment, the main DG calls the sub-DG, self-serve-eipam-ip-assignment to start the ip assignment process.

    This wiki serves as the blueprint for capability integration with generic-resource-api for ip assignments, and it is used to integrate EIPAM custom plugin to obtain ip address assignments during vf-module orchestration.

    Prerequisite                  

    The following parameters must be set in context memory prior to the self-serve-eipam-ip-assignment sub-DG is called.

    • ss.capability-name
      • value that matches the capability DG name; i.e. self-serve-eipam-ip-assignment
    • ss.capability-action
      • assign
    • vnf-index
      • The array index of the vnf that owns this vf-module in config tree
    • vf-module-index
      • The array index of this vf-module in config tree
    • service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[].

    Logic

    1.   Unresolved Parameter Resolution

    -        Calls self-serve-capability-param-resolution DG to resolve all the unresolved values in vf-module-parameters.param[].resource-resolution-data.resource-key[].value where resource-resolution-data.capability-name matches this DG name.

    2.   Call EIPAM Plugin

    -        The EIPAM plugin returns the ip assignment in a context variable, called eipam-ip-block

    -        eipam-ip-block.plans[].requests[].ip-prefix

    -        eipam-ip-block.plans[].requests[].ip-prefix-length

    -        eipam-ip-block.plans[].requests[].ReservedAssignments[0]. ReservedAssignment[3].ReservedKeyIPAddress

    -        Insert an entry to EIPAM_IP_ASSIGNMENTS table

    3.   Set Heat Parameters

    The sub-DG, self-serve-vfmodule-assign will set value of then heat parameters based on the EIPAM

    -        vmxvre_oam_ip_0 = eipam-ip-block.plans[].requests[].ip-prefix

    -        vmxvre_oam_ip_prefix_0 = eipam-ip-block.plans[].requests[].ip-prefix-length

    -        vmxvre_oam_gateway = eipam-ip-block.plans[].requests[].ReservedAssignments[0].

    -        ReservedAssignment[3].ReservedKeyIPAddress

    done as part of the VF Module delete action.

    Expand
    titleSDNC Artifacts


    1.   SDNC Blueprint

    • Code Block
      themeMidnight
      collapsetrue
      {
        "metadata": {
          "template_author": "aa0419",
          "template_name": "sdnc_vFW_blueprint1",
          "template_version": "1.0.0",
          "service-type": "vFW",
          "template_tags": "vFW, ONAP",
          "release": "1810",
          "vnf-type": "VFW"
        },
        "topology_template": {
          "inputs": {
            "request-id": {
              "required": true,
              "type": "string"
            },
            "service-instance-id": {
              "required": true,
              "type": "string"
            },
            "scope-type": {
              "required": true,
              "type": "string"
            },
            "action-name": {
              "required": true,
              "type": "string"
            },
            "hostname": {
              "required": true,
              "type": "string"
            },
            "resource-assignment-request": {
              "description": "This is Dynamic Data type for the receipe resource-assignment-action.",
              "required": false,
              "type": "dt-resource-assignment-request"
            }
          },
          "node_templates": {
            "resource-assignment-ra-component": {
              "type": "component-resource-assignment",
              "interfaces": {
                "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {
                  "operations": {
                    "process": {
                      "inputs": {
                        "action-name": "{ \"get_input\" : \"action-name\" }",
                        "service-template-name": "{ \"get_attribute\" : \"service-template-name\" }",
                        "template-names": [
                          "sdnc_vnf_vFW",
                          "sdnc_base",
                          "sdnc_vFW",
                          "sdnc_vsn",
                          "sdnc_vpg"
                        ],
                        "service-template-version": "{ \"get_attribute\" : \"service-template-version\" }",
                        "resource-type": "vnf-type",
                        "request-id": "{ \"get_input\" : \"request-id\" }",
                        "resource-id": "{ \"get_input\" : \"hostname\" }"
                      },
                      "outputs": {
                        "resource-assignment-params": "Success",
                        "status": "status"
                      }
                    }
                  }
                }
              },
              "capabilities": {
                "component-node": {
                  
                }
              }
            },
            "resource-assignment-action": {
              "type": "dg-resource-assignment",
              "properties": {
                "mode": "sync",
                "version": "LATEST",
                "is-start-flow": false
              },
              "interfaces": {
                "CONFIG": {
                  "operations": {
                    "ResourceAssignment": {
                      "inputs": {
                        "params": [
                          
                        ]
                      }
                    }
                  }
                }
              },
              "capabilities": {
                "dg-node": {
                  
                },
                "content": {
                  "properties": {
                    "type": "json"
                  }
                }
              },
              "requirements": {
                "component-dependency": {
                  "capability": "component-node",
                  "node": "resource-assignment-ra-component",
                  "relationship": "tosca.relationships.DependsOn"
                }
              }
            },
            "sdnc_vnf_vFW": {
              "type": "artifact-config-template",
              "properties": {
                "action-names": [
                  "resource-assignment-action"
                ]
              },
              "capabilities": {
                "content": {
                  "properties": {
                    "content": "sdnc_vnf_vFW"
                  }
                },
                "mapping": {
                  "properties": {
                    "mapping": [
                      {
                        "name": "service-instance-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "service-instance-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "aic-cloud-region",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "aic-cloud-region",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf_name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf_name",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-naming-policy",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-naming-policy",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nf-role",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "nf-role",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      }
                    ]
                  }
                }
              }
            },
            "sdnc_vFW": {
              "type": "artifact-config-template",
              "capabilities": {
                "content": {
                  "properties": {
                    "content": "sdnc_vFW"
                  }
                },
                "mapping": {
                  "properties": {
                    "mapping": [
                      {
                        "name": "service-instance-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "service-instance-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-name",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-type",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-type",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfccustomizationuuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfccustomizationuuid",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "aic-cloud-region",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "aic-cloud-region",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "availability_zone_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "availability_zone_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vm-type",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vm-type",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnfc-model-invariant-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnfc-model-invariant-uuid",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vfccustomizationuuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnfc-model-version",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnfc-model-version",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vfccustomizationuuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nf-role",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "vFW"
                        },
                        "input-param": false,
                        "dictionary-name": "nf-role",
                        "dictionary-source": "default",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nfc-naming-code",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "nfc-naming-code",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "public_net_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "public_net_id"
                        },
                        "input-param": false,
                        "dictionary-name": "public_net_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_net_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "value": "",
                          "default": "onap_private_net_id"
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_net_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_subnet_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "value": "Oam_Network_Puhf",
                          "default": "Oam_Network_Puhf"
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_subnet_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "unprotected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "unprotected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "protected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "protected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "nexus_artifact_repo",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "nexus_artifact_repo"
                        },
                        "input-param": false,
                        "dictionary-name": "nexus_artifact_repo",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "sec_group",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "onap_sg_PUhf"
                        },
                        "input-param": false,
                        "dictionary-name": "sec_group",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                       
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfw_name_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfw_name_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-naming-policy",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {}
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "SDNC_Policy.Config_MS_ONAP_VFW_NAMING_TIMESTAMP"
                        },
                        "input-param": false,
                        "dictionary-name": "vf-naming-policy",
                        "dictionary-source": "default",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf_module_name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf_module_name",
                        "dictionary-source": "input",
                        "dependencies": [
      
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-label",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-label",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "private-prefix-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "private-prefix-id",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfw_private_ip_2",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfw_private_ip_2",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "protected-prefix-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "protected-prefix-id",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfw_private_ip_1",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfw_private_ip_1",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "unprotected-prefix-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "unprotected-prefix-id",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfw_private_ip_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfw_private_ip_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vpg_private_ip_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vpg_private_ip_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf_name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf_name",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      }
                    ]
                  }
                }
              }
            },
            "sdnc_vpg": {
              "type": "artifact-config-template",
              "capabilities": {
                "content": {
                  "properties": {
                    "content": "sdnc_vpg"
                  }
                },
                "mapping": {
                  "properties": {
                    "mapping": [
                      {
                        "name": "service-instance-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "service-instance-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-name",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-type",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-type",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfccustomizationuuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfccustomizationuuid",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "aic-cloud-region",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "aic-cloud-region",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "availability_zone_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "availability_zone_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vm-type",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vm-type",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnfc-model-invariant-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnfc-model-invariant-uuid",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vfccustomizationuuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnfc-model-version",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnfc-model-version",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vfccustomizationuuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nf-role",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "vPG"
                        },
                        "input-param": false,
                        "dictionary-name": "nf-role",
                        "dictionary-source": "default",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nfc-naming-code",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "nfc-naming-code",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "public_net_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "public_net_id"
                        },
                        "input-param": false,
                        "dictionary-name": "public_net_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_net_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "onap_private_net_id"
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_net_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_subnet_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "Oam_Network_Puhf"
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_subnet_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "unprotected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "unprotected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfw_private_ip_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfw_private_ip_0",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id","vnf-id","vf-module-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vsn_private_ip_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vsn_private_ip_0",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id","vnf-id","vf-module-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nexus_artifact_repo",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "nexus_artifact_repo"
                        },
                        "input-param": false,
                        "dictionary-name": "nexus_artifact_repo",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "sec_group",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "onap_sg_PUhf"
                        },
                        "input-param": false,
                        "dictionary-name": "sec_group",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "pvg_private_ip_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "pvg_private_ip_0",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id","vnf-id","vf-module-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vpg_name_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vpg_name_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-naming-policy",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "SDNC_Policy.Config_MS_ONAP_VPG_NAMING_TIMESTAMP"
                        },
                        "input-param": false,
                        "dictionary-name": "vf-naming-policy",
                        "dictionary-source": "default",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf_module_name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf_module_name",
                        "dictionary-source": "input",
                        "dependencies": [
      
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-label",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-label",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "private-prefix-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "private-prefix-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vpg_private_ip_1",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vpg_private_ip_1",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      }
                    ]
                  }
                }
              }
            },
            "sdnc_vsn": {
              "type": "artifact-config-template",
              "capabilities": {
                "content": {
                  "properties": {
                    "content": "sdnc_vsn"
                  }
                },
                "mapping": {
                  "properties": {
                    "mapping": [
                      {
                        "name": "service-instance-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "service-instance-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-name",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-type",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-type",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfccustomizationuuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfccustomizationuuid",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "aic-cloud-region",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "aic-cloud-region",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "aic_clli",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "aic_clli",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "availability_zone_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "availability_zone_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vm-type",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vm-type",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnfc-model-invariant-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnfc-model-invariant-uuid",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vfccustomizationuuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnfc-model-version",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnfc-model-version",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vfccustomizationuuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nf-role",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "vSN"
                        },
                        "input-param": false,
                        "dictionary-name": "nf-role",
                        "dictionary-source": "default",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "nfc-naming-code",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "nfc-naming-code",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "public_net_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "value": "public_net_id",
                          "default": "public_net_id"
                        },
                        "input-param": false,
                        "dictionary-name": "public_net_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_net_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_net_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_subnet_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "Oam_Network_Puhf"
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_subnet_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "unprotected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "unprotected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "protected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "protected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "onap_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "onap_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                         
                        ],
                        "version": 0
                      },
                      {
                        "name": "nexus_artifact_repo",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "value": "nexus_artifact_repo",
                          "default": "nexus_artifact_repo"
                        },
                        "input-param": false,
                        "dictionary-name": "nexus_artifact_repo",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "sec_group",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "onap_sg_PUhf"
                        },
                        "input-param": false,
                        "dictionary-name": "sec_group",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vfw_private_ip_1",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vfw_private_ip_1",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id","vnf-id","vf-module-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vsn_name_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vsn_name_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-naming-policy",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "SDNC_Policy.Config_MS_ONAP_VSN_NAMING_TIMESTAMP"
                        },
                        "input-param": false,
                        "dictionary-name": "vf-naming-policy",
                        "dictionary-source": "default",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf_module_name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf_module_name",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vf-module-label",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vf-module-label",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vf-module-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "private-prefix-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "private-prefix-id",
                        "dictionary-source": "input",
                        "dependencies": [
                      
                        ],
                        "version": 0
                      },
                      {
                        "name": "vsn_private_ip_1",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vsn_private_ip_1",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "protected-prefix-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "protected-prefix-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vsn_private_ip_0",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vsn_private_ip_0",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      }
                    ]
                  }
                }
              }
            },
            "sdnc_base": {
              "type": "artifact-config-template",
              "capabilities": {
                "content": {
                  "properties": {
                    "content": "sdnc_base"
                  }
                },
                "mapping": {
                  "properties": {
                    "mapping": [
                      {
                        "name": "service-instance-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "service-instance-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-id",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-model-customization-uuid",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
                              
                            }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-model-customization-uuid",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "aic-cloud-region",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "aic-cloud-region",
                        "dictionary-source": "input",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "nf-role",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "nf-role",
                        "dictionary-source": "db",
                        "dependencies": [
                          "vnf-model-customization-uuid"
                        ],
                        "version": 0
                      },
                      {
                        "name": "vnf-name",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "string",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "vnf-name",
                        "dictionary-source": "mdsal",
                        "dependencies": [
                          "service-instance-id"
                        ],
                        "version": 0
                      },
                      {
                        "name": "protected_private_subnet_id",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          },
                          "default": "Protected_Network_Puhf"
                        },
                        "input-param": false,
                        "dictionary-name": "protected_private_subnet_id",
                        "dictionary-source": "default",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      },
                      {
                        "name": "unprotected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "unprotected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                         
                        ],
                        "version": 0
                      },
                      {
                        "name": "protected_private_net_cidr",
                        "property": {
                          "description": "",
                          "required": true,
                          "type": "",
                          "status": "",
                          "constraints": [
                            {
      
      					  }
                          ],
                          "entry_schema": {
                            "type": ""
                          }
                        },
                        "input-param": false,
                        "dictionary-name": "protected_private_net_cidr",
                        "dictionary-source": "db",
                        "dependencies": [
                          
                        ],
                        "version": 0
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "node_types": {
          "tosca.nodes.Component": {
            "description": "This is default Component Node",
            "version": "1.0.0",
            "derived_from": "tosca.nodes.Root"
          },
          "tosca.nodes.DG": {
            "description": "This is Directed Graph Node Type",
            "version": "1.0.0",
            "derived_from": "tosca.nodes.Root"
          },
          "tosca.nodes.Artifact": {
            "description": "This is Deprecated Artifact Node Type.",
            "version": "1.0.0",
            "derived_from": "tosca.nodes.Root"
          },
          "component-resource-assignment": {
            "description": "This is Resource Assignment Component API",
            "version": "1.0.0",
            "capabilities": {
              "component-node": {
                "type": "tosca.capabilities.Node"
              }
            },
            "interfaces": {
              "org-onap-ccsdk-config-assignment-service-ConfigAssignmentNode": {
                "operations": {
                  "process": {
                    "inputs": {
                      "action-name": {
                        "description": "Action Name of the process",
                        "required": true,
                        "type": "string"
                      },
                      "service-template-name": {
                        "description": "Service Template Name.",
                        "required": true,
                        "type": "string"
                      },
                      "service-template-version": {
                        "description": "Service Template Version.",
                        "required": true,
                        "type": "string"
                      },
                      "resource-type": {
                        "description": "Request type.",
                        "required": true,
                        "type": "string"
                      },
                      "template-names": {
                        "description": "Name of the artifact Node Templates, to get the template Content.",
                        "required": true,
                        "type": "list",
                        "entry_schema": {
                          "type": "string"
                        }
                      },
                      "request-id": {
                        "description": "Request Id, Unique Id for the request.",
                        "required": true,
                        "type": "string"
                      },
                      "resource-id": {
                        "description": "Resource Id.",
                        "required": true,
                        "type": "string"
                      }
                    },
                    "outputs": {
                      "resource-assignment-params": {
                        "required": true,
                        "type": "string"
                      },
                      "status": {
                        "required": true,
                        "type": "string"
                      }
                    }
                  }
                }
              }
            },
            "derived_from": "tosca.nodes.Component"
          },
          "dg-resource-assignment": {
            "description": "This is Resource Assignment Directed Graph",
            "version": "1.0.0",
            "properties": {
              "mode": {
                "required": false,
                "type": "string",
                "default": "sync"
              },
              "version": {
                "required": false,
                "type": "string",
                "default": "LATEST"
              },
              "is-start-flow": {
                "required": false,
                "type": "boolean",
                "default": "false"
              }
            },
            "capabilities": {
              "dg-node": {
                "type": "tosca.capabilities.Node"
              },
              "content": {
                "type": "tosca.capabilities.Content",
                "properties": {
                  "type": {
                    "required": false,
                    "type": "string",
                    "default": "json"
                  },
                  "content": {
                    "required": false,
                    "type": "string"
                  }
                }
              }
            },
            "requirements": {
              "component-dependency": {
                "capability": "component-node",
                "node": "component-resource-assignment",
                "relationship": "tosca.relationships.DependsOn"
              }
            },
            "interfaces": {
              "CONFIG": {
                "operations": {
                  "ResourceAssignment": {
                    "inputs": {
                      "params": {
                        "required": false,
                        "type": "list",
                        "entry_schema": {
                          "type": "datatype-property"
                        }
                      }
                    }
                  }
                }
              }
            },
            "derived_from": "tosca.nodes.DG"
          },
          "artifact-config-template": {
            "description": "This is Configuration Velocity Template",
            "version": "1.0.0",
            "properties": {
              "action-names": {
                "required": true,
                "type": "list",
                "entry_schema": {
                  "type": "string"
                }
              }
            },
            "capabilities": {
              "content": {
                "type": "tosca.capabilities.Content",
                "properties": {
                  "content": {
                    "required": true,
                    "type": "string"
                  }
                }
              },
              "mapping": {
                "type": "tosca.capabilities.Mapping",
                "properties": {
                  "mapping": {
                    "required": false,
                    "type": "list",
                    "entry_schema": {
                      "type": "datatype-resource-assignment"
                    }
                  }
                }
              }
            },
            "derived_from": "tosca.nodes.Artifact"
          }
        },
        "data_types": {
          "datatype-property": {
            "version": "1.0.0",
            "description": "This is Entry point Input Data Type, which is dynamic datatype, The parameter names will be populated during the Design time for each inputs",
            "properties": {
              "type": {
                "required": true,
                "type": "string"
              },
              "description": {
                "required": false,
                "type": "string"
              },
              "required": {
                "required": false,
                "type": "boolean"
              },
              "default": {
                "required": false,
                "type": "string"
              },
              "entry_schema": {
                "required": false,
                "type": "string"
              }
            },
            "derived_from": "tosca.datatypes.Root"
          },
          "datatype-resource-assignment": {
            "version": "1.0.0",
            "description": "This is Resource Assignment Data Type",
            "properties": {
              "property": {
                "required": true,
                "type": "datatype-property"
              },
              "input-param": {
                "required": true,
                "type": "boolean"
              },
              "dictionary-name": {
                "required": false,
                "type": "string"
              },
              "dictionary-source": {
                "required": false,
                "type": "string"
              },
              "dependencies": {
                "required": true,
                "type": "list",
                "entry_schema": {
                  "type": "string"
                }
              },
              "status": {
                "required": false,
                "type": "string"
              },
              "message": {
                "required": false,
                "type": "string"
              },
              "updated-date": {
                "required": false,
                "type": "string"
              },
              "updated-by": {
                "required": false,
                "type": "string"
              }
            },
            "derived_from": "tosca.datatypes.Root"
          },
          "dt-resource-assignment-request": {
            "version": "1.0.0",
            "description": "This is Dynamic Data type definition generated from resource mapping for the config template name activate-template.",
            "properties": {
              "password-user-ftap-nsm": {
                "required": true,
                "type": "string",
                "default": "password-user-ftap"
              },
              "reservation-id": {
                "required": true,
                "type": "string",
                "value": "123"
              },
              "security-manager-resource-key": {
                "required": true,
                "type": "string",
                "value": "sdnc"
              },
              "password-user-ftap": {
                "description": "",
                "required": true,
                "type": "string",
                "status": "",
                "constraints": [
                  {
                    
                  }
                ],
                "entry_schema": {
                  "type": ""
                }
              }
            },
            "derived_from": "tosca.datatypes.Dynamic"
          }
        }
      }

    2.   Artifact Templates

    • VNF

    View file
    namesdnc_vnf_vFW.json
    height250

    • BASE

    View file
    namesdnc_base.json
    height250

    • vFW

    View file
    namesdnc_vFW.json
    height250

    • vSN

    View file
    namesdnc_vsn.json
    height250

    • vPG

    View file
    namesdnc_vpg.json
    height250

    3.   Data Dictionaries


    View file
    nameNew_DD.zip
    height250

    Expand
    titlePlugin IP Assignment DG flow using generic-resource-api [Assign]
    VerbURIJSON payload (Bare minimal)ParamsTypeCommentsJSON responseNote
    POST/api/ipam/prefixes/{prefix-id}/available-ips/-prefix-idIntegerThe ID of the prefix from which to retrieve next available IP{
        "id": 26,
        "address": "10.10.10.2/32",
        "vrf": null,
        "tenant": null,
        "status": 1,
        "role": null,
        "interface": null,
        "description": "",
        "nat_inside": null,
        "created": "2018-06-08",
        "last_updated": "2018-06-08T14:59:08.319356Z"
    }
    Loop function within the SDNC for getting the next available for each cloud param resource. 
    Expand
    titlePlugin IP Unassignment DG flow using generic-resource-api [Unassignment]

    Overview

    The generic-resource-api is used to unassign cloud parameters during the vf-module unassign flow. The vf-module unassign flow begins with the main DG, self-serve-vfmodule-unassign, when the svc-action = unassign in the rpc request.

    The main DG will call a series of sub-DGs according to the execution order of all the predefined capability components, such as generate-name, vlan-tag-assignment, eipam-ip-assignment, etc to unassign cloud parameters.  Upon successful unassignment, the main DG will clear the service-data data in MD-SAL

    Prerequisites

    The following parameters must be set in context memory prior to the self-serve-eipam-ip-assignment sub-DG is called.

    • ss.capability-name

      • value that matches the capability DG name; i.e. self-serve-eipam-ip-assignment

    • ss.capability-action

      • unassign

    • vnf-index

      • The array index of the vnf that owns this vf-module in config tree

    • vf-module-index

      • The array index of this vf-module in config tree

    • service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[].

    Logic

    1.   Set EIPAM_IP_ASSIGNMENTS status

    • set EIPAM_IP_ASSIGNMENTS.status t0 PENDING_DELETE by service-instance-id and client-key

    2.   Call EIPAM Plugin unassignIp

    • Calls EIPAM plugin unassignIp method to unassign ip from EIPAM

    3.   Set Heat Parameters status

    • Set service-data … vf-module-parameters.param[].resource-resolution-data.status to DELETED for the following params

      • vmxvre_oam_ip_0

      • vmxvre_oam_ip_prefix_0

      • vmxvre_oam_gateway

    Netbox Capability:

    ActionVerbURIJSON payload (Bare minimal)ParamsTypeCommentsJSON responseNote
    Delete IPDELETE/api/ipam/ip-addresses/{ip-id}/-ip-idIntegerThe ID of the IP address to delete-