The CBA and Data Dictionary are explained in the Modelling Concepts page here: Modeling Concepts


    CDS will require a main components to be able to build a service instance, Following the instructions below in the following order to onboard the Data Dictionary and CBA Package. 

    1. Load the latest DD.json and run the . dd.sh script in rancher. 
    2. Once this is step is completed, access the CDS UI and upload the latest CBA and execute in the following sequence:
      1. Enrich
      2. Save
      3. Deploy
      4. if upload via SDC: Click on Download and use the Enriched CBA Package to onboard via SDC Artifact Deployment for the VF Model.


    Controller Blueprint Package

    [Deploy the cba using CDS UI by following the steps of Enrich, Save, Deploy]

    Data Dictionary 

    In the El Alto Release, different CBA Package flavors are available to be executed.

    ZIP FILE (Flavor Types) Description
    vLB_CDS_Kotlin_NETCONF.zip CBA Package with Kotlin Script to execute NETCONF for post instantiation
    VLB_CDS_KOTLIN_REST.zip CBA Package with Kotlin Script to execute RESTCONF for post instantiation
    vLB_CBA_Python.zip CBA Package with Python Script to execute NETCONF for post instantiation
    TBD CBA Package with Ansible Playbook to execute NETCONF for post instantiation


    NOTE:

    • Within a single Controller Blueprint Archive (CBA)  package for VLB CDS shall support both E2E Automation and Scale Out Use Case.
    • The CBA Package is a portable cloud package that enables
      • Declarative cloud provisioning
      • Configuration Life-cycle Management of VNF/PNF/CNF. 
      • Customization to meet service providers/vendor/business needs. 
    dd El Alto cds ui with source-db.zip


    After building the CBA and Data Dictionary, we can use the CDS UI to add the Data Dictionary to CDS, and to deploy the CBA in CDS.

    First, we logon to CDS UI using the url https://<onap_ip_address>:30497.

    Choose Controller Blueprint, select file, and update Metadata, the NEXT.


    Controller Blueprint - CBA Package Management Screens


    Enrich, Save, Publish, and finally Deploy, and you should receive a success notification.


    Resource Definition Screen - Controller Data Dictionary 


    If we want to add one Dictionary item, we start in the CDS UI home screen, select New Resource.

    Paste the Dictionary Definition JSON string and submit.

    If we want to add many Dictionary items, we can create a JSON list of all the dictionary items and save them in a file called dd.json, and then run the dd.sh script below in the same folder where dd.json is located.

    Push Data Dictionaries
    #!/bin/bash
    # Author: abdelmuhaimen.seaudi@orange.com
    # Usage: name this script as dd.sh, and put the data dictionaries list JSON as dd.json in the same directory, and run dd.sh
    # dd.sh will read the dictionary list JSON from dd.json, will output to stdout the number of Defintions found, and will start pushing them one by one to CDS DB
    l=`jq '.|length' dd.json`
    echo "Found $l Dictionary Definition Entries"
    i=0
    while [ $i -lt $l ]
    do
      echo "i = $i"
      d=`jq ".[$i]" dd.json`
      echo $d
      #REPLACE <cds-ui> with the IP Address of ONAP
      curl -k 'https://<cds-ui>:30497/resourcedictionary/save' -v -X POST -H 'Content-type: application/json' -d"$d"
      sleep 1
      echo -e "\n*****************************************\n"
      i=$(( $i + 1 ))
    done



    Within the E2E automation provided by CDS, we have a capability that can generate a name for a component, like a VNF or VF Module.

    This capability runs with ONAP POLICY component, where POLICY has the rule that will be used to generate the names

    The override.yaml file above has an option "preload=true", that will tell the POLICY component to run the push_policies.sh script as the POLICY PAP pod starts up, which will in turn create the Naming Policy and push it.

    To check that the naming policy is created and pushed OK, we can run the commands below.

    SDNC Naming policy
    bash-4.4$ curl -k --silent -X POST \
    --header 'Content-Type: application/json' \
    --header 'ClientAuth: cHl0aG9uOnRlc3Q=' \
    --header 'Authoment: TEST' \
    -d '{ "policyName": "SDNC_Policy.Config_MS_ONAP_VNF_NAMING_TIMESTAMP.1.xml"}' \
    'https://pdp:8081/pdp/api/getConfig'     
    
    
    [{"policyConfigMessage":"Config Retrieved! ",
    "policyConfigStatus":"CONFIG_RETRIEVED",
    "type":"JSON",
    "config":"{\"service\":\"SDNC-GenerateName\",\"version\":\"CSIT\",\"content\":{\"policy-instance-name\":\"ONAP_VNF_NAMING_TIMESTAMP\",\"naming-models\":[{\"naming-properties\":[{\"property-name\":\"AIC_CLOUD_REGION\"},{\"property-name\":\"CONSTANT\",\"property-value\":\"ONAP-NF\"},{\"property-name\":\"TIMESTAMP\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"VNF\",\"naming-recipe\":\"AIC_CLOUD_REGION|DELIMITER|CONSTANT|DELIMITER|TIMESTAMP\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-name\":\"SEQUENCE\",\"increment-sequence\":{\"max\":\"zzz\",\"scope\":\"ENTIRETY\",\"start-value\":\"001\",\"length\":\"3\",\"increment\":\"1\",\"sequence-type\":\"alpha-numeric\"}},{\"property-name\":\"NFC_NAMING_CODE\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"}],\"naming-type\":\"VNFC\",\"naming-recipe\":\"VNF_NAME|DELIMITER|NFC_NAMING_CODE|DELIMITER|SEQUENCE\"},{\"naming-properties\":[{\"property-name\":\"VNF_NAME\"},{\"property-value\":\"_\",\"property-name\":\"DELIMITER\"},{\"property-name\":\"VF_MODULE_LABEL\"},{\"property-name\":\"VF_MODULE_TYPE\"},{\"property-name\":\"SEQUENCE\",\"increment-sequence\":{\"max\":\"zzz\",\"scope\":\"PRECEEDING\",\"start-value\":\"01\",\"length\":\"3\",\"increment\":\"1\",\"sequence-type\":\"alpha-numeric\"}}],\"naming-type\":\"VF-MODULE\",\"naming-recipe\":\"VNF_NAME|DELIMITER|VF_MODULE_LABEL|DELIMITER|VF_MODULE_TYPE|DELIMITER|SEQUENCE\"}]}}",
    "policyName":"SDNC_Policy.Config_MS_ONAP_VNF_NAMING_TIMESTAMP.1.xml",
    "policyType":"MicroService",
    "policyVersion":"1",
    "matchingConditions":{"ECOMPName":"SDNC","ONAPName":"SDNC","service":"SDNC-GenerateName"},
    "responseAttributes":{},
    "property":null}]

    In case the policy is missing, we can manually create and push the SDNC Naming policy using the commands below.

    Create and Push SDNC Naming Policy
    #########################################Create SDNC Naming Policies##########################################
    echo "Create Generic SDNC Naming Policy for VNF"
    sleep 2
    echo "Create SDNC vFW Naming Policy"
    curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{
        "configBody": "{ \"service\": \"SDNC-GenerateName\", \"version\": \"CSIT\", \"content\": { \"policy-instance-name\": \"ONAP_VNF_NAMING_TIMESTAMP\", \"naming-models\": [ { \"naming-properties\": [ { \"property-name\": \"AIC_CLOUD_REGION\" }, { \"property-name\": \"CONSTANT\",\"property-value\": \"ONAP-NF\"}, { \"property-name\": \"TIMESTAMP\" }, { \"property-value\": \"_\", \"property-name\": \"DELIMITER\" } ], \"naming-type\": \"VNF\", \"naming-recipe\": \"AIC_CLOUD_REGION|DELIMITER|CONSTANT|DELIMITER|TIMESTAMP\" }, { \"naming-properties\": [ { \"property-name\": \"VNF_NAME\" }, { \"property-name\": \"SEQUENCE\", \"increment-sequence\": { \"max\": \"zzz\", \"scope\": \"ENTIRETY\", \"start-value\": \"001\", \"length\": \"3\", \"increment\": \"1\", \"sequence-type\": \"alpha-numeric\" } }, { \"property-name\": \"NFC_NAMING_CODE\" }, { \"property-value\": \"_\", \"property-name\": \"DELIMITER\" } ], \"naming-type\": \"VNFC\", \"naming-recipe\": \"VNF_NAME|DELIMITER|NFC_NAMING_CODE|DELIMITER|SEQUENCE\" }, { \"naming-properties\": [ { \"property-name\": \"VNF_NAME\" }, { \"property-value\": \"_\", \"property-name\": \"DELIMITER\" }, { \"property-name\": \"VF_MODULE_LABEL\" }, { \"property-name\": \"VF_MODULE_TYPE\" }, { \"property-name\": \"SEQUENCE\", \"increment-sequence\": { \"max\": \"zzz\", \"scope\": \"PRECEEDING\", \"start-value\": \"01\", \"length\": \"3\", \"increment\": \"1\", \"sequence-type\": \"alpha-numeric\" } } ], \"naming-type\": \"VF-MODULE\", \"naming-recipe\": \"VNF_NAME|DELIMITER|VF_MODULE_LABEL|DELIMITER|VF_MODULE_TYPE|DELIMITER|SEQUENCE\" } ] } }",
        "policyName": "SDNC_Policy.ONAP_VNF_NAMING_TIMESTAMP",
        "policyConfigType": "MicroService",
        "onapName": "SDNC",
        "riskLevel": "4",
        "riskType": "test",
        "guard": "false",
        "priority": "4",
        "description": "ONAP_VNF_NAMING_TIMESTAMP"
    }' 'https://pdp:8081/pdp/api/createPolicy'
    #########################################Pushing SDNC Naming Policies##########################################
    echo "Pushing SDNC Naming Policies"
    sleep 2
    echo "pushPolicy : PUT : SDNC_Policy.ONAP_VNF_NAMING_TIMESTAMP"
    curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{
      "pdpGroup": "default",
      "policyName": "SDNC_Policy.ONAP_VNF_NAMING_TIMESTAMP",
      "policyType": "MicroService"
    }' 'https://pdp:8081/pdp/api/pushPolicy'



    Introduction

    The purpose of this article is to describe the vLB use case distribution in El Alto Release.

    What's new in El Alto

    The Controller Blueprint Archive CBA is a zip archive that hosts all the service model related artifacts (heat templates, blueprints, vtl templates, workflows, etc ... ) that can enable ONAP to assign and instantiate the service. 

    Controller Design Studio CDS should receive a notification when a new service model is distributed by SDC, and then CDS will download the CBA CSAR file and deploy it.

    In El Alto, distribution of the vLB CDS Service model can now be automated using a Robot Script.

    Automated Distribution of vLB CDS Service in SDC Model using Robot

    The robot script can help the user automate the creation of the VSP and Service model, and also update the resource assignment properties of the service model to run the vLB_CDS blueprint.

    To use this feature follow the steps below:

    Robot Distribute vLB CDS Service Model
    root@olc-rancher:~# cd oom/kubernetes/robot/
    root@olc-rancher:~/oom/kubernetes/robot# ./demo-k8s.sh onap init
    Number of parameters:
    2
    KEY:
    init
    ++ kubectl --namespace onap get pods
    ++ grep robot
    ++ sed 's/ .*//'
    + POD=onap-robot-robot-6998b9988c-cthb7
    ++ dirname ./demo-k8s.sh
    + DIR=.
    + SCRIPTDIR=scripts/demoscript
    + ETEHOME=/var/opt/ONAP
    + '[' ']'
    ++ kubectl --namespace onap exec onap-robot-robot-6998b9988c-cthb7 -- bash -c 'ls -1q /share/logs/ | wc -l'
    + export GLOBAL_BUILD_NUMBER=16
    + GLOBAL_BUILD_NUMBER=16
    ++ printf %04d 16
    + OUTPUT_FOLDER=0016_demo_init
    + DISPLAY_NUM=106
    + VARIABLEFILES='-V /share/config/robot_properties.py'
    + kubectl --namespace onap exec onap-robot-robot-6998b9988c-cthb7 -- /var/opt/ONAP/runTags.sh -V /share/config/robot_properties.py -d /share/logs/0016_demo_init -i InitDemo --display 106
    Starting Xvfb on display :106 with res 1280x1024x24
    Executing robot tests at log level TRACE
    ==============================================================================
    Testsuites                                                                    
    ==============================================================================
    Testsuites.Demo :: Executes the VNF Orchestration Test cases including setu...
    ==============================================================================
    Initialize Customer And Models                                        | PASS |
    ------------------------------------------------------------------------------
    Initialize SO Openstack Identity For V3                               | PASS |
    ------------------------------------------------------------------------------
    Testsuites.Demo :: Executes the VNF Orchestration Test cases inclu... | PASS |
    2 critical tests, 2 passed, 0 failed
    2 tests total, 2 passed, 0 failed
    ==============================================================================
    Testsuites                                                            | PASS |
    2 critical tests, 2 passed, 0 failed
    2 tests total, 2 passed, 0 failed
    ==============================================================================
    Output:  /share/logs/0016_demo_init/output.xml
    Log:     /share/logs/0016_demo_init/log.html
    Report:  /share/logs/0016_demo_init/report.html
    root@olc-rancher:~/oom/kubernetes/robot# 


    In order to check if the robot is OK, we can check in SDC to check the demoVLB_CDS model exists



    Also, we can click on the service model and check the resource assignment properties to ensure that blueprint template name and version are updated.


    Manual Distribution of a VNF CBA 

    Login to ONAP as Designer (cs0008/demo123456!), and click on SDC application.

    Part 1 - Create a New Virtual Software Product

    In SDC, select the ONBOARD button > click on Create New VSP button > fill in the Name, Vendor, Category , Description and select the Network Package for on-boarding procedure as illustrated below.

    Once the forum is populated for New Software Product click on Create

    In Software Product Details Screen in SDC, the users must populate the license information and the software product. For the vLB CDS use case the software product for the heat package is obtain from the following link: vLB CDS HEAT PACKAGE.

    Once the for License and Software Product Attachment is populated then click on the Submit button. 

    Part 2 - Create VF Model and Certify



    Click on the Import VSP from the HOME page. 

    From the list of VSP, select the Specific vLB CDS VSP for IMPORT to create the VF in SDC.


    We fill in the VF name and description, etc ..., and click "Create".


    Click on "Deployment Artifact", then "Add other arifacts", and select the vDNS.zip CBA.


    Check the artifact is uploaded OK, and click on "Certify".


    Add a comment, and submit, you should receive a success notification, and we are back in SDC Home Screen.

    Part 3 - Create Service Model, Certify and Distribute

    Now, let's create a new service model, and add the newly created VF (including CBA artifact) to the new service model. Click on "Add Service"


    Add service name and description, and click on "Create". Choose Instantiation Type: Macro.


    Click on "Composition", and drag the VF we created from the palette on the left onto the canvas in the middle.

    Then, click on "Submit for Testing".


    Click on Properties Assignments, then click on the service name, e.g. "CDS-VNF-TEST" from the right bar.

    Type "sdnc" in the filter box, and add the sdnc_model_name, sdnc_model_version, and sdnc_artifact_version, and click "Save".


    Type "skip" in the filter box, and set "skip post instantiation" to FALSE, then click "Save".


    Login as Tester (jm0007/demo123456!) and accept the new service.


    Login as Governor (gv0001/demo123456!) and approve for distribution.


    Login as Operator (op0001/demo123456!) and click on "Distribute".


    Click on "Monitor" to check the progress of the distribution, and check that all ONAP components were notified, and downloaded the artifacts, and deployed OK.





    • No labels

    2 Comments

    1. Hi,

      After reading Modeling Concepts I'm tring to understand CDS.
      But I bumped into some problems:

      $ ./ete-k8s.sh onap health
      Basic CDS Health Check                                                | PASS |

      $ kubectl -n onap get pod -w | grep dev-cds
      dev-cds-cds-blueprints-processor-98dcc864f-nbwkn           1/1     Running      0          7m42s
      dev-cds-cds-command-executor-5466978b6d-879qk              1/1     Running      0          7m42s
      dev-cds-cds-db-0                                           1/1     Running      0          7m42s
      dev-cds-cds-sdc-listener-c498979c-wfr7d                    1/1     Running      0          7m42s
      dev-cds-cds-ui-6775468d4f-tkhwb                            1/1     Running      0          7m42s

      I got an error message when enriched the vLB_CBA_Python.zip  after uploaded via CDS GUI

      like this:

      Enrich:Http failure response for https://172.19.0.53:30497/controllerblueprint/enrich-blueprint: 500 Internal Server Error

      kubectl -n onap logs dev-cds-cds-ui-6775468d4f-tkhwbUnhandled error in POST /controllerblueprint/enrich-blueprint: 500 Error: getaddrinfo ENOTFOUND cds-controller-blueprints cds-controller-blueprints:8080    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)

      so I changed the config.api.controller.http.baseUrl  to follow the master branch's yaml

      when setup the CDS-UI by the El-Alto helm, config.api.controller.http.baseUrl is consolidated to config.api.processor.http.baseUrl in values.yaml? 

       fom http://cds-controller-blueprints:8080/api/v1
       to   http://cds-blueprints-processor-http:8080/api/v1

      But, still what'happening is like this
      Enrich:Http failure response for https://172.19.0.53:30497/controllerblueprint/enrich-blueprint: 500 Internal Server Error

      2019-12-28 05:08:46,265|||reactor-http-epoll-7||||INFO||||||| ***** Enhancing NodeTemplate(input)
      2019-12-28 05:08:46,339|||reactor-http-epoll-7||||ERROR||||||| [2dda3f1a] 500 Server Error for HTTP POST "/api/v1/blueprint-model/enrich/"
      org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException: failed to get resource dictionary (vf-module-name) from repo
              at org.onap.ccsdk.cds.blueprintsprocessor.designer.api.service.BluePrintRepoFileService.getResourceDefinition(BluePrintRepoServiceImpl.kt:78)


      Also,
      I got a Error saving resources dd El Alto cds ui with source-db.json.
      like this.

      2019-12-28T05:11:14.278Z info Incoming request from POST /resourcedictionary/save and with header {"X-ONAP-RequestID":"bf39e6b2-c5f6-4936-8f8f-e52999fbb171","host":"172.19.0.53:30497","connection":"keep-alive","content-length":"0","accept":"application/json, text/plain, */*","origin":"https://172.19.0.53:30497","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36","sec-fetch-site":"same-origin","sec-fetch-mode":"cors","referer":"https://172.19.0.53:30497/resource-definition","accept-encoding":"gzip, deflate, br","accept-language":"ja,en-US;q=0.9,en;q=0.8"} query {} params {} and response code: 400

      How do I need to do to fix this problem?

      I was wondering if you could help me, that would be great.


      yu-kishimoto


    2. Thanks Yuriy

      Solved the aforementioned issue that enrichment fail can be fixed to perform the dd.sh

      I would like you to modify and upload the dd.json so that beginner like me can use this dd.json.

      1. Add an endpoint-selector to each definition that has a SQL connection.
         "endpoint-selector" : "dynamic-db-source"
      2. Change the url-path of dns_vf_module_id.
        "url-path": "/restconf/config/GENERIC-RESOURCE-API:services/service/$vnf-id/service-data/vnfs/vnf/$service-instance-id/vnf-data/vnf-topology/vnf-parameters-data/param/vdns_vf_module_id"