Introduction:

This video shows the vFW use case being instantiated on Casablanca.

What's new:

We can see from the demo that now we don't need to perform SDNC Preloading to instantiate the service. The VNF naming and IP addressing will be auto assigned.


Video Demo of the vFW instantiation:

vfw_cds_casablanca_25-04-2019.mp4

Summary of the video demo:

Create A&AI Customer by executing below script: 

Robot Script Command
./demo-k8s.sh onap init


Distributing the vFW service model using the robot script.

Robot Script Command
./demo-k8s.sh onap distributeVFWNG


Then, we can use a Postman collection that has 3 Rest Calls and some code to automate the instantiation of the vFW use case:



  • 1st Rest call will give us the service model details like UUID, Invariant UUID, and Service Model Name.

  • 2nd Rest call will give us the VNF and VF Module details.

STEP CDS2: Expose SO Catalog API

SO Catalog DB is NOT exposed by default, you will need something like the command below to be able to send the CDS #2 rest call to SO Catalog and get back the service VNF model details.

kubectl -n onap expose pod onap-so-so-catalog-db-adapter-56d9cc554b-9fszd --type=LoadBalancer
  • 3rd Rest call will pull the details from the 1st and 2nd calls, and build the SO Service Assignment and Activation request.
  • I added a 4th Rest call in the collection that will pull the request id from the 3rd call coming from SO, and will show us the status of the requets, so we can track the progress, and see if it completes successfully.

Environment preparation for the Postman Collection:

In order to run the Postman collection correctly, we need to create 3 environment variables in Postman:

  • cds-service-model: This is the name of the service model distributed by the robot script, you can find it by running CDS #1 call once and looking for the VNF that has today's date and time.
    • cds-instance-name: This is the name of the service instance we will instantiate.
  • k8s: This is our ONAP Load Balancer IP Address.

Also, we need to update our IaaS Openstack parameters in the body of the SO Service Instantiation Rest call CDS#3:

  • lcpCloudRegionId : the cloud-region name 
  • tenantId : the tenant id
  • public_net_id : the public network id in Openstack
  • onap_private_net_id : the private network id in Openstack, we need this as this is not created by the auto assignment service
  • onap_private_subnet_id : and the private subnet id
  • pub_key : the public key to be put on the VMs
  • image_name : Ubuntu 14 image name
  • flavor_name : flavor
  • sec_group : security group that will be applied to the VMs



Results of the Postman Rest calls:

You can find below the output of the calls shown in the video:

Setup A&AI Customer first by execution below robot script: 


Output of the robot script to distribute the vFW service model
root@olc-rancher:~/oom/kubernetes/robot# ./demo-k8s.sh onap distributeVFWNG
Number of parameters:
2
KEY:
distributeVFWNG
++ kubectl --namespace onap get pods
++ sed 's/ .*//'
++ grep robot
+ POD=onap-robot-robot-5b5cbb95fc-8t4lv
+ ETEHOME=/var/opt/OpenECOMP_ETE
++ kubectl --namespace onap exec onap-robot-robot-5b5cbb95fc-8t4lv -- bash -c 'ls -1q /share/logs/ | wc -l'
+ export GLOBAL_BUILD_NUMBER=14
+ GLOBAL_BUILD_NUMBER=14
++ printf %04d 14
+ OUTPUT_FOLDER=0014_demo_distributeVFWNG
+ DISPLAY_NUM=104
+ VARIABLEFILES='-V /share/config/vm_properties.py -V /share/config/integration_robot_properties.py -V /share/config/integration_preload_parameters.py'
+ kubectl --namespace onap exec onap-robot-robot-5b5cbb95fc-8t4lv -- /var/opt/OpenECOMP_ETE/runTags.sh -V /share/config/vm_properties.py -V /share/config/integration_robot_properties.py -V /share/config/integration_preload_parameters.py -d /share/logs/0014_demo_distributeVFWNG -i distributeVFWNG --display 104
Starting Xvfb on display :104 with res 1280x1024x24
Executing robot tests at log level TRACE
==============================================================================
Testsuites                                                                    
==============================================================================
Testsuites.Demo :: Executes the VNF Orchestration Test cases including setu...
==============================================================================
Distribute vFWNG CDS Model :: Distribute vFWNG for CDS                resp=[{u'getInputValues': None, u'parentUniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'instanceUniqueId': None, u'schemaProperty': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'schemaType': None, u'propertyId': None, u'componentInstanceId': None, u'defaultValue': None, u'label': None, u'componentInstanceName': None, u'version': None, u'uniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632.nfc_function', u'hidden': False, u'type': u'string', u'annotations': None, u'empty': False, u'schema': {u'derivedFrom': None, u'version': None, u'ownerId': None, u'property': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'type': None, u'properties': None, u'empty': False, u'constraints': None}, u'status': None, u'inputs': None, u'description': None, u'rules': None, u'valueUniqueUid': None, u'inputId': None, u'inputPath': None, u'path': None, u'password': False, u'properties': None, u'definition': False, u'name': u'nfc_function', u'required': False, u'value': u'vpg', u'immutable': False, u'getInputProperty': False, u'ownerId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'constraints': None}, {u'getInputValues': None, u'parentUniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'instanceUniqueId': None, u'schemaProperty': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'schemaType': None, u'propertyId': None, u'componentInstanceId': None, u'defaultValue': None, u'label': None, u'componentInstanceName': None, u'version': None, u'uniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632.nfc_naming', u'hidden': False, u'type': u'org.openecomp.datatypes.Naming', u'annotations': None, u'empty': False, u'schema': {u'derivedFrom': None, u'version': None, u'ownerId': None, u'property': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'type': None, u'properties': None, u'empty': False, u'constraints': None}, u'status': None, u'inputs': None, u'description': u'vfc naming', u'rules': None, u'valueUniqueUid': None, u'inputId': None, u'inputPath': None, u'path': None, u'password': False, u'properties': None, u'definition': False, u'name': u'nfc_naming', u'required': False, u'value': u'{"ecomp_generated_naming":true,"naming_policy":"SDNC_Policy.ONAP_VPG_NAMING_TIMESTAMP"}', u'immutable': False, u'getInputProperty': False, u'ownerId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'constraints': None}]
resp=[{u'getInputValues': None, u'parentUniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'instanceUniqueId': None, u'schemaProperty': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'schemaType': None, u'propertyId': None, u'componentInstanceId': None, u'defaultValue': None, u'label': None, u'componentInstanceName': None, u'version': None, u'uniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632.nfc_function', u'hidden': False, u'type': u'string', u'annotations': None, u'empty': False, u'schema': {u'derivedFrom': None, u'version': None, u'ownerId': None, u'property': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'type': None, u'properties': None, u'empty': False, u'constraints': None}, u'status': None, u'inputs': None, u'description': None, u'rules': None, u'valueUniqueUid': None, u'inputId': None, u'inputPath': None, u'path': None, u'password': False, u'properties': None, u'definition': False, u'name': u'nfc_function', u'required': False, u'value': u'vsn', u'immutable': False, u'getInputProperty': False, u'ownerId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'constraints': None}, {u'getInputValues': None, u'parentUniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'instanceUniqueId': None, u'schemaProperty': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'schemaType': None, u'propertyId': None, u'componentInstanceId': None, u'defaultValue': None, u'label': None, u'componentInstanceName': None, u'version': None, u'uniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632.nfc_naming', u'hidden': False, u'type': u'org.openecomp.datatypes.Naming', u'annotations': None, u'empty': False, u'schema': {u'derivedFrom': None, u'version': None, u'ownerId': None, u'property': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'type': None, u'properties': None, u'empty': False, u'constraints': None}, u'status': None, u'inputs': None, u'description': u'vfc naming', u'rules': None, u'valueUniqueUid': None, u'inputId': None, u'inputPath': None, u'path': None, u'password': False, u'properties': None, u'definition': False, u'name': u'nfc_naming', u'required': False, u'value': u'{"ecomp_generated_naming":true,"naming_policy":"SDNC_Policy.ONAP_VSN_NAMING_TIMESTAMP"}', u'immutable': False, u'getInputProperty': False, u'ownerId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'constraints': None}]
resp=[{u'getInputValues': None, u'parentUniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'instanceUniqueId': None, u'schemaProperty': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'schemaType': None, u'propertyId': None, u'componentInstanceId': None, u'defaultValue': None, u'label': None, u'componentInstanceName': None, u'version': None, u'uniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632.nfc_function', u'hidden': False, u'type': u'string', u'annotations': None, u'empty': False, u'schema': {u'derivedFrom': None, u'version': None, u'ownerId': None, u'property': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'type': None, u'properties': None, u'empty': False, u'constraints': None}, u'status': None, u'inputs': None, u'description': None, u'rules': None, u'valueUniqueUid': None, u'inputId': None, u'inputPath': None, u'path': None, u'password': False, u'properties': None, u'definition': False, u'name': u'nfc_function', u'required': False, u'value': u'vfw', u'immutable': False, u'getInputProperty': False, u'ownerId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'constraints': None}, {u'getInputValues': None, u'parentUniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'instanceUniqueId': None, u'schemaProperty': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'schemaType': None, u'propertyId': None, u'componentInstanceId': None, u'defaultValue': None, u'label': None, u'componentInstanceName': None, u'version': None, u'uniqueId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632.nfc_naming', u'hidden': False, u'type': u'org.openecomp.datatypes.Naming', u'annotations': None, u'empty': False, u'schema': {u'derivedFrom': None, u'version': None, u'ownerId': None, u'property': {u'getInputValues': None, u'parentUniqueId': None, u'instanceUniqueId': None, u'schemaProperty': None, u'schemaType': None, u'propertyId': None, u'defaultValue': None, u'label': None, u'version': None, u'uniqueId': None, u'hidden': False, u'type': None, u'annotations': None, u'empty': False, u'schema': None, u'status': None, u'description': None, u'inputId': None, u'inputPath': None, u'password': False, u'definition': True, u'name': None, u'required': False, u'value': None, u'immutable': False, u'getInputProperty': False, u'ownerId': None}, u'type': None, u'properties': None, u'empty': False, u'constraints': None}, u'status': None, u'inputs': None, u'description': u'vfc naming', u'rules': None, u'valueUniqueUid': None, u'inputId': None, u'inputPath': None, u'path': None, u'password': False, u'properties': None, u'definition': False, u'name': u'nfc_naming', u'required': False, u'value': u'{"ecomp_generated_naming":true,"naming_policy":"SDNC_Policy.ONAP_VFW_NAMING_TIMESTAMP"}', u'immutable': False, u'getInputProperty': False, u'ownerId': u'2cdcf5d2-e6e5-4a4d-a701-b15424093632', u'constraints': None}]
Downloaded:service-Vfwng201904252122-csar.csar
| PASS |
------------------------------------------------------------------------------
Testsuites.Demo :: Executes the VNF Orchestration Test cases inclu... | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Testsuites                                                            | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output:  /share/logs/0014_demo_distributeVFWNG/output.xml
Log:     /share/logs/0014_demo_distributeVFWNG/log.html
Report:  /share/logs/0014_demo_distributeVFWNG/report.html
root@olc-rancher:~/oom/kubernetes/robot# 


Output of CDS #1 - SDC Service Catalog
GET /sdc/v1/catalog/services HTTP/1.1

RESPONSE:
    {
        "uuid": "fe0c7a4f-739f-4cdb-bdfe-2fb06eddf15c",
        "invariantUUID": "3b8ac8f1-7792-49fd-9d3e-45811a594d17",
        "name": "vFWNG 2019-04-25 21:22:",
        "version": "1.0",
        "toscaModelURL": "/sdc/v1/catalog/services/fe0c7a4f-739f-4cdb-bdfe-2fb06eddf15c/toscaModel",
        "category": "Network L1-3",
        "lifecycleState": "CERTIFIED",
        "lastUpdaterUserId": "jm0007",
        "distributionStatus": "DISTRIBUTED"
    }


Output of CDS #2 - SO Service VNFs
GET /ecomp/mso/catalog/v2/serviceVnfs?serviceModelName=vFWNG 2019-04-25 21:22: HTTP/1.1

RESPONSE:
{
    "serviceVnfs": [
        {
            "modelInfo": {
                "modelName": "40d322e4-c53d-4aa4-a6a2",
                "modelUuid": "1525769d-e709-4d19-9bff-3e481a79e658",
                "modelInvariantUuid": "55054e28-b7fc-43d8-bcc9-d5aa9a2c1800",
                "modelVersion": "1.0",
                "modelCustomizationUuid": "72c6b040-7132-49c7-99f6-4e9b85f19695",
                "modelInstanceName": "40d322e4-c53d-4aa4-a6a2 0"
            },
            "toscaNodeType": "org.openecomp.resource.vf.40d322e4C53d4aa4A6a2",
            "nfFunction": "ONAP-FIREWALL",
            "nfType": "FIREWALL",
            "nfRole": "vFW",
            "nfNamingCode": "vfw",
            "multiStageDesign": "false",
            "resourceInput": "{\"vf_module_id\":\"vFirewallCL\",\"nf_function\":\"ONAP-FIREWALL\",\"vfw_private_ip_1\":\"192.168.20.100\",\"public_net_id\":\"PUT THE PUBLIC NETWORK ID HERE\",\"unprotected_private_subnet_id\":\"zdfw1fwl01_unprotected_sub\",\"vfw_private_ip_0\":\"192.168.10.100\",\"onap_private_subnet_id\":\"PUT THE ONAP PRIVATE NETWORK NAME HERE\",\"vfw_private_ip_2\":\"10.0.100.1\",\"sec_group\":\"PUT THE ONAP SECURITY GROUP HERE\",\"nf_type\":\"FIREWALL\",\"vfw_name_0\":\"zdfw1fwl01fwl01\",\"nexus_artifact_repo\":\"https://nexus.onap.org\",\"onap_private_net_cidr\":\"10.0.0.0/16\",\"image_name\":\"PUT THE VM IMAGE NAME HERE (UBUNTU 1404)\",\"flavor_name\":\"PUT THE VM FLAVOR NAME HERE (m1.medium suggested)\",\"dcae_collector_ip\":\"10.0.4.1\",\"vnf_id\":\"vSink_demo_app\",\"dcae_collector_port\":\"8081\",\"protected_private_subnet_id\":\"zdfw1fwl01_protected_sub\",\"vpg_name_0\":\"zdfw1fwl01pgn01\",\"vpg_private_ip_1\":\"10.0.100.2\",\"vsn_private_ip_0\":\"192.168.20.250\",\"vsn_private_ip_1\":\"10.0.100.3\",\"vpg_private_ip_0\":\"192.168.10.200\",\"protected_private_net_cidr\":\"192.168.20.0/24\",\"unprotected_private_net_cidr\":\"192.168.10.0/24\",\"nf_naming\":\"true\",\"vsn_name_0\":\"zdfw1fwl01snk01\",\"multi_stage_design\":\"false\",\"onap_private_net_id\":\"PUT THE ONAP PRIVATE NETWORK NAME HERE\",\"nf_naming_code\":\"vfw\",\"unprotected_private_net_id\":\"zdfw1fwl01_unprotected\",\"availability_zone_max_count\":\"1\",\"sdnc_artifact_name\":\"vFW_vNF_Artifact\",\"demo_artifacts_version\":\"1.3.0-SNAPSHOT\",\"pub_key\":\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXYJYYi3/OUZXUiCYWdtc7K0m5C0dJKVxPG0eI8EWZrEHYdfYe6WoTSDJCww+1qlBSpA5ac/Ba4Wn9vh+lR1vtUKkyIC/nrYb90ReUd385Glkgzrfh5HdR5y5S2cL/Frh86lAn9r6b3iWTJD8wBwXFyoe1S2nMTOIuG4RPNvfmyCTYVh8XTCCE8HPvh3xv2r4egawG1P4Q4UDwk+hDBXThY2KS8M5/8EMyxHV0ImpLbpYCTBA6KYDIRtqmgS6iKyy8v2D1aSY5mc9J0T5t9S2Gv+VZQNWQDDKNFnxqYaAo1uEoq/i1q63XC5AD3ckXb2VT6dp23BQMdDfbHyUWfJN\",\"key_name\":\"vfw_key\",\"sdnc_model_version\":\"1.0.0\",\"nf_role\":\"vFW\",\"install_script_version\":\"1.3.0-SNAPSHOT\",\"protected_private_net_id\":\"zdfw1fwl01_protected\",\"sdnc_model_name\":\"vFW_spinup\",\"cloud_env\":\"openstack\"}",
            "vfModules": [
                {
                    "modelInfo": {
                        "modelName": "40d322e4C53d4aa4A6a2..vpg..module-2",
                        "modelUuid": "755a7ebd-a776-4e2c-a5c6-7e979e9e5861",
                        "modelInvariantUuid": "02a5571e-1150-48d7-be90-810e00760da9",
                        "modelVersion": "1",
                        "modelCustomizationUuid": "4ada321d-647e-4754-a820-41d69494259a"
                    },
                    "isBase": false,
                    "vfModuleLabel": "vpg",
                    "initialCount": 0,
                    "hasVolumeGroup": false
                },
                {
                    "modelInfo": {
                        "modelName": "40d322e4C53d4aa4A6a2..vsn..module-1",
                        "modelUuid": "746aeb94-1e10-4b15-87e0-f74318a29e17",
                        "modelInvariantUuid": "48e8b4bb-e852-415e-894f-c4fdbbc6f98c",
                        "modelVersion": "1",
                        "modelCustomizationUuid": "8547725d-4b3b-4411-a1b4-ed9591e291d6"
                    },
                    "isBase": false,
                    "vfModuleLabel": "vsn",
                    "initialCount": 0,
                    "hasVolumeGroup": false
                },
                {
                    "modelInfo": {
                        "modelName": "40d322e4C53d4aa4A6a2..vfw..module-3",
                        "modelUuid": "a1a1692a-10ba-4122-8340-ac9fe85adfa7",
                        "modelInvariantUuid": "601dded4-2943-4dc9-b508-82469e5863d9",
                        "modelVersion": "1",
                        "modelCustomizationUuid": "a42bc6e5-2705-4138-9e7f-01612988df6e"
                    },
                    "isBase": false,
                    "vfModuleLabel": "vfw",
                    "initialCount": 0,
                    "hasVolumeGroup": false
                },
                {
                    "modelInfo": {
                        "modelName": "40d322e4C53d4aa4A6a2..base_template..module-0",
                        "modelUuid": "1e9b4714-c243-4fef-a1b0-c6cfe608056e",
                        "modelInvariantUuid": "90b61d87-6ffd-47a1-bf61-a2c7a8efa422",
                        "modelVersion": "1",
                        "modelCustomizationUuid": "db04f50d-6957-4d8f-9c78-586aec9462aa"
                    },
                    "isBase": true,
                    "vfModuleLabel": "base_template",
                    "initialCount": 1,
                    "hasVolumeGroup": false
                }
            ]
        }
    ]
}


Output of CDS #3 - SO Service Assign & Activate
POST /onap/so/infra/serviceInstantiation/v7/serviceInstances HTTP/1.1

RESPONSE:
{
    "requestReferences": {
        "requestId": "fa31259b-8f50-4b8b-b15d-be0eb36ba358",
        "instanceId": "70d003f2-8378-43f5-b8cd-eede99cbae5d"
    }
}


Output of CDS #4 - SO Active Infra Requests
GET /infraActiveRequests/fa31259b-8f50-4b8b-b15d-be0eb36ba358

RESPONSE:
{
    "clientRequestId": null,
    "action": "createInstance",
    "requestStatus": "COMPLETE",
    "statusMessage": "Macro-Service-createInstance request was executed correctly.",
    "progress": 100,
    "startTime": "2019-04-25T21:30:34.000+0000",
    "endTime": "2019-04-25T21:41:32.000+0000",
    "source": "VID",
    "vnfId": "2ed048f4-9d1f-46da-8d25-1ce8e1a7a2dd",
    "vnfName": null,
    "vnfType": null,
    "serviceType": null,
    "aicNodeClli": null,
    "tenantId": "6270eaa820934710960682c506115453",
    "provStatus": null,
    "vnfParams": null,
    "vnfOutputs": null,
    "requestBody": "{\r\n  \"requestDetails\": {\r\n    \"subscriberInfo\": {\r\n      \"globalSubscriberId\": \"Demonstration\"\r\n    },\r\n    \"requestInfo\": {\r\n      \"suppressRollback\": false,\r\n      \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\r\n      \"requestorId\": \"adt\",\r\n      \"instanceName\": \"vFWNG_CDS_13\",\r\n      \"source\": \"VID\"\r\n    },\r\n    \"cloudConfiguration\": {\r\n      \"lcpCloudRegionId\": \"fr1\",\r\n      \"tenantId\": \"6270eaa820934710960682c506115453\"\r\n    },\r\n    \"requestParameters\": {\r\n      \"subscriptionServiceType\": \"vFW\",\r\n      \"userParams\": [\r\n        {\r\n          \"Homing_Solution\": \"none\"\r\n        },\r\n        {\r\n          \"service\": {\r\n            \"instanceParams\": [\r\n               \r\n            ],\r\n            \"instanceName\": \"vFWNG_CDS_13\",\r\n            \"resources\": {\r\n              \"vnfs\": [\r\n                {\r\n                  \"modelInfo\": {\r\n                \"modelName\": \"40d322e4-c53d-4aa4-a6a2\",\r\n                \"modelVersionId\": \"1525769d-e709-4d19-9bff-3e481a79e658\",\r\n                \"modelInvariantUuid\": \"55054e28-b7fc-43d8-bcc9-d5aa9a2c1800\",\r\n                \"modelVersion\": \"1.0\",\r\n                \"modelCustomizationId\": \"72c6b040-7132-49c7-99f6-4e9b85f19695\",\r\n                \"modelInstanceName\": \"40d322e4-c53d-4aa4-a6a2 0\"\r\n                  },\r\n                  \"cloudConfiguration\": {\r\n                    \"lcpCloudRegionId\": \"fr1\",\r\n                    \"tenantId\": \"6270eaa820934710960682c506115453\"\r\n                  },\r\n                  \"platform\": {\r\n                    \"platformName\": \"test\"\r\n                  },\r\n                  \"lineOfBusiness\": {\r\n                    \"lineOfBusinessName\": \"someValue\"\r\n                  },\r\n                  \"productFamilyId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\r\n                  \"instanceName\": \"40d322e4-c53d-4aa4-a6a2 0\",\r\n                  \"instanceParams\": [\r\n                    {\r\n                      \"onap_private_net_id\": \"olc-private\",\r\n                      \"onap_private_subnet_id\": \"olc-private\",\r\n                      \"pub_key\": \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwj7uJMyKiP1ogEsZv5kKDFw9mFNhxI+woR3Tuv8vjfNnqdB1GfSnvTFyNbdpyNdR8BlljkiZ1SlwJLEkvPk0HpOoSVVek/QmBeGC7mxyRcpMB2cNQwjXGfsVrforddXOnOkj+zx1aNdVGMc52Js3pex8B/L00H68kOcwP26BI1o77Uh+AxjOkIEGs+wlWNUmXabLDCH8l8IJk9mCTruKEN9KNj4NRZcaNC+XOz42SyHV9RT3N6efp31FqKzo8Ko63QirvKEEBSOAf9VlJ7mFMrGIGH37AP3JJfFYEHDdOA3N64ZpJLa39y25EWwGZNlWpO/GW5bNjTME04dl4eRyd\",\r\n                      \"image_name\": \"Ubuntu 14.04\",\r\n                      \"flavor_name\":\"s1.cw.small-1\"\r\n                    }\r\n                  ],\r\n                  \"vfModules\": [\r\n                    {\r\n                      \"modelInfo\": {\r\n                        \"modelName\": \"40d322e4C53d4aa4A6a2..vpg..module-2\",\r\n                        \"modelVersionId\": \"755a7ebd-a776-4e2c-a5c6-7e979e9e5861\",\r\n                        \"modelInvariantUuid\": \"02a5571e-1150-48d7-be90-810e00760da9\",\r\n                        \"modelVersion\": \"1\",\r\n                        \"modelCustomizationId\": \"4ada321d-647e-4754-a820-41d69494259a\"\r\n                       },\r\n                      \"instanceName\": \"40d322e4C53d4aa4A6a2..vpg..module-2\",\r\n                      \"instanceParams\": [\r\n                                                 {\r\n                          \"sec_group\": \"olc-open\",\r\n                          \"public_net_id\": \"olc-net\"\r\n                        }\r\n                      ]\r\n                    },\r\n                    {\r\n                      \"modelInfo\": {\r\n                        \"modelName\": \"40d322e4C53d4aa4A6a2..vsn..module-1\",\r\n                        \"modelVersionId\": \"746aeb94-1e10-4b15-87e0-f74318a29e17\",\r\n                        \"modelInvariantUuid\": \"48e8b4bb-e852-415e-894f-c4fdbbc6f98c\",\r\n                        \"modelVersion\": \"1\",\r\n                        \"modelCustomizationId\": \"8547725d-4b3b-4411-a1b4-ed9591e291d6\"\r\n                       },\r\n                      \"instanceName\": \"40d322e4C53d4aa4A6a2..vsn..module-1\",\r\n                      \"instanceParams\": [\r\n                        {\r\n                          \"sec_group\": \"olc-open\",\r\n                          \"public_net_id\": \"olc-net\"\r\n                        }\r\n                      ]\r\n                    },\r\n                    {\r\n                      \"modelInfo\": {\r\n                        \"modelName\": \"40d322e4C53d4aa4A6a2..vfw..module-3\",\r\n                        \"modelVersionId\": \"a1a1692a-10ba-4122-8340-ac9fe85adfa7\",\r\n                        \"modelInvariantUuid\": \"601dded4-2943-4dc9-b508-82469e5863d9\",\r\n                        \"modelVersion\": \"1\",\r\n                        \"modelCustomizationId\": \"a42bc6e5-2705-4138-9e7f-01612988df6e\"\r\n                       },\r\n                      \"instanceName\": \"40d322e4C53d4aa4A6a2..vfw..module-3\",\r\n                      \"instanceParams\": [\r\n                        {\r\n                          \"sec_group\": \"olc-open\",\r\n                          \"public_net_id\": \"olc-net\"\r\n                        }\r\n                      ]\r\n                    },\r\n                    {\r\n                      \"modelInfo\": {\r\n                        \"modelName\": \"40d322e4C53d4aa4A6a2..base_template..module-0\",\r\n                        \"modelVersionId\": \"1e9b4714-c243-4fef-a1b0-c6cfe608056e\",\r\n                        \"modelInvariantUuid\": \"90b61d87-6ffd-47a1-bf61-a2c7a8efa422\",\r\n                        \"modelVersion\": \"1\",\r\n                        \"modelCustomizationId\": \"db04f50d-6957-4d8f-9c78-586aec9462aa\"\r\n                      },\r\n                      \"instanceName\": \"40d322e4C53d4aa4A6a2..base_template..module-0\",\r\n                      \"instanceParams\": [\r\n                        {\r\n                          \"sec_group\": \"olc-open\",\r\n                          \"public_net_id\": \"olc-net\"\r\n                        }\r\n                      ]\r\n                    }\r\n                  ]\r\n                }\r\n              ]\r\n            },\r\n            \"modelInfo\": {\r\n              \"modelVersion\": \"1.0\",\r\n        \"modelVersionId\": \"fe0c7a4f-739f-4cdb-bdfe-2fb06eddf15c\",\r\n        \"modelInvariantId\": \"3b8ac8f1-7792-49fd-9d3e-45811a594d17\",\r\n        \"modelName\": \"vFWNG 2019-04-25 21:22:\",\r\n              \"modelType\": \"service\"\r\n            }\r\n          }\r\n        }\r\n      ],\r\n      \"aLaCarte\": false\r\n    },\r\n    \"project\": {\r\n      \"projectName\": \"Project-Demonstration\"\r\n    },\r\n    \"owningEntity\": {\r\n      \"owningEntityId\": \"24ef5425-bec4-4fa3-ab03-c0ecf4eaac96\",\r\n      \"owningEntityName\": \"OE-Demonstration\"\r\n    },\r\n    \"modelInfo\": {\r\n      \"modelVersion\": \"1.0\",\r\n        \"modelVersionId\": \"fe0c7a4f-739f-4cdb-bdfe-2fb06eddf15c\",\r\n        \"modelInvariantId\": \"3b8ac8f1-7792-49fd-9d3e-45811a594d17\",\r\n        \"modelName\": \"vFWNG 2019-04-25 21:22:\",\r\n     \"modelType\": \"service\"\r\n    }\r\n  }\r\n}",
    "responseBody": null,
    "lastModifiedBy": "WorkflowActionBB",
    "modifyTime": "2019-04-25T21:41:32.000+0000",
    "requestType": null,
    "volumeGroupId": null,
    "volumeGroupName": null,
    "vfModuleId": null,
    "vfModuleName": null,
    "vfModuleModelName": null,
    "aaiServiceId": null,
    "aicCloudRegion": "fr1",
    "callBackUrl": null,
    "correlator": null,
    "serviceInstanceId": "70d003f2-8378-43f5-b8cd-eede99cbae5d",
    "serviceInstanceName": "vFWNG_CDS_13",
    "requestScope": "service",
    "requestAction": "createInstance",
    "networkId": null,
    "networkName": null,
    "networkType": null,
    "requestorId": "adt",
    "configurationId": null,
    "configurationName": null,
    "operationalEnvId": null,
    "operationalEnvName": null,
    "requestURI": "fa31259b-8f50-4b8b-b15d-be0eb36ba358",
    "_links": {
        "self": {
            "href": "http://84.39.35.230:30086/infraActiveRequests/fa31259b-8f50-4b8b-b15d-be0eb36ba358"
        },
        "infraActiveRequests": {
            "href": "http://84.39.35.230:30086/infraActiveRequests/fa31259b-8f50-4b8b-b15d-be0eb36ba358"
        }
    }
}

Postman Collection:

CDS Builder.postman_collection.json

Notes:

  • If the robot script for service model distribution fails, it might be due to a problem in the database, check the JIRA SO-1400 - Getting issue details... STATUS  for solution, basically we need to increase the size of the database field.
Log into the SO mariadb container.

use catalogdb;

ALTER TABLE vnf_resource_customization
MODIFY IF EXISTS RESOURCE_INPUT varchar(20000);

ALTER TABLE network_resource_customization
MODIFY IF EXISTS RESOURCE_INPUT varchar(20000);

ALTER TABLE allotted_resource_customization
MODIFY IF EXISTS RESOURCE_INPUT varchar(20000);

in so mariadb pod (username/password root/password).


  • If instantiation fails, and complains about the naming service not available, check that the SDNC Naming policies are active. You can check by policy API or go to POLICY from PORTAL and check the 3 Naming policies shown in the screenshot below exist.

image2019-4-30_16-37-59.png

1 Comment

  1. Hi Abdelmuhaimen Seaudi,

    Thank you for the demo, it helped a lot.

    Currently, got stuck at  vnf-topology-operation assignment in SDNC. Please see the logs.

    SO Active Infra Requests

    -----------------------------

    http://{{k8s}}:30277/infraActiveRequests/{{cds-requestid}}

    "clientRequestId": null,
    "action": "createInstance",
    "requestStatus": "FAILED",
    "statusMessage": "Exception in org.onap.so.bpmn.infrastructure.sdnc.tasks.SDNCUnassignTasks.unassignServiceInstance Error from SDNC:Cannot delete the service because there are VNFs defined",
    "progress": 100,
    "startTime": "2019-04-26T14:52:46.000+0000",
    "endTime": null,
    "source": "VID",
    "vnfId": "6ea9474a-066e-418a-80df-4ab0679df5c3",
    "vnfName": null,

    bpmn logs

    ------------
    2019-04-26T14:53:19.902Z|203a7e3f-2cca-4b7d-9a7a-403aa9f50c5a|camundaTaskExecutor-2|AssignVnfBB||BPMN|AssignVnfBB|ERROR|300|Error from SDNC: Failed to create self-serve assignment for vnf with vnf-id=6ea9474a-066e-418a-80df-4ab0679df5c3 with error: Encountered error from capability: self-serve-generate-name, with error: Error from NameGenerationNode Assign|RA_RESPONSE_FROM_SDNC
    2019-04-26T14:53:19.904Z|203a7e3f-2cca-4b7d-9a7a-403aa9f50c5a|camundaTaskExecutor-2|AssignVnfBB||||ERROR|300|Error from SDNC: Failed to create self-serve assignment for vnf with vnf-id=6ea9474a-066e-418a-80df-4ab0679df5c3 with error: Encountered error from capability: self-serve-generate-name, with error: Error from NameGenerationNode Assign|Error from SDNC: Failed to create self-serve assignment for vnf with vnf-id=6ea9474a-066e-418a-80df-4ab0679df5c3 with error: Encountered error from capability: self-serve-generate-name, with error: Error from NameGenerationNode Assign
    org.onap.so.client.exception.BadResponseException: Error from SDNC: Failed to create self-serve assignment for vnf with vnf-id=6ea9474a-066e-418a-80df-4ab0679df5c3 with error: Encountered error from capability: self-serve-generate-name, with error: Error from NameGenerationNode Assign
    2019-04-26T14:53:19.905Z|203a7e3f-2cca-4b7d-9a7a-403aa9f50c5a|camundaTaskExecutor-2|AssignVnfBB||BPMN|AssignVnfBB|ERROR|900|Exception in org.onap.so.bpmn.infrastructure.sdnc.tasks.SDNCAssignTasks.assignVnf |BPMN_GENERAL_EXCEPTION_ARG
    2019-04-26T14:53:27.066Z|203a7e3f-2cca-4b7d-9a7a-403aa9f50c5a|camundaTaskExecutor-2|UnassignServiceInstanceBB||BPMN|UnassignServiceInstanceBB|ERROR|300|Error from SDNC: Cannot delete the service because there are VNFs defined|RA_RESPONSE_FROM_SDNC
    2019-04-26T14:53:27.067Z|203a7e3f-2cca-4b7d-9a7a-403aa9f50c5a|camundaTaskExecutor-2|UnassignServiceInstanceBB||||ERROR|300|Error from SDNC: Cannot delete the service because there are VNFs defined|Error from SDNC: Cannot delete the service because there are VNFs defined
    org.onap.so.client.exception.BadResponseException: Error from SDNC: Cannot delete the service because there are VNFs defined
    at org.onap.so.client.sdnc.SdnCommonTasks.validateSDNResponse(SdnCommonTasks.java:118)
    at org.onap.so.client.sdnc.SDNCClient.post(SDNCClient.java:68)


    SDNC LOGS - Failing in  vnf-topology-operation assign

    --------------

    0.3.3 | SvcLogicGraph [module=GENERIC-RESOURCE-API, rpc=vnf-topology-operation-assign, mode=sync, version=1.4.4, md5sum=33d481bcfdc11492aadce50c9aae6922] - 9 (get-resource) | Outcome (success) not found, keys are { (not-found) (failure)}
    2019-04-29T12:27:28,767 | INFO | qtp190573995-112 | SvcLogicExprListener | 221 - org.onap.ccsdk.sli.core.sli-common - 0.3.3 | SvcLogicGraph [module=GENERIC-RESOURCE-API, rpc=vnf-topology-operation-assign, mode=sync, version=1.4.4, md5sum=33d481bcfdc11492aadce50c9aae6922] - 9 (get-resource) | Outcome (Other) not found, keys are { (not-found) (failure)}
    2019-04-29T12:27:28,768 | INFO | qtp190573995-112 | SvcLogicServiceImpl | 222 - org.onap.ccsdk.sli.core.sli-provider - 0.3.3 | SvcLogicGraph [module=GENERIC-RESOURCE-API, rpc=vnf-topology-operation-assign, mode=sync, version=1.4.4, md5sum=33d481bcfdc11492aadce50c9aae6922] - 9 (get-resource) | About to execute node # 12 (call)
    2019-04-29T12:27:29,025 | INFO | qtp190573995-112 | ConfigAssignmentProcessService | 396 - wrap_file__opt_opendaylight_system_com_att_eelf_eelf-core_1.0.0_eelf-core-1.0.0.jar - 0.0.0 | SvcLogicGraph [module=GENERIC-RESOURCE-API, rpc=self-serve-vnf-ra-assignment, mode=sync, version=1.4.4, md5sum=6b46660055c62cc28b2b64e950131e62] - 22 (execute) | List of Resources provided in input: {service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-parameters-data.param[5].name=pub_key, service-data.vnfs.vnf[0].vnf-data.sdnc-request-header.svc-request-id=17258dff-efb6-4d36-a78b-b782cf625400, vnf-type=VFW, tmp.sdnc-model-name=vFW_spinup, db.vf-model.customization-uuid=8302334f-bb35-4dcc-8ddf-d34334aa2cb2, prop.restapi.connection-oof-url=http://oof-osdf:8698/api/oof/v1/route, vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid=9252e27e-f502-4d9d-956b-c1c9164f8bba, service-data.vnfs.vn

    2019-04-29T12:27:30,338 | ERROR | qtp190573995-112 | GenericResourceApiProvider | 237 - org.onap.sdnc.northbound.generic-resource-api-provider - 1.4.3 | - | Returned FAILED for vnf-topology-operation [f074b153-72cb-4cb5-a2c1-ccc034a1f1b4] VnfTopologyOperationOutput [_ackFinalIndicator=Y, _responseCode=500, _responseMessage=Failed to create self-serve assignment for vnf with vnf-id=3ba192d0-a002-4412-bcf5-99cd493b070b with error: Encountered error from capability: self-serve-generate-name, with error: Error from NameGenerationNode Assign, _svcRequestId=17258dff-efb6-4d36-a78b-b782cf625400, augmentation=[]]


    Can you please help us. Awaiting for your reply.