Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • After Verify if you can see CDS k8s PODs

kubectl get pods -n onap

NAME READY STATUS RESTARTS AGE
dev-cds-blueprints-processor-b8656f584-dhj58 1/1 Running 0 4m2s
dev-cds-command-executor-78b98dff4f-qzf4j 1/1 Running 0 4m2s
dev-cds-db-0 1/1 Running 0 4m2s
dev-cds-py-executor-5667f84d8-n6j5h 1/1 Running 0 4m2s
dev-cds-sdc-listener-749896d795-4r9vp 0/1 Init:0/1 0 4m2s
dev-cds-ui-77f74ff6db-8m6t2 1/1 Running 0 4m2s
dev-mariadb-galera-0 1/1 Running 0 4m2s


CDS Boot strap

The below script will load the CDS model artifacts into CDS DB. You should get HTTP status 200 for the below command.

cd PNF_DEMO/Scripts/

bash -x ./bootstrap-cds.sh


Get the default model "artifactName": "vFW-CDS"  loaded by bootstrap

bash -x ./get-cds-blueprint-models.sh


Load PNF CDS blueprint model data dictionary

cd PNF_DEMO/Scripts

bash -x ./dd-microk8s.sh ./dd.json


Check CDS database for PNF data dictionaries

You should see 6 rows as shown below

./connect-cds-mariadb.sh


select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>';

+---------------------+-----------+
| name | data_type |
+---------------------+-----------+
| netconf-password | string |
| netconf-server-port | string |
| netconf-username | string |
| pnf-id | string |
| pnf-ipv4-address | string |
| stream-count | integer |
+---------------------+-----------+

quit

exit


Create PNF CDS Blueprint archive pnf-demo.zip

cd PNF_DEMO/


rm pnf-demo.zip

zip -r pnf-demo.zip *

# You should see the below ZIP file
ls -l pnf-demo.zip


Enrich PNF Bluerprint archive

cd PNF_DEMO/Scripts


bash -x ./enrich-and-download-cds-blueprint.sh ../pnf-demo.zip


Verify Enriched Blue pring archive /tmp/CBA/ENRICHED-CBA.zip

cd /tmp/CBA/

unzip ENRICHED-CBA.zip

tree 


Deploy/Save the Blueprint into CDS database

cd PNF_DEMO/Scripts
bash -x ./save-enriched-blueprint.sh ../pnf-demo.zip

# You should see the new model "artifactName": "pnf_netconf"
bash -x ./get-cds-blueprint-models.sh


Config-Assign

# The assumption is that we are using the same host to run PNF NETCONF simulator as well as CDS
# bash -x ./create-config-assing-data.sh day-1 LOCAL_HOST_IP_ADDRESS 5

  • Create PNF configuration for resolution-key = day-1 (stream-count = 5)

You can verify the CURL command JSON pay load file  /tmp/day-n-pnf-config.json

cd PNF_DEMO/Scripts


bash -x ./create-config-assing-data.sh day-1 10.128.0.86 5


Verify the day-1 NETCONF RPC payload in CDS DB you should see the NETCONF RPC with 5 streams (fw_udp_1 TO fw_udp_5)


./connect-cds-mariadb.sh

MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-1' AND artifact_name='netconfrpc';


<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">

<edit-config>
<target>
<running/>
</target>
<config>
<sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
<pg-streams>
<pg-stream>
<id>fw_udp_1</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_2</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_3</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_4</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_5</id>
<is-enabled>true</is-enabled>
</pg-stream>
</pg-streams>
</sample-plugin>
</config>
</edit-config>
</rpc>



  • Create PNF configuration for resolution-key = day-2 (stream-count = 10)

You can verify the CURL command JSON pay load file  /tmp/day-n-pnf-config.json

cd PNF_DEMO/Scripts

bash -x ./create-config-assing-data.sh day-2 10.128.0.86 10


Verify the day-2 NETCONF RPC payload in CDS DB you should see the NETCONF RPC with 5 streams (fw_udp_1 TO fw_udp_10)

MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-2' AND artifact_name='netconfrpc';


<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
<edit-config>
<target>
<running/>
</target>
<config>
<sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
<pg-streams>
<pg-stream>
<id>fw_udp_1</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_2</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_3</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_4</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_5</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_6</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_7</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_8</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_9</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_10</id>
<is-enabled>true</is-enabled>
</pg-stream>
</pg-streams>
</sample-plugin>
</config>
</edit-config>
</rpc>


Note:- Till this point CDS did not interact with the PNF simulator or device. We just created the day-1 and day-2 configurations and

stored in CDS database


Config-Deploy


This is to make CDS REST API calls to push the day-1 and day-2 configuration changes PNF simulator


  • config-deploy request will send the Day-0 or Day-1 resolution key as part of the REST call.

            "resolution-key" : "day-1"    (OR)  "resolution-key" : "day-2"

  • config-deploy should retrieve the Day-1 or Day-2 configuration based on the resolution-key and executes the NETCONF command processor Kotlin code
  • TODO: REST API CURL Command for Day-1 configuration deployment

...

  •   resoultion-key = day-1

Open a new terminal and tail CDS Blueprint processor logs and keep it running. We will need it to review the config-deploy actions

cd PNF_DEMO/Scripts


bash -x ./tail-cds-bp-log.sh

Push the NETCONF changes for day-1

# Command syntax
# bash -x ./process-config-deploy.sh RESOLUTION_KEY PNF_IP_ADDRESS
# resolution-key = day-1 you can look at the JSON payload /tmp/pnf-config-deploy.json

cd PNF_DEMO/Scripts

bash -x ./process-config-deploy.sh day-1 10.128.0.86

  

Verify the CDS blueprint processor logs and you should see NETCONF RPC OK response as shown below

2020-09-08 13:16:25,783|||Thread-57||||INFO||||||| 10.128.0.86:830: Received message with messageId: 2
<rpc-reply message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><ok/></rpc-reply>


Go back to PNF netopeer cli console and verify if you can  see 5 streams  fw_udp_1 to fw_udp_5 enabled

>
> get --filter-xpath /sample-plugin:*
DATA
<sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
<pg-streams>
<pg-stream>
<id>1</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_1</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_2</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_3</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_4</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_5</id>
<is-enabled>true</is-enabled>
</pg-stream>
</pg-streams>
</sample-plugin>

>

  • config-deploy  resoultion-key = day-2

Push the NETCONF changes for day-2

# Command syntax
# bash -x ./process-config-deploy.sh RESOLUTION_KEY PNF_IP_ADDRESS
# resolution-key = day-1 you can look at the JSON payload /tmp/pnf-config-deploy.json

cd PNF_DEMO/Scripts

bash -x ./process-config-deploy.sh day-1 10.128.0.86

  

Verify the CDS blueprint processor logs and you should see NETCONF RPC OK response as shown below

2020-09-08 13:19:59,078|||Thread-60||||INFO||||||| 10.128.0.86:830: Received message with messageId: 2
<rpc-reply message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><ok/></rpc-reply>

Go back to PNF netopeer cli console and verify if you can  see 5 streams  fw_udp_1 to fw_udp_10 enabled

> get --filter-xpath /sample-plugin:*
DATA
<sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
<pg-streams>
<pg-stream>
<id>1</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_1</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_2</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_3</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_4</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_5</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_6</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_7</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_8</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_9</id>
<is-enabled>true</is-enabled>
</pg-stream>
<pg-stream>
<id>fw_udp_10</id>
<is-enabled>true</is-enabled>
</pg-stream>
</pg-streams>
</sample-plugin>