Instantiation - SDN-C Generic Resource API (Enhancement)

Instantiation - SDN-C Generic Resource API (Enhancement)

  1.                         

SDNC Modeling Process (via Controller Design Studio UI).

 

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 is only supported by the cloud editor

Because Forge macros arent supported by the legacy editor, you'll need to convert this content to the cloud editor to display this macro properly. Find out more about converting to the cloud editor

 

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

Gliffy Diagram is only supported by the cloud editor

Because Forge macros arent supported by the legacy editor, you'll need to convert this content to the cloud editor to display this macro properly. Find out more about converting to the cloud editor

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:

. ??? 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:

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:

$ 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

These are the tables to create:

 

These are the tables we created:

 

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

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 | +----------------+---------------------+-----------+-----------------+----------------+---------------+-------------+

 

 

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.

    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.

    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:

    #!/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" }'

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

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

Verb

URI

JSON payload (Bare minimal)

Params

Type

Comments

JSON response

Note

POST

/api/ipam/prefixes/{prefix-id}/available-ips/

{

  "custom_fields": {

    "external-key": "test",

    "resource-name": "cloudParamName"

  }

}

prefix-id

Integer

The 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:

{ "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

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.

 

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

Action

Verb

URI

JSON payload (Bare minimal)

Params

Type

Comments

JSON response

Note

Delete IP

DELETE

/api/ipam/ip-addresses/{ip-id}/

-

ip-id

Integer

The 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:

{ "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" } ] } }

 

 

 

1.   SDNC Blueprint

  • { "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

  • BASE

  • vFW

  • vSN

  • vPG

3.   Data Dictionaries