summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml21
-rwxr-xr-xinstallation/sdnc/src/main/scripts/startODL.sh30
-rw-r--r--installation/src/main/properties/lcm-dg.properties2
-rw-r--r--platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json675
-rw-r--r--platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json1318
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json1515
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json551
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json507
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json910
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json1586
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json1123
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json531
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json790
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json707
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json1853
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json533
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json1847
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json686
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json1231
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json531
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json1066
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json674
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json556
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json654
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json599
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json159
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json2281
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json533
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json834
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json663
-rw-r--r--platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json1305
-rwxr-xr-xplatform-logic/generic-resource-api/src/main/resources/graph.versions1
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml156
-rw-r--r--[-rwxr-xr-x]platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml111
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml6
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml87
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml80
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml147
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml81
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml316
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml113
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml196
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml142
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml425
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml136
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml413
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml138
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml260
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml114
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml222
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml136
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml175
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml154
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml169
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml47
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml468
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml144
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml208
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml135
-rw-r--r--platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml323
-rw-r--r--platform-logic/lcm/src/main/json/LCM_rollback.json702
-rw-r--r--platform-logic/lcm/src/main/resources/graph.versions1
-rw-r--r--platform-logic/lcm/src/main/xml/LCM_rollback.xml340
-rw-r--r--platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json17
-rw-r--r--platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json8
-rw-r--r--platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json37
-rw-r--r--platform-logic/restapi-templates/src/main/json/sdlan-port-del.json8
-rw-r--r--platform-logic/restapi-templates/src/main/json/sdlan-port.json23
68 files changed, 31532 insertions, 978 deletions
diff --git a/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml b/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml
new file mode 100644
index 00000000..ef56c54f
--- /dev/null
+++ b/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml
@@ -0,0 +1,21 @@
+---
+- hosts: all
+ tasks:
+ - name: create a temporary file for additional data
+ file:
+ path: /tmp/tmp-{{Id}}
+ state: touch
+ become: false
+
+ - name: prepare additional data
+ shell: echo {{additionalData}} > /tmp/tmp-{{Id}}
+ become: false
+
+ - name: execute rollback operation
+ shell: ./swm/rollback.sh {{pnfId}} {{oldSwVersion}} /tmp/tmp-{{Id}}
+
+ - name: remove the temporary file
+ file:
+ path: /tmp/tmp-{{Id}}
+ state: absent
+ become: false
diff --git a/installation/sdnc/src/main/scripts/startODL.sh b/installation/sdnc/src/main/scripts/startODL.sh
index 73e3eaa7..09876252 100755
--- a/installation/sdnc/src/main/scripts/startODL.sh
+++ b/installation/sdnc/src/main/scripts/startODL.sh
@@ -21,6 +21,26 @@
# ============LICENSE_END=========================================================
###
+# Append features to karaf boot feature configuration
+# $1 additional feature to be added
+# $2 repositories to be added (optional)
+function addToFeatureBoot() {
+ CFG=$ODL_HOME/etc/org.apache.karaf.features.cfg
+ ORIG=$CFG.orig
+ if [ -n "$2" ] ; then
+ echo "Add repository: $2"
+ mv $CFG $ORIG
+ cat $ORIG | sed -e "\|featuresRepositories|s|$|,$2|" > $CFG
+ fi
+ echo "Add boot feature: $1"
+ mv $CFG $ORIG
+ cat $ORIG | sed -e "\|featuresBoot *=|s|$|,$1|" > $CFG
+}
+
+function install_sdnrwt_features() {
+ addToFeatureBoot "$SDNRWT_BOOTFEATURES" $SDNRWT_REPOSITORY
+}
+
function enable_odl_cluster(){
if [ -z $SDNC_REPLICAS ]; then
echo "SDNC_REPLICAS is not configured in Env field"
@@ -81,6 +101,14 @@ ENABLE_ODL_CLUSTER=${ENABLE_ODL_CLUSTER:-false}
IS_PRIMARY_CLUSTER=${IS_PRIMARY_CLUSTER:-false}
MY_ODL_CLUSTER=${MY_ODL_CLUSTER:-127.0.0.1}
INSTALLED_DIR=${INSTALLED_FILE:-/opt/opendaylight/current/daexim}
+SDNRWT=${SDNRWT:-false}
+SDNRWT_BOOTFEATURES=${SDNRWT_BOOTFEATURES:-sdnr-wt-feature-aggregator}
+
+
+echo "Settings:"
+echo " ENABLE_ODL_CLUSTER=$ENABLE_ODL_CLUSTER"
+echo " SDNC_REPLICAS=$SDNC_REPLICAS"
+echo " SDNRWT=$SDNRWT"
#
# Wait for database
@@ -115,6 +143,8 @@ then
if $ENABLE_ODL_CLUSTER ; then enable_odl_cluster ; fi
+ if $SDNRWT ; then install_sdnrwt_features ; fi
+
echo "Installed at `date`" > ${INSTALLED_DIR}/.installed
fi
diff --git a/installation/src/main/properties/lcm-dg.properties b/installation/src/main/properties/lcm-dg.properties
index 3c6920e3..53cecfba 100644
--- a/installation/src/main/properties/lcm-dg.properties
+++ b/installation/src/main/properties/lcm-dg.properties
@@ -9,9 +9,11 @@ ansible.version=0.00
lcm.upgrade-pre-check.playbookname=ansible_precheck
lcm.upgrade-post-check.playbookname=ansible_postcheck
lcm.upgrade-software.playbookname=ansible_upgradesw
+lcm.rollback.playbookname=ansible_rollback
lcm.pnf.upgrade-pre-check.playbookname=ansible_precheck_pnf
lcm.pnf.upgrade-post-check.playbookname=ansible_postcheck_pnf
lcm.pnf.upgrade-software.playbookname=ansible_upgradesw_pnf
+lcm.pnf.rollback.playbookname=ansible_rollback_pnf
lcm.quiesce-traffic.playbookname=ansible_quiescetraffic
lcm.resume-traffic.playbookname=ansible_resumetraffic
lcm.distribute-traffic.playbookname=ansible_distributetraffic
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json
new file mode 100644
index 00000000..40b49cff
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json
@@ -0,0 +1,675 @@
+[
+ {
+ "id": "89a5f171.637f3",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 102.85714721679688,
+ "y": 27.142858505249023,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "726d4b48.6b3284"
+ ]
+ ]
+ },
+ {
+ "id": "ba98d97d.0b8a38",
+ "type": "method",
+ "name": "method self-serve-aai-pnf-put",
+ "xml": "<method rpc='self-serve-aai-pnf-put' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 207.92857360839844,
+ "y": 108.31746292114258,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "f00b1d79.cbbfd"
+ ]
+ ]
+ },
+ {
+ "id": "f00b1d79.cbbfd",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 193.75001525878906,
+ "y": 174.80955505371094,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "8e501ff3.989f9",
+ "f0ca58a.1b0cda8",
+ "ced3a890.5dcf98",
+ "fad2d25.74e043"
+ ]
+ ]
+ },
+ {
+ "id": "726d4b48.6b3284",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 375.71429443359375,
+ "y": 26.571425437927246,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "ba98d97d.0b8a38"
+ ]
+ ]
+ },
+ {
+ "id": "8e501ff3.989f9",
+ "type": "switchNode",
+ "name": "switch: ss.capability-action",
+ "xml": "<switch test='`$ss.capability-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 459.6429328918457,
+ "y": 228.74998331069946,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "11cee7f1.2e1cd8",
+ "107d90ac.e448ef"
+ ]
+ ]
+ },
+ {
+ "id": "11cee7f1.2e1cd8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 683.1429290771484,
+ "y": 228.99998331069946,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "c5d83975.009c18"
+ ]
+ ]
+ },
+ {
+ "id": "c5d83975.009c18",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status=\"failure\">\n\t<parameter name=\"ack-final\" value=\"Y\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"ss.capability-action is null\" />\n",
+ "comments": "",
+ "x": 843.0596008300781,
+ "y": 229.11108207702637,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "107d90ac.e448ef",
+ "type": "outcome",
+ "name": "assign",
+ "xml": "<outcome value='assign'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 682.8929252624512,
+ "y": 277.99998664855957,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "122bdfd4.0eeb4"
+ ]
+ ]
+ },
+ {
+ "id": "575e2623.493218",
+ "type": "for",
+ "name": "for aidx in param_length (PNF)",
+ "xml": "<for silentFailure='true' index=\"aidx\" start=\"0\" end=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`\">",
+ "comments": "",
+ "outputs": 1,
+ "x": 1122.884937286377,
+ "y": 277.9603753089905,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "95379e3b.20688"
+ ]
+ ]
+ },
+ {
+ "id": "f0ca58a.1b0cda8",
+ "type": "execute",
+ "name": "printContext",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-aai-pnf-put.log' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 404.702392578125,
+ "y": 593.0952491760254,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "95379e3b.20688",
+ "type": "switchNode",
+ "name": "switch: param[].name",
+ "xml": "<switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].name`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1445.4286041259766,
+ "y": 278.21428871154785,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "bf35662a.fd7a28",
+ "a34f4b03.d69878",
+ "2c5c4f3f.a39d2",
+ "cba4e46a.a153b8",
+ "8d9b71bd.4a778",
+ "3935817d.ee66ee"
+ ]
+ ]
+ },
+ {
+ "id": "bf35662a.fd7a28",
+ "type": "outcome",
+ "name": "pnf-name",
+ "xml": "<outcome value='pnf-name'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1676.3215980529785,
+ "y": 277.9999809265137,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "57231303.ea37dc"
+ ]
+ ]
+ },
+ {
+ "id": "a34f4b03.d69878",
+ "type": "outcome",
+ "name": "pnf-id",
+ "xml": "<outcome value='pnf-id'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1667.6788024902344,
+ "y": 386.9642949104309,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "f63b6a7a.ac9fd8"
+ ]
+ ]
+ },
+ {
+ "id": "57231303.ea37dc",
+ "type": "set",
+ "name": "set pnf-name, index",
+ "xml": "<set>\n<parameter name='ss.param.pnf-name' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.pnf-name-index' value='`$aidx`' />",
+ "comments": "",
+ "x": 1879.321605682373,
+ "y": 278.4999966621399,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "f63b6a7a.ac9fd8",
+ "type": "set",
+ "name": "set pnf-id, index",
+ "xml": "<set>\n<parameter name='ss.param.pnf-id' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.pnf-id-index' value='`$aidx`' />",
+ "comments": "",
+ "x": 1843.1788139343262,
+ "y": 386.7142958641052,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "7b5b542e.56480c",
+ "type": "save",
+ "name": "update pnf",
+ "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"pnf\"\n\t\tkey=\"pnf.pnf-name = $ss.param.pnf-name \" >\n<parameter name=\"pnf-name2\" value=\"`$ss.param.pnf-name2`\" />\n<parameter name=\"prov-status\" value=\"PREPROV\" />\n<parameter name=\"selflink\" value=\"`$ss.selflink`\" />\n<parameter name=\"ipaddress-v4-oam\" value=\"`$ss.param.ipv4-oam-address`\" />\n<parameter name=\"ipaddress-v6-oam\" value=\"`$ss.param.ipv6-oam-address`\" />\n<parameter name=\"model-customization-id\"\n value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-customization-uuid`\" />\n<parameter name=\"model-invariant-id\"\n value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-invariant-uuid`\" />\n<parameter name=\"model-version-id\"\n value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-uuid`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1060.7498931884766,
+ "y": 897.3929443359375,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "f112cd3.4ede93",
+ "84b6dbe8.3fe148"
+ ]
+ ]
+ },
+ {
+ "id": "f112cd3.4ede93",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1260.9999237060547,
+ "y": 897.7499914169312,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "28f613dd.534a9c"
+ ]
+ ]
+ },
+ {
+ "id": "84b6dbe8.3fe148",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1267.2499351501465,
+ "y": 949.5000257492065,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "26471432.bb892c"
+ ]
+ ]
+ },
+ {
+ "id": "dff94b2c.d48618",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to update pnf.pnf-name in AnAI with pnf-name=' + $ss.param.pnf-name`\" />\n",
+ "comments": "",
+ "x": 1654.5830841064453,
+ "y": 897.5357427597046,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "43d277af.fa5098",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'pnf with pnf-name =' + $ss.param.pnf-name + ' is not found in AAI'`\" />\n",
+ "comments": "",
+ "x": 1653.7260665893555,
+ "y": 948.7738838195801,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "9bdf4d2.171ffb",
+ "type": "save",
+ "name": "get pnf",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"pnf\"\n\t\tkey=\"pnf.pnf-name = $ss.param.pnf-name \"\n\tpfx=\"tmp.aai.pnf\" >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1042.03564453125,
+ "y": 638.0000247955322,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "1bebe350.ee380d",
+ "ab2a6854.6c93e8"
+ ]
+ ]
+ },
+ {
+ "id": "1bebe350.ee380d",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1250.5712776184082,
+ "y": 637.499945640564,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "4ad9bcb5.06d024"
+ ]
+ ]
+ },
+ {
+ "id": "ab2a6854.6c93e8",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1258.8211975097656,
+ "y": 736.3928537368774,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "363ef080.c1121"
+ ]
+ ]
+ },
+ {
+ "id": "dd0d7e04.e3135",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error to get pnf with pnf-name=' + $ss.param.pnf-name + ' from AnAI'`\" />\n",
+ "comments": "",
+ "x": 1676.4400024414062,
+ "y": 685.8571395874023,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "aaf8ef15.0a2c9",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'pnf with pnf-name=' + $ss.param.pnf-name + ' not found in AAI'`\" />\n",
+ "comments": "",
+ "x": 1678.1544570922852,
+ "y": 736.0953845977783,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "122bdfd4.0eeb4",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 840.6429214477539,
+ "y": 278.2499828338623,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "575e2623.493218",
+ "9bdf4d2.171ffb",
+ "7b5b542e.56480c",
+ "1331d99f.8d7da6",
+ "45a19896.9c1308"
+ ]
+ ]
+ },
+ {
+ "id": "4ad9bcb5.06d024",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1422.142864227295,
+ "y": 637.5357389450073,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "9a1993dc.ff74",
+ "dd0d7e04.e3135"
+ ]
+ ]
+ },
+ {
+ "id": "28f613dd.534a9c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1434.4284896850586,
+ "y": 897.8215160369873,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "9a1993dc.ff74",
+ "dff94b2c.d48618"
+ ]
+ ]
+ },
+ {
+ "id": "26471432.bb892c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1437.2857055664062,
+ "y": 948.6786575317383,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "9a1993dc.ff74",
+ "43d277af.fa5098"
+ ]
+ ]
+ },
+ {
+ "id": "363ef080.c1121",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1424.999942779541,
+ "y": 736.5357389450073,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "9a1993dc.ff74",
+ "aaf8ef15.0a2c9"
+ ]
+ ]
+ },
+ {
+ "id": "9a1993dc.ff74",
+ "type": "set",
+ "name": "set resource-resolution-data.status = FAILED",
+ "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n",
+ "comments": "",
+ "x": 1785.9999465942383,
+ "y": 637.392951965332,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "6b74947.f0ea76c",
+ "type": "comment",
+ "name": "PNF params",
+ "info": "",
+ "comments": "",
+ "x": 1096.9286308288574,
+ "y": 228.33332681655884,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "1331d99f.8d7da6",
+ "type": "set",
+ "name": "set resource-resolution-data.status = SUCCESS",
+ "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n",
+ "comments": "",
+ "x": 1187.9882431030273,
+ "y": 1092.6783409118652,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "2c5c4f3f.a39d2",
+ "type": "outcome",
+ "name": "aai-pnf-put",
+ "xml": "<outcome value='aai-pnf-put'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1679.8215141296387,
+ "y": 446.2499794960022,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "b874d734.628b78"
+ ]
+ ]
+ },
+ {
+ "id": "b874d734.628b78",
+ "type": "set",
+ "name": "set ss.param.aai-pnf-put-index",
+ "xml": "<set>\n<parameter name='ss.param.aai-pnf-put-index' value='`$aidx`' />",
+ "comments": "",
+ "x": 1913.3215255737305,
+ "y": 445.9999804496765,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "ced3a890.5dcf98",
+ "type": "switchNode",
+ "name": "switch: ss.capability-name",
+ "xml": "<switch test='`$ss.capability-name`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 458.0357475280762,
+ "y": 174.46428155899048,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "4ddefe6.88848"
+ ]
+ ]
+ },
+ {
+ "id": "4ddefe6.88848",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "outputs": 1,
+ "x": 683.0357704162598,
+ "y": 174.964280128479,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "a5814d23.17c89"
+ ]
+ ]
+ },
+ {
+ "id": "a5814d23.17c89",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status=\"failure\">\n\t<parameter name=\"ack-final\" value=\"Y\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"ss.capability-name is null\" />\n",
+ "comments": "",
+ "x": 842.9524421691895,
+ "y": 175.0753788948059,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "fad2d25.74e043",
+ "type": "set",
+ "name": "set param[$ss.param.aai-pnf-put-index].value = SUCCESS",
+ "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].value' \n\tvalue='SUCCESS' />\n",
+ "comments": "",
+ "x": 567.0357360839844,
+ "y": 418.74999713897705,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "45a19896.9c1308",
+ "type": "set",
+ "name": "set ss.selflink",
+ "xml": "<set>\n<parameter name=\"ss.selflink\" \n\tvalue=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + \n\t$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id + \n\t'/service-data/pnfs/pnf/' + \n\t$ss.param.pnf-id + \n\t'/pnf-data/pnf-topology/'`\" />\n",
+ "comments": "",
+ "x": 1065.9999618530273,
+ "y": 808.5714473724365,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "cba4e46a.a153b8",
+ "type": "outcome",
+ "name": "pnf-name2",
+ "xml": "<outcome value='pnf-name2'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1682.5715141296387,
+ "y": 331.42857694625854,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "3b829d40.830272"
+ ]
+ ]
+ },
+ {
+ "id": "3b829d40.830272",
+ "type": "set",
+ "name": "set pnf-name, index",
+ "xml": "<set>\n<parameter name='ss.param.pnf-name2' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.pnf-name2-index' value='`$aidx`' />",
+ "comments": "",
+ "x": 1885.857265472412,
+ "y": 330.9286093711853,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "8d9b71bd.4a778",
+ "type": "outcome",
+ "name": "ipv4-oam-address",
+ "xml": "<outcome value='ipv4-oam-address'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1703.7143363952637,
+ "y": 501.42857694625854,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "82ab755c.be9198"
+ ]
+ ]
+ },
+ {
+ "id": "82ab755c.be9198",
+ "type": "set",
+ "name": "set ss.param.ipv4-oam-address, index",
+ "xml": "<set>\n<parameter name='ss.param.ipv4-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.ipv4-oam-address-index' value='`$aidx`' />",
+ "comments": "",
+ "x": 2009.107265472412,
+ "y": 501.17865324020386,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ },
+ {
+ "id": "3935817d.ee66ee",
+ "type": "outcome",
+ "name": "ipv6-oam-address",
+ "xml": "<outcome value='ipv6-oam-address'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1703.7143363952637,
+ "y": 552.857165813446,
+ "z": "de6615d.b5910e8",
+ "wires": [
+ [
+ "2b822ef4.66ac12"
+ ]
+ ]
+ },
+ {
+ "id": "2b822ef4.66ac12",
+ "type": "set",
+ "name": "set ss.param.ipv6-oam-address, index",
+ "xml": "<set>\n<parameter name='ss.param.ipv6-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.ipv6-oam-address-index' value='`$aidx`' />",
+ "comments": "",
+ "x": 2009.107265472412,
+ "y": 552.6072421073914,
+ "z": "de6615d.b5910e8",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json
index 1a370640..b1920a25 100644
--- a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json
+++ b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json
@@ -1 +1,1317 @@
-[{"id":"aac134ec.6cf1b8","type":"dgstart","name":"DGSTART","outputs":1,"x":130,"y":85,"z":"e4792a03.590918","wires":[["937a93d5.41f8b"]]},{"id":"937a93d5.41f8b","type":"service-logic","name":"GENERIC-RESOURCE-API ${project.version}","module":"GENERIC-RESOURCE-API","version":"${project.version}","comments":"","xml":"<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>","outputs":1,"x":243.28570556640625,"y":125.23811149597168,"z":"e4792a03.590918","wires":[["1ff0b858.8b6048"]]},{"id":"1ff0b858.8b6048","type":"method","name":"method vf-module-topology-operation","xml":"<method rpc='vf-module-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":217.42862701416016,"y":164.9999942779541,"z":"e4792a03.590918","wires":[["e6e0449c.e0ce68"]]},{"id":"b858ba31.1d36a8","type":"comment","name":"vf-module-topology-operation","info":"","comments":"","x":524.344856262207,"y":32.58634376525879,"z":"e4792a03.590918","wires":[]},{"id":"e6e0449c.e0ce68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":199.50003814697266,"y":404.3601722717285,"z":"e4792a03.590918","wires":[["6a5a06d.b6909f8","5dfb397c.6005b8","b60fc0ca.3f1f1"]]},{"id":"6a5a06d.b6909f8","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n","comments":"","x":485.0000305175781,"y":577.8575611114502,"z":"e4792a03.590918","wires":[]},{"id":"5dfb397c.6005b8","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":495.9046401977539,"y":402.57139682769775,"z":"e4792a03.590918","wires":[["3f3819ab.205506","c0da133d.5bf54","dc742571.a62c58","b0109a9a.d288c8","2db6534f.dfd25c","69657262.5b917c"]]},{"id":"3f3819ab.205506","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":705.3809204101562,"y":292.85723400115967,"z":"e4792a03.590918","wires":[["bbd51bfa.9a57d8"]]},{"id":"c0da133d.5bf54","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":713.761905670166,"y":439.0479259490967,"z":"e4792a03.590918","wires":[["a83fc83c.53eca8"]]},{"id":"b0109a9a.d288c8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":705.4761619567871,"y":535.2380466461182,"z":"e4792a03.590918","wires":[["fc77d9ee.2a5968"]]},{"id":"fc77d9ee.2a5968","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n","comments":"","x":899.6665878295898,"y":535.238115310669,"z":"e4792a03.590918","wires":[]},{"id":"b60fc0ca.3f1f1","type":"call","name":"call GENERIC-RESOURCE-API:validate-vf-module-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-vf-module-input' mode='sync' >\n","comments":"","outputs":1,"x":615.0832824707031,"y":242.3810567855835,"z":"e4792a03.590918","wires":[[]]},{"id":"bbd51bfa.9a57d8","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-operation-assign","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign' mode='sync' >\n","comments":"","outputs":1,"x":1077.523754119873,"y":292.4286985397339,"z":"e4792a03.590918","wires":[[]]},{"id":"80ccbb30.d5a208","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-operation-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1089.5237121582031,"y":389.0953416824341,"z":"e4792a03.590918","wires":[[]]},{"id":"a83fc83c.53eca8","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-operation-unassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' >\n","comments":"","outputs":1,"x":1083.8569831848145,"y":438.7620611190796,"z":"e4792a03.590918","wires":[[]]},{"id":"dc742571.a62c58","type":"outcome","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":717.8569984436035,"y":389.7620153427124,"z":"e4792a03.590918","wires":[["80ccbb30.d5a208"]]},{"id":"cfe9d851.6e01b8","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-operation-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' >\n","comments":"","outputs":1,"x":1081.99995803833,"y":339.9999876022339,"z":"e4792a03.590918","wires":[[]]},{"id":"2db6534f.dfd25c","type":"outcome","name":"activate","xml":"<outcome value='activate'>\n","comments":"","outputs":1,"x":709.999942779541,"y":340.6666650772095,"z":"e4792a03.590918","wires":[["cfe9d851.6e01b8"]]},{"id":"69657262.5b917c","type":"outcome","name":"changeassign","xml":"<outcome value='changeassign'>\n","comments":"","outputs":1,"x":728.3333206176758,"y":486.6666555404663,"z":"e4792a03.590918","wires":[["2b822e27.0073f2"]]},{"id":"2b822e27.0073f2","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-operation-changeassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' >\n","comments":"","outputs":1,"x":1097.4283905029297,"y":486.38079166412354,"z":"e4792a03.590918","wires":[[]]}] \ No newline at end of file
+[
+ {
+ "id": "89e51e9a.af64e",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 107.00390625,
+ "y": 88.41365686058998,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "a0ef042f.2b7ad8"
+ ]
+ ]
+ },
+ {
+ "id": "a0ef042f.2b7ad8",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 220.28961181640625,
+ "y": 128.65176835656166,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "a57a3919.3af3c8"
+ ]
+ ]
+ },
+ {
+ "id": "a57a3919.3af3c8",
+ "type": "method",
+ "name": "method vf-module-topology-operation",
+ "xml": "<method rpc='vf-module-topology-operation' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 194.43253326416016,
+ "y": 168.41365113854408,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "8614ae38.109ab"
+ ]
+ ]
+ },
+ {
+ "id": "38a58e7b.28bdc2",
+ "type": "comment",
+ "name": "vf-module-topology-operation",
+ "info": "",
+ "comments": "",
+ "x": 501.34876251220703,
+ "y": 36.00000062584877,
+ "z": "3e6c75a5.b69bda",
+ "wires": []
+ },
+ {
+ "id": "8614ae38.109ab",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 176.50394439697266,
+ "y": 407.7738291323185,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "53a601da.db57d",
+ "f371244d.9451a8",
+ "c9966ea2.57b1d"
+ ]
+ ]
+ },
+ {
+ "id": "53a601da.db57d",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 462.0039367675781,
+ "y": 581.2712179720402,
+ "z": "3e6c75a5.b69bda",
+ "wires": []
+ },
+ {
+ "id": "f371244d.9451a8",
+ "type": "switchNode",
+ "name": "switch svc-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 472.9085464477539,
+ "y": 405.98505368828773,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "dc31bef9.f164b",
+ "1b121869.8a1878",
+ "320a19eb.21afb6",
+ "db7b02d4.3e117",
+ "b369a934.e11c08",
+ "8734e4a2.e72ad8",
+ "bcf05aca.9cd8e8",
+ "c7064bfe.3bb108",
+ "5dfbbd6.4b80544"
+ ]
+ ]
+ },
+ {
+ "id": "dc31bef9.f164b",
+ "type": "outcome",
+ "name": "assign",
+ "xml": "<outcome value='assign'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 682.3848266601562,
+ "y": 296.27089086174965,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "d462656f.1ce878"
+ ]
+ ]
+ },
+ {
+ "id": "1b121869.8a1878",
+ "type": "outcome",
+ "name": "unassign",
+ "xml": "<outcome value='unassign'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 690.765811920166,
+ "y": 442.46158280968666,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "52d55f39.2254f"
+ ]
+ ]
+ },
+ {
+ "id": "320a19eb.21afb6",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 678.4806060791016,
+ "y": 1848.9855699539185,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "aa8c9f07.7e876"
+ ]
+ ]
+ },
+ {
+ "id": "aa8c9f07.7e876",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+ "comments": "",
+ "x": 872.6710319519043,
+ "y": 1848.9856386184692,
+ "z": "3e6c75a5.b69bda",
+ "wires": []
+ },
+ {
+ "id": "c9966ea2.57b1d",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:validate-vf-module-input",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-vf-module-input' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 592.0871887207031,
+ "y": 245.79471364617348,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d462656f.1ce878",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-assign",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1054.527660369873,
+ "y": 295.84235540032387,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "1a8dc80f.d90c48",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-deactivate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1066.5276184082031,
+ "y": 392.50899854302406,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "52d55f39.2254f",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-unassign",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1060.8608894348145,
+ "y": 442.17571797966957,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e3a2c358.113df",
+ "type": "outcome",
+ "name": "deactivate",
+ "xml": "<outcome value='deactivate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 694.8609046936035,
+ "y": 393.1756722033024,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "1a8dc80f.d90c48"
+ ]
+ ]
+ },
+ {
+ "id": "db7b02d4.3e117",
+ "type": "outcome",
+ "name": "changeassign",
+ "xml": "<outcome value='changeassign'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 705.3372268676758,
+ "y": 490.0803124010563,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "f258fd95.0fe79"
+ ]
+ ]
+ },
+ {
+ "id": "f258fd95.0fe79",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-changeassign",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1074.4322967529297,
+ "y": 489.7944485247135,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b369a934.e11c08",
+ "type": "outcome",
+ "name": "create",
+ "xml": "<outcome value='create'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 700.0041465759277,
+ "y": 691.4137353897095,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "ba7564f.359ed98"
+ ]
+ ]
+ },
+ {
+ "id": "2c4e26db.d2576a",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 940.3377494812012,
+ "y": 743.0000324249268,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "3d832a02.563396",
+ "1104c91d.350e07",
+ "f844d17c.4dd8f",
+ "48cd140e.14f35c",
+ "b370d981.a636e8",
+ "6fc07521.c03a0c"
+ ]
+ ]
+ },
+ {
+ "id": "1104c91d.350e07",
+ "type": "outcome",
+ "name": "CreateSiteInstance",
+ "xml": "<outcome value='CreateSiteInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1198.8141288757324,
+ "y": 689.4793787002563,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "20db622e.dd2f7e"
+ ]
+ ]
+ },
+ {
+ "id": "3d832a02.563396",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1140.7185325622559,
+ "y": 826.8572956621647,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "66bc9e9c.1ac1f"
+ ]
+ ]
+ },
+ {
+ "id": "ba7564f.359ed98",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 890.3373947143555,
+ "y": 688.0001001358032,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "2c4e26db.d2576a"
+ ]
+ ]
+ },
+ {
+ "id": "20db622e.dd2f7e",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-create",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-create' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1655.3379516601562,
+ "y": 687.0001611709595,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "66bc9e9c.1ac1f",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1294.0041847229004,
+ "y": 826.9136921465397,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f844d17c.4dd8f",
+ "type": "outcome",
+ "name": "CreateSDWANPortInstance",
+ "xml": "<outcome value='CreateSDWANPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1204.6709251403809,
+ "y": 785.247186332941,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "b6270252.07dee"
+ ]
+ ]
+ },
+ {
+ "id": "b6270252.07dee",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-create",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-create' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1677.194622039795,
+ "y": 784.767938286066,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "48cd140e.14f35c",
+ "type": "outcome",
+ "name": "CreateSDWANDeviceInstance",
+ "xml": "<outcome value='CreateSDWANDeviceInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1214.0352592468262,
+ "y": 742.4451303482056,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "3b11278c.bb8c38"
+ ]
+ ]
+ },
+ {
+ "id": "3b11278c.bb8c38",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-create",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-create' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1669.5590476989746,
+ "y": 741.9659996032715,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b370d981.a636e8",
+ "type": "outcome",
+ "name": "CreateSDWANVpnInstance",
+ "xml": "<outcome value='CreateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1233.0039367675781,
+ "y": 594.4136924743652,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "657379da.c01418"
+ ]
+ ]
+ },
+ {
+ "id": "657379da.c01418",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-create",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-create' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1641.5277099609375,
+ "y": 591.9344596862793,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "8734e4a2.e72ad8",
+ "type": "outcome",
+ "name": "activate",
+ "xml": "<outcome value='activate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 691.0042190551758,
+ "y": 978.746994972229,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "f1db3d76.89225"
+ ]
+ ]
+ },
+ {
+ "id": "cdd2825f.5d09c",
+ "type": "outcome",
+ "name": "ActivateSiteInstance",
+ "xml": "<outcome value='ActivateSiteInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1182.1472473144531,
+ "y": 978.6459150314331,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "2a41522d.67a51e"
+ ]
+ ]
+ },
+ {
+ "id": "f1db3d76.89225",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 871.6709899902344,
+ "y": 974.1666717529297,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "7f5f8826.961548"
+ ]
+ ]
+ },
+ {
+ "id": "2a41522d.67a51e",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1555.6710510253906,
+ "y": 977.1666975021362,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e3a84270.80d99",
+ "type": "outcome",
+ "name": "ActivateSDWANDeviceInstance",
+ "xml": "<outcome value='ActivateSDWANDeviceInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1210.3377075195312,
+ "y": 1027.6667370796204,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "5a26eb28.451874"
+ ]
+ ]
+ },
+ {
+ "id": "5a26eb28.451874",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1645.8614044189453,
+ "y": 1027.1875095367432,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a4f9d63b.494d98",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1650.3375396728516,
+ "y": 1072.6666593551636,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c8acd26d.1e739",
+ "type": "outcome",
+ "name": "ActivateSDWANPortInstance",
+ "xml": "<outcome value='ActivateSDWANPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1214.8138427734375,
+ "y": 1073.1458868980408,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "a4f9d63b.494d98"
+ ]
+ ]
+ },
+ {
+ "id": "7f5f8826.961548",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 922.0042114257812,
+ "y": 1024.746958732605,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "cdd2825f.5d09c",
+ "e3a84270.80d99",
+ "c8acd26d.1e739",
+ "58bf71df.40217",
+ "e2c3c98a.638358",
+ "7eb3a13c.fe01"
+ ]
+ ]
+ },
+ {
+ "id": "58bf71df.40217",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1146.5757064819336,
+ "y": 1121.958472251892,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "9491c86f.faa978"
+ ]
+ ]
+ },
+ {
+ "id": "e2c3c98a.638358",
+ "type": "outcome",
+ "name": "ActivateSDWANVpnInstance",
+ "xml": "<outcome value='ActivateSDWANVpnInstance'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1225.0041465759277,
+ "y": 888.7469822466373,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "3b1f1b03.8cdd84"
+ ]
+ ]
+ },
+ {
+ "id": "3b1f1b03.8cdd84",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1640.5279502868652,
+ "y": 882.2677589952946,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "bcf05aca.9cd8e8",
+ "type": "outcome",
+ "name": "deactivate",
+ "xml": "<outcome value='deactivate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 685.0042686462402,
+ "y": 1232.7470879554749,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "eace7410.b0c1f8"
+ ]
+ ]
+ },
+ {
+ "id": "5e7397b3.dab7a8",
+ "type": "outcome",
+ "name": "DeactivateSiteInstance",
+ "xml": "<outcome value='DeactivateSiteInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1178.1472778320312,
+ "y": 1281.646014213562,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "21bb9b2a.ea8a34"
+ ]
+ ]
+ },
+ {
+ "id": "eace7410.b0c1f8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 857.6710453033447,
+ "y": 1233.1667957305908,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "c3ccf383.cfe88"
+ ]
+ ]
+ },
+ {
+ "id": "21bb9b2a.ea8a34",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1551.6710815429688,
+ "y": 1280.1667966842651,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5379b130.c4fdc",
+ "type": "outcome",
+ "name": "DeactivateSDWANDeviceInstance",
+ "xml": "<outcome value='DeactivateSDWANDeviceInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1206.3377380371094,
+ "y": 1330.6668362617493,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "84ada7ed.5abb58"
+ ]
+ ]
+ },
+ {
+ "id": "84ada7ed.5abb58",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-deactivate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1641.8614349365234,
+ "y": 1330.187608718872,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "45330326.89c95c",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-deactivate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1646.3375701904297,
+ "y": 1375.6667585372925,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "47362b0e.0aa804",
+ "type": "outcome",
+ "name": "DeactivateSDWANPortInstance",
+ "xml": "<outcome value='DeactivateSDWANPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1210.8138732910156,
+ "y": 1376.1459860801697,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "45330326.89c95c"
+ ]
+ ]
+ },
+ {
+ "id": "c3ccf383.cfe88",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 917.0043296813965,
+ "y": 1301.7472405433655,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "5e7397b3.dab7a8",
+ "5379b130.c4fdc",
+ "47362b0e.0aa804",
+ "63e6c1ce.d4cf5",
+ "4a02ebd5.071034",
+ "fb94038a.0100e"
+ ]
+ ]
+ },
+ {
+ "id": "63e6c1ce.d4cf5",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1146.5756072998047,
+ "y": 1425.9585485458374,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "58fb4bd3.507344"
+ ]
+ ]
+ },
+ {
+ "id": "4a02ebd5.071034",
+ "type": "outcome",
+ "name": "DeactivateSDWANVpnInstance",
+ "xml": "<outcome value='DeactivateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1214.0042190551758,
+ "y": 1182.7470560073853,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "fbad4fa4.97356"
+ ]
+ ]
+ },
+ {
+ "id": "fbad4fa4.97356",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1629.5280227661133,
+ "y": 1176.2678327560425,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "58fb4bd3.507344",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-deactivate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1485.0042877197266,
+ "y": 1426.4137592315674,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9491c86f.faa978",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1477.0042190551758,
+ "y": 1119.4136819839478,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "45dbdd14.1c9594",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1059.00386428833,
+ "y": 343.41364446282387,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7ddcd159.af7c5",
+ "type": "outcome",
+ "name": "activate",
+ "xml": "<outcome value='activate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 687.003849029541,
+ "y": 344.08032193779945,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "45dbdd14.1c9594"
+ ]
+ ]
+ },
+ {
+ "id": "c7064bfe.3bb108",
+ "type": "outcome",
+ "name": "delete",
+ "xml": "<outcome value='delete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 669.0042915344238,
+ "y": 1569.0804500579834,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "86fe3063.f5314"
+ ]
+ ]
+ },
+ {
+ "id": "8129346a.9a7028",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 900.3378295898438,
+ "y": 1599.666877746582,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "abdb2c6d.26329",
+ "1c9b503f.e869e",
+ "ebc11a5b.92e8f8",
+ "ed7bc3fc.a812b",
+ "f8972855.1982c8",
+ "5677852c.5c596c"
+ ]
+ ]
+ },
+ {
+ "id": "1c9b503f.e869e",
+ "type": "outcome",
+ "name": "DeleteSiteInstance",
+ "xml": "<outcome value='DeleteSiteInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1149.8142318725586,
+ "y": 1589.1461973190308,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "491e32c9.2d52ac"
+ ]
+ ]
+ },
+ {
+ "id": "abdb2c6d.26329",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1099.7186889648438,
+ "y": 1736.524130821228,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "8f601e81.71977"
+ ]
+ ]
+ },
+ {
+ "id": "86fe3063.f5314",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 849.3378295898438,
+ "y": 1532.6668758392334,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "8129346a.9a7028"
+ ]
+ ]
+ },
+ {
+ "id": "491e32c9.2d52ac",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-delete",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-delete' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1603.338005065918,
+ "y": 1584.6669492721558,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "8f601e81.71977",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1253.0043411254883,
+ "y": 1736.580527305603,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "ebc11a5b.92e8f8",
+ "type": "outcome",
+ "name": "DeleteSDWANPortInstance",
+ "xml": "<outcome value='DeleteSDWANPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1163.6710815429688,
+ "y": 1694.9140214920044,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "f8f01738.a952f8"
+ ]
+ ]
+ },
+ {
+ "id": "f8f01738.a952f8",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-delete",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-delete' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1636.1947784423828,
+ "y": 1694.4347734451294,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "ed7bc3fc.a812b",
+ "type": "outcome",
+ "name": "DeleteSDWANDeviceInstance",
+ "xml": "<outcome value='DeleteSDWANDeviceInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1173.0354232788086,
+ "y": 1641.1119375228882,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "3f658e56.9d3b42"
+ ]
+ ]
+ },
+ {
+ "id": "3f658e56.9d3b42",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-delete",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-delete' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1637.5591888427734,
+ "y": 1640.63277053833,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f8972855.1982c8",
+ "type": "outcome",
+ "name": "DeleteSDWANVpnInstance",
+ "xml": "<outcome value='DeleteSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1186.004264831543,
+ "y": 1487.0804476737976,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "19b04dbd.6b60a2"
+ ]
+ ]
+ },
+ {
+ "id": "19b04dbd.6b60a2",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-delete",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-delete' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1595.5280227661133,
+ "y": 1488.6011400222778,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "6fc07521.c03a0c",
+ "type": "outcome",
+ "name": "CreateSDWANLanPortInstance",
+ "xml": "<outcome value='CreateSDWANLanPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1241.0312728881836,
+ "y": 642.5312581062317,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "8f4dfe29.61b9d"
+ ]
+ ]
+ },
+ {
+ "id": "8f4dfe29.61b9d",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-create",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-create' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1651.5550537109375,
+ "y": 641.0520095825195,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7eb3a13c.fe01",
+ "type": "outcome",
+ "name": "ActivateSDWANLanPortInstance",
+ "xml": "<outcome value='ActivateSDWANLanPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1229.03125,
+ "y": 932.03125,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "41d9f761.0dc728"
+ ]
+ ]
+ },
+ {
+ "id": "41d9f761.0dc728",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-activate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-activate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1639.555030822754,
+ "y": 930.5520014762878,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "fb94038a.0100e",
+ "type": "outcome",
+ "name": "DeactivateSDWANLanPortInstance",
+ "xml": "<outcome value='DeactivateSDWANLanPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1213.03125,
+ "y": 1236.53125,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "383a8f05.b6135"
+ ]
+ ]
+ },
+ {
+ "id": "383a8f05.b6135",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-deactivate",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-deactivate' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1623.555030822754,
+ "y": 1235.0520014762878,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5677852c.5c596c",
+ "type": "outcome",
+ "name": "DeleteSDWANLanPortInstance",
+ "xml": "<outcome value='DeleteSDWANLanPortInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1201.03125,
+ "y": 1544.53125,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "7c7dc424.e574ac"
+ ]
+ ]
+ },
+ {
+ "id": "7c7dc424.e574ac",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-delete",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-delete' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1607.5550842285156,
+ "y": 1546.0520501732826,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5dfbbd6.4b80544",
+ "type": "outcome",
+ "name": "update",
+ "xml": "<outcome value='update'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 683.000057220459,
+ "y": 1791.333441734314,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "321a7638.3b493a"
+ ]
+ ]
+ },
+ {
+ "id": "321a7638.3b493a",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 857.3335571289062,
+ "y": 1790.9197030067444,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "31f55a0d.2f22a6"
+ ]
+ ]
+ },
+ {
+ "id": "31f55a0d.2f22a6",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1056.3335647583008,
+ "y": 1790.919867515564,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "b3fecb60.6fce78"
+ ]
+ ]
+ },
+ {
+ "id": "b3fecb60.6fce78",
+ "type": "outcome",
+ "name": "SdwanBandwidthChange",
+ "xml": "<outcome value='SdwanBandwidthChange'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1300.0000381469727,
+ "y": 1789.000054359436,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ [
+ "ec71b2dd.08538"
+ ]
+ ]
+ },
+ {
+ "id": "ec71b2dd.08538",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:sdwan-bandwidth-policy-change",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-bandwidth-policy-change' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1673.5238418579102,
+ "y": 1789.520941734314,
+ "z": "3e6c75a5.b69bda",
+ "wires": [
+ []
+ ]
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
index d0888583..8a5d8f9e 100644
--- a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
@@ -1,212 +1,1305 @@
[
- {
- "id": "b8581db5.dbca7",
- "type": "get-resource",
- "name": "get-resource service-subscription",
- "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-subscription\" \n key= 'service-subscription.service-type = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.subscription-service-type \n AND customer.global-customer-id = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.global-customer-id'\n force=\"true\" pfx=\"tmp.AnAI-data-tenant\">\n \n",
- "comments": "",
- "outputs": 1,
- "x": 597,
- "y": 418.09522092342377,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "1a771e75.f79d12",
- "ac62029.181ce"
- ]
- ]
- },
- {
- "id": "5d45ba87.92c374",
- "type": "switchNode",
- "name": "switch temp-ub-sub-account-id",
- "xml": "<switch test='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1009.0000915527344,
- "y": 382.84530198574066,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "5358b5db.d1e49c",
- "28c300d9.7fa36"
- ]
- ]
- },
- {
- "id": "5358b5db.d1e49c",
- "type": "outcome",
- "name": "NULL",
- "xml": "<outcome value=''>",
- "comments": "",
- "outputs": 1,
- "x": 1201.714542388916,
- "y": 356.84534299373627,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "831b80bb.e08e8"
- ]
- ]
- },
- {
- "id": "28c300d9.7fa36",
- "type": "other",
- "name": "Other",
- "xml": "<outcome value='Other'>",
- "comments": "",
- "outputs": 1,
- "x": 1202.0001068115234,
- "y": 411.8453058004379,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "e1a74ece.52f65"
- ]
- ]
- },
- {
- "id": "1a771e75.f79d12",
- "type": "success",
- "name": "success",
- "xml": "<outcome value='success'>\n",
- "comments": "",
- "outputs": 1,
- "x": 807.4998626708984,
- "y": 390.84127938747406,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "5d45ba87.92c374"
- ]
- ]
- },
- {
- "id": "ac62029.181ce",
- "type": "failure",
- "name": "failure",
- "xml": "<outcome value='failure'>\n",
- "comments": "",
- "outputs": 1,
- "x": 801.1784515380859,
- "y": 443.0555909872055,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "f81e2009.7dbd5"
- ]
- ]
- },
- {
- "id": "f81e2009.7dbd5",
- "type": "returnFailure",
- "name": "return failure",
- "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
- "comments": "",
- "x": 953.9284515380859,
- "y": 442.80565202236176,
- "z": "a703782b.2992b8",
- "wires": []
- },
- {
- "id": "4bd31b43.411d14",
- "type": "service-logic",
- "name": "GENERIC-RESOURCE-API ${project.version}",
- "module": "GENERIC-RESOURCE-API",
- "version": "${project.version}",
- "comments": "",
- "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
- "outputs": 1,
- "x": 177,
- "y": 145.23810708522797,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "d79d2c6f.11854"
- ]
- ]
- },
- {
- "id": "c863bd10.503ce",
- "type": "dgstart",
- "name": "DGSTART",
- "outputs": 1,
- "x": 97.71429443359375,
- "y": 82.99999749660492,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "4bd31b43.411d14"
- ]
- ]
- },
- {
- "id": "5dc11f37.9dd37",
- "type": "block",
- "name": "block : atomic",
- "xml": "<block atomic=\"true\">",
- "atomic": "true",
- "outputs": 1,
- "x": 330.95240020751953,
- "y": 381.8095315694809,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "b8581db5.dbca7",
- "c8c0bf77.157a7"
- ]
- ]
- },
- {
- "id": "d79d2c6f.11854",
- "type": "method",
- "name": "method sdwan-get-tenant-auth",
- "xml": "<method rpc='sdwan-get-tenant-auth' mode='sync'>\n",
- "comments": "",
- "outputs": 1,
- "x": 188.71429443359375,
- "y": 239.58633935451508,
- "z": "a703782b.2992b8",
- "wires": [
- [
- "5dc11f37.9dd37"
- ]
- ]
- },
- {
- "id": "e1a74ece.52f65",
- "type": "set",
- "name": "set prop.tenant-id",
- "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`' />\n",
- "comments": "",
- "x": 1379.857177734375,
- "y": 410.9523614645004,
- "z": "a703782b.2992b8",
- "wires": []
- },
- {
- "id": "c8c0bf77.157a7",
- "type": "execute",
- "name": "execute RestApiCallNode Create tenant auth",
- "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/baseservice/tenants/authorization/' + $prop.tenant-id`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
- "comments": "",
- "outputs": 1,
- "x": 624.5000305175781,
- "y": 520.9880307912827,
- "z": "a703782b.2992b8",
- "wires": [
- []
- ]
- },
- {
- "id": "831b80bb.e08e8",
- "type": "returnFailure",
- "name": "return failure",
- "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
- "comments": "",
- "x": 1384.1427841186523,
- "y": 356.6666520833969,
- "z": "a703782b.2992b8",
- "wires": []
- }
-]
+ {
+ "id": "3eca748a.ef817c",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 123,
+ "y": 75,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "350fb0d5.88723"
+ ]
+ ]
+ },
+ {
+ "id": "350fb0d5.88723",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 368.2857131958008,
+ "y": 74.23807907104492,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "7fecfee8.d291b"
+ ]
+ ]
+ },
+ {
+ "id": "7fecfee8.d291b",
+ "type": "method",
+ "name": "validate-sdwan-vf-vpn-input-parameters",
+ "xml": "<method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 451.9166946411133,
+ "y": 209.25301837921143,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "8f6f1f8b.897a9"
+ ]
+ ]
+ },
+ {
+ "id": "8f6f1f8b.897a9",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 735.9167022705078,
+ "y": 197.25304317474365,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "634b7128.2e84d",
+ "adb8eda0.ca986",
+ "bc20a4d8.66ea78",
+ "376a189c.5eea28"
+ ]
+ ]
+ },
+ {
+ "id": "634b7128.2e84d",
+ "type": "switchNode",
+ "name": "switch svc-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 995.916633605957,
+ "y": 45.25303936004639,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "183ac3e9.257bcc"
+ ]
+ ]
+ },
+ {
+ "id": "183ac3e9.257bcc",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1186.6309356689453,
+ "y": 46.2530403137207,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "65be383e.39b058"
+ ]
+ ]
+ },
+ {
+ "id": "65be383e.39b058",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"sdnc-request-header.svc-request-id is a required input\" />\n",
+ "comments": "",
+ "x": 1361.0594863891602,
+ "y": 45.25303268432617,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "adb8eda0.ca986",
+ "type": "switchNode",
+ "name": "switch svc-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 332.9166564941406,
+ "y": 468.2530336380005,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "83c4de98.01196",
+ "ce7e74f7.3c86c8",
+ "147fd5d9.68de3a",
+ "1561519f.abda0e",
+ "d7c5bf00.510dc"
+ ]
+ ]
+ },
+ {
+ "id": "83c4de98.01196",
+ "type": "outcome",
+ "name": "create",
+ "xml": "<outcome value='create'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 526.5000228881836,
+ "y": 297.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "363f7231.506cbe"
+ ]
+ ]
+ },
+ {
+ "id": "363f7231.506cbe",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 687.5000228881836,
+ "y": 297.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "46be34f.5b2c7cc"
+ ]
+ ]
+ },
+ {
+ "id": "ce7e74f7.3c86c8",
+ "type": "outcome",
+ "name": "deactivate",
+ "xml": "<outcome value='deactivate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 499.4920120239258,
+ "y": 906.428539276123,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "aec7db3f.798358"
+ ]
+ ]
+ },
+ {
+ "id": "147fd5d9.68de3a",
+ "type": "outcome",
+ "name": "delete",
+ "xml": "<outcome value='delete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 503.20639419555664,
+ "y": 1077.1430969238281,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c7708172.24701"
+ ]
+ ]
+ },
+ {
+ "id": "1561519f.abda0e",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 502.9682846069336,
+ "y": 1250.571382522583,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b6252f6e.c1321"
+ ]
+ ]
+ },
+ {
+ "id": "b6252f6e.c1321",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+ "comments": "",
+ "x": 686.5398178100586,
+ "y": 1251.190523147583,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "46be34f.5b2c7cc",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 888,
+ "y": 295.6666797399521,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3528f63.34e230a",
+ "82048a2c.348118"
+ ]
+ ]
+ },
+ {
+ "id": "3528f63.34e230a",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1073.4999923706055,
+ "y": 323.66667652130127,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3198409.3ebdec"
+ ]
+ ]
+ },
+ {
+ "id": "3198409.3ebdec",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create\" />\n",
+ "comments": "",
+ "x": 1224.0000228881836,
+ "y": 317.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "ee1459dc.d090c8",
+ "type": "other",
+ "name": "DeleteSDWANVpnInstance",
+ "xml": "<outcome value='DeleteSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 945.0634384155273,
+ "y": 1073.698395729065,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "773b0668.3dfda8"
+ ]
+ ]
+ },
+ {
+ "id": "640b4312.a9c5ac",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 860.6189804077148,
+ "y": 1149.920636177063,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "20eafb56.ca5e14"
+ ]
+ ]
+ },
+ {
+ "id": "20eafb56.ca5e14",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete\" />\n",
+ "comments": "",
+ "x": 1020.9524002075195,
+ "y": 1152.0317735671997,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "773b0668.3dfda8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1168.9523086547852,
+ "y": 1079.9206190109253,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "30507c3b.465aa4",
+ "b4bebf6c.2b4fa",
+ "b3df3a7b.216bd8",
+ "eb92e3d.8a6ff2"
+ ]
+ ]
+ },
+ {
+ "id": "d7c5bf00.510dc",
+ "type": "outcome",
+ "name": "activate",
+ "xml": "<outcome value='activate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 520.4285774230957,
+ "y": 560.7143135070801,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "aa89a015.4408d"
+ ]
+ ]
+ },
+ {
+ "id": "aa89a015.4408d",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 703.2857437133789,
+ "y": 557.8571634292603,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c1f6d379.b3eef",
+ "89075fc5.672ae"
+ ]
+ ]
+ },
+ {
+ "id": "c1f6d379.b3eef",
+ "type": "other",
+ "name": "ActivateSDWANVpnInstance",
+ "xml": "<outcome value='ActivateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 956.5000228881836,
+ "y": 537.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "ce665d03.3901d"
+ ]
+ ]
+ },
+ {
+ "id": "89075fc5.672ae",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 886.5000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c6e2911c.5f916"
+ ]
+ ]
+ },
+ {
+ "id": "c6e2911c.5f916",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate\" />\n",
+ "comments": "",
+ "x": 1044.0000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "ce665d03.3901d",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1187.5000228881836,
+ "y": 537.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b3df3a7b.216bd8",
+ "30507c3b.465aa4",
+ "b4bebf6c.2b4fa",
+ "57bd5824.2497c8"
+ ]
+ ]
+ },
+ {
+ "id": "c598159a.7423c8",
+ "type": "other",
+ "name": "DeactivateSDWANVpnInstance",
+ "xml": "<outcome value='DeactivateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 942.9206390380859,
+ "y": 908.1429328918457,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "50af0272.e02a9c"
+ ]
+ ]
+ },
+ {
+ "id": "e01173d7.fe6b9",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 857.9206314086914,
+ "y": 977.1429405212402,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d14295e9.c68018"
+ ]
+ ]
+ },
+ {
+ "id": "d14295e9.c68018",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate\" />\n",
+ "comments": "",
+ "x": 1038.9206466674805,
+ "y": 978.1429405212402,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "aec7db3f.798358",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 679.7776947021484,
+ "y": 910.6188039779663,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c598159a.7423c8",
+ "e01173d7.fe6b9"
+ ]
+ ]
+ },
+ {
+ "id": "c7708172.24701",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 683.5554962158203,
+ "y": 1076.9523208141327,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "ee1459dc.d090c8",
+ "640b4312.a9c5ac"
+ ]
+ ]
+ },
+ {
+ "id": "50af0272.e02a9c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1202.888786315918,
+ "y": 910.9523277282715,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "30507c3b.465aa4",
+ "b4bebf6c.2b4fa",
+ "b3df3a7b.216bd8",
+ "c2db488a.b105a8"
+ ]
+ ]
+ },
+ {
+ "id": "82048a2c.348118",
+ "type": "other",
+ "name": "CreateSDWANVpnInstance",
+ "xml": "<outcome value='CreateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1172.499984741211,
+ "y": 276.6666679382324,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "7a0b5551.c75d9c"
+ ]
+ ]
+ },
+ {
+ "id": "7a0b5551.c75d9c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1407.49995803833,
+ "y": 275.6666679382324,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3f52a78f.7ab728"
+ ]
+ ]
+ },
+ {
+ "id": "3f52a78f.7ab728",
+ "type": "for",
+ "name": "for loop i - vpn vf input parameters",
+ "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1638.000015258789,
+ "y": 276.6666679382324,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d37b6b2c.71fb38"
+ ]
+ ]
+ },
+ {
+ "id": "d37b6b2c.71fb38",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1846.5000228881836,
+ "y": 277.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "9ec108e6.32a3b8",
+ "a16aa1da.005f3",
+ "3a20c40b.dcc4cc"
+ ]
+ ]
+ },
+ {
+ "id": "9ec108e6.32a3b8",
+ "type": "set",
+ "name": "clear tmp-data",
+ "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+ "comments": "",
+ "x": 2029.5000228881836,
+ "y": 237.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "a16aa1da.005f3",
+ "type": "set",
+ "name": "set tmp-data",
+ "xml": "<set>\n<parameter name='tmp.name' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`\"/>\n",
+ "comments": "",
+ "x": 2024.0000228881836,
+ "y": 277.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "3a20c40b.dcc4cc",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$tmp.name`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2024.0000228881836,
+ "y": 317.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3280408b.66ab3",
+ "63ad3611.30c718",
+ "2eab978e.1492a8"
+ ]
+ ]
+ },
+ {
+ "id": "d22ab892.eef718",
+ "type": "switchNode",
+ "name": "switch value",
+ "xml": "<switch test=\"`$tmp.value`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2484.0001907348633,
+ "y": 269.66669142246246,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b07f67fa.6ab208"
+ ]
+ ]
+ },
+ {
+ "id": "2eab978e.1492a8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2243.500358581543,
+ "y": 335.66667902469635,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "5967794c.72e8b8"
+ ]
+ ]
+ },
+ {
+ "id": "5967794c.72e8b8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+ "comments": "",
+ "x": 2418.5003623962402,
+ "y": 334.66667902469635,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "3280408b.66ab3",
+ "type": "other",
+ "name": "name",
+ "xml": "<outcome value='name'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2243.500358581543,
+ "y": 219.66667330265045,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d22ab892.eef718"
+ ]
+ ]
+ },
+ {
+ "id": "63ad3611.30c718",
+ "type": "other",
+ "name": "topology",
+ "xml": "<outcome value='topology'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2255.500114440918,
+ "y": 273.333335518837,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d22ab892.eef718"
+ ]
+ ]
+ },
+ {
+ "id": "b07f67fa.6ab208",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2627.5001907348633,
+ "y": 269.66669142246246,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3ecabf5c.8d652"
+ ]
+ ]
+ },
+ {
+ "id": "3ecabf5c.8d652",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`\" />\n",
+ "comments": "",
+ "x": 2785.5001907348633,
+ "y": 269.66669142246246,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "b3df3a7b.216bd8",
+ "type": "switchNode",
+ "name": "switch service-data.vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1479.3889541625977,
+ "y": 576.9999761581421,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "37913775.d258a8",
+ "8c9e338f.0d83c"
+ ]
+ ]
+ },
+ {
+ "id": "37913775.d258a8",
+ "type": "other",
+ "name": "outcome Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1748.0000228881836,
+ "y": 556.666711807251,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "7c4231f0.9cbb7"
+ ]
+ ]
+ },
+ {
+ "id": "7c4231f0.9cbb7",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1924.0000228881836,
+ "y": 557.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "8c9e338f.0d83c",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1726.5000228881836,
+ "y": 597.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b6f61e8c.9dd35"
+ ]
+ ]
+ },
+ {
+ "id": "b6f61e8c.9dd35",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1887.5000228881836,
+ "y": 597.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "9317c153.6ccad",
+ "bdedbaa4.65e588"
+ ]
+ ]
+ },
+ {
+ "id": "9317c153.6ccad",
+ "type": "for",
+ "name": "for nidx..service-data.vf-modules.vf-module[]",
+ "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2150.0000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "1fade275.78b10e"
+ ]
+ ]
+ },
+ {
+ "id": "1fade275.78b10e",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n \n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2436.0000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "99a1d82a.9dd8c8"
+ ]
+ ]
+ },
+ {
+ "id": "99a1d82a.9dd8c8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2606.5000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "39ae6a67.1c8296"
+ ]
+ ]
+ },
+ {
+ "id": "70e3cfee.6e895",
+ "type": "set",
+ "name": "set tmp.nidx and ctx.network-data",
+ "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 3007.50008392334,
+ "y": 574.6667140722275,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "1412cffb.8d463",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 2364.0000228881836,
+ "y": 617.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "fbeeeb3e.43c3b8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2226.5000228881836,
+ "y": 617.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "1412cffb.8d463"
+ ]
+ ]
+ },
+ {
+ "id": "bdedbaa4.65e588",
+ "type": "switchNode",
+ "name": "switch tmp.nidx ",
+ "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2072.5000228881836,
+ "y": 617.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "fbeeeb3e.43c3b8"
+ ]
+ ]
+ },
+ {
+ "id": "57bd5824.2497c8",
+ "type": "switchNode",
+ "name": "switch network-level-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1451.6667098999023,
+ "y": 656.5555486679077,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "719dd138.28ef4",
+ "2dca8a18.a65586"
+ ]
+ ]
+ },
+ {
+ "id": "719dd138.28ef4",
+ "type": "outcome",
+ "name": "outcome Created",
+ "xml": "<outcome value='Created'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1748.5001258850098,
+ "y": 656.5555467605591,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "94e9cf1a.6c399"
+ ]
+ ]
+ },
+ {
+ "id": "2dca8a18.a65586",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1716.5001258850098,
+ "y": 696.5555467605591,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "2c8432e2.7a0b8e"
+ ]
+ ]
+ },
+ {
+ "id": "2c8432e2.7a0b8e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",
+ "comments": "",
+ "x": 1874.0001258850098,
+ "y": 696.5555467605591,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "b4bebf6c.2b4fa",
+ "type": "switchNode",
+ "name": "switch vf-module-id",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1398.5000228881836,
+ "y": 517.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "9ad9b806.2c19b8"
+ ]
+ ]
+ },
+ {
+ "id": "9ad9b806.2c19b8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1626.5000228881836,
+ "y": 517.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b7b28733.f37c08"
+ ]
+ ]
+ },
+ {
+ "id": "b7b28733.f37c08",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"network-request-input.network-input-parameters.name is a required input\" />\n",
+ "comments": "",
+ "x": 1764.0000228881836,
+ "y": 517.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "30507c3b.465aa4",
+ "type": "execute",
+ "name": "execute requiredParameters",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vf-module-topology-operation-input.vf-module-information.vf-module-id\" value=\"$vf-module-topology-operation-input.vf-module-information.vf-module-id\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1433.0000228881836,
+ "y": 477.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c2db488a.b105a8",
+ "type": "switchNode",
+ "name": "switch network-level-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1479.8332748413086,
+ "y": 906.5555257797241,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "cf4b307b.b1b04",
+ "acc49742.fd0df8"
+ ]
+ ]
+ },
+ {
+ "id": "cf4b307b.b1b04",
+ "type": "outcome",
+ "name": "outcome Active",
+ "xml": "<outcome value='Active'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1753.166648864746,
+ "y": 880.9999837875366,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "e31a54a2.3ff1f8"
+ ]
+ ]
+ },
+ {
+ "id": "acc49742.fd0df8",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1723.166648864746,
+ "y": 920.9999837875366,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "bc3125bf.c135a8"
+ ]
+ ]
+ },
+ {
+ "id": "bc3125bf.c135a8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n ",
+ "comments": "",
+ "x": 1889.166648864746,
+ "y": 922.9999837875366,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "eb92e3d.8a6ff2",
+ "type": "switchNode",
+ "name": "switch network-level-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1468.7221908569336,
+ "y": 1077.6666097640991,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "4005e1e5.db606",
+ "3f0b16e4.30f1ca"
+ ]
+ ]
+ },
+ {
+ "id": "4005e1e5.db606",
+ "type": "outcome",
+ "name": "outcome PendingDelete",
+ "xml": "<outcome value='PendingDelete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1768.7222518920898,
+ "y": 1045.444405555725,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "e99f233c.ef676"
+ ]
+ ]
+ },
+ {
+ "id": "3f0b16e4.30f1ca",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1712.055564880371,
+ "y": 1092.1110677719116,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "26e244b4.b2362c"
+ ]
+ ]
+ },
+ {
+ "id": "26e244b4.b2362c",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",
+ "comments": "",
+ "x": 1878.055564880371,
+ "y": 1094.1110677719116,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "94e9cf1a.6c399",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1940.5001029968262,
+ "y": 657.6666488647461,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e31a54a2.3ff1f8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1953.1665267944336,
+ "y": 879.1481161117554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e99f233c.ef676",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1984.277732849121,
+ "y": 1045.8147420883179,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "39ae6a67.1c8296",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2756.666534423828,
+ "y": 574.0000190734863,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "70e3cfee.6e895"
+ ]
+ ]
+ },
+ {
+ "id": "bc20a4d8.66ea78",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 971.0065307617188,
+ "y": 121.24849605560303,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "ae64d058.26533"
+ ]
+ ]
+ },
+ {
+ "id": "ae64d058.26533",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1151.0065116882324,
+ "y": 120.24848556518555,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d4c5df8d.2e7e3"
+ ]
+ ]
+ },
+ {
+ "id": "d4c5df8d.2e7e3",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf entry not found in service-data\" />\n",
+ "comments": "",
+ "x": 1300.4352378845215,
+ "y": 121.39140319824219,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "376a189c.5eea28",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 951.0379104614258,
+ "y": 183.51763439178467,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "891fced5.d7d06"
+ ]
+ ]
+ },
+ {
+ "id": "891fced5.d7d06",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1189.0065269470215,
+ "y": 183.2484917640686,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "2828372d.9354b8"
+ ]
+ ]
+ },
+ {
+ "id": "2828372d.9354b8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1404.0065116882324,
+ "y": 181.24848556518555,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "56c573f0.8eef8c"
+ ]
+ ]
+ },
+ {
+ "id": "56c573f0.8eef8c",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1568.0065116882324,
+ "y": 176.24848556518555,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json
new file mode 100644
index 00000000..8a96be90
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json
@@ -0,0 +1,551 @@
+[
+ {
+ "id": "5f7afc20.704254",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 164.00390625,
+ "y": 81.99999871850014,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "d406ff84.ce98e"
+ ]
+ ]
+ },
+ {
+ "id": "d406ff84.ce98e",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 309.00391006469727,
+ "y": 163.00001588463783,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "de9e8cab.e6f6e"
+ ]
+ ]
+ },
+ {
+ "id": "de9e8cab.e6f6e",
+ "type": "method",
+ "name": "sdwan-get-vf-module-device-param",
+ "xml": "<method rpc='sdwan-get-vf-module-device-param' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 297.0040283203125,
+ "y": 250.99999871850014,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "d35337b3.c33088"
+ ]
+ ]
+ },
+ {
+ "id": "d35337b3.c33088",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 304.00392150878906,
+ "y": 337.00005689263344,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "768c22f7.0cb24c"
+ ]
+ ]
+ },
+ {
+ "id": "768c22f7.0cb24c",
+ "type": "for",
+ "name": "for each sdwan-get-request-input-param",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 340.6706848144531,
+ "y": 419.66665330529213,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "e9dd53c5.9b95c"
+ ]
+ ]
+ },
+ {
+ "id": "e9dd53c5.9b95c",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 598.9982223510742,
+ "y": 415.99431481957436,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "32b23dbd.651cc2",
+ "a532fa29.a02ba8",
+ "a0a56af7.f42cf8",
+ "9b473841.95e738",
+ "6e94beb9.da533",
+ "f818f130.64cf3",
+ "833242d8.e1a62",
+ "463a228c.d26a9c",
+ "e732bba8.4d48f8",
+ "88a6e509.9d3208",
+ "b49703f2.4b839"
+ ]
+ ]
+ },
+ {
+ "id": "32b23dbd.651cc2",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 806.4988403320312,
+ "y": 707.9948875010014,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "a0a56af7.f42cf8",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 834.4979286193848,
+ "y": 260.9942981302738,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "46f8e7aa.98fa98"
+ ]
+ ]
+ },
+ {
+ "id": "46f8e7aa.98fa98",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 976.4979286193848,
+ "y": 261.9942981302738,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "f768ea22.72bf98"
+ ]
+ ]
+ },
+ {
+ "id": "f768ea22.72bf98",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1110.4979286193848,
+ "y": 262.59430423378944,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "a532fa29.a02ba8",
+ "type": "switchNode",
+ "name": "switch esn",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'esn'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 827.3376741409302,
+ "y": 297.99423709511757,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "12a81e82.d1a6f1"
+ ]
+ ]
+ },
+ {
+ "id": "12a81e82.d1a6f1",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 971.3376741409302,
+ "y": 297.99423709511757,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "a977ec3e.312ec"
+ ]
+ ]
+ },
+ {
+ "id": "a977ec3e.312ec",
+ "type": "set",
+ "name": "set esn",
+ "xml": "<set>\n<parameter name='prop.device.esn' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1091.6710481643677,
+ "y": 297.45541873574257,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "9b473841.95e738",
+ "type": "switchNode",
+ "name": "switch type",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 815.3930940628052,
+ "y": 372.9571887552738,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "3ec28d96.e420a2"
+ ]
+ ]
+ },
+ {
+ "id": "6e94beb9.da533",
+ "type": "switchNode",
+ "name": "switch systemIp",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'systemIp'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 815.3931522369385,
+ "y": 464.9572059214115,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "2adae6a4.285e7a"
+ ]
+ ]
+ },
+ {
+ "id": "3ec28d96.e420a2",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 961.3930940628052,
+ "y": 372.9571887552738,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "45b1ca2c.89f074"
+ ]
+ ]
+ },
+ {
+ "id": "45b1ca2c.89f074",
+ "type": "set",
+ "name": "set type",
+ "xml": "<set>\n<parameter name='prop.device.deviceModel' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1092.3930940628052,
+ "y": 372.55719485878944,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "2adae6a4.285e7a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 961.3931522369385,
+ "y": 461.9572059214115,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "a141079c.b2f848"
+ ]
+ ]
+ },
+ {
+ "id": "a141079c.b2f848",
+ "type": "set",
+ "name": "set systemIp",
+ "xml": "<set>\n<parameter name='prop.device.systemIP' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1104.3931522369385,
+ "y": 460.55721202492714,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "c177b296.16b4e",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 971.3931522369385,
+ "y": 497.9572059214115,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "1718a85d.d8d638"
+ ]
+ ]
+ },
+ {
+ "id": "f818f130.64cf3",
+ "type": "switchNode",
+ "name": "switch description",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 817.3931522369385,
+ "y": 500.9572059214115,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "c177b296.16b4e"
+ ]
+ ]
+ },
+ {
+ "id": "1718a85d.d8d638",
+ "type": "set",
+ "name": "set description",
+ "xml": "<set>\n<parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1114.3931522369385,
+ "y": 496.55721202492714,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "833242d8.e1a62",
+ "type": "switchNode",
+ "name": "switch vendor",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vendor'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 804.7264375686646,
+ "y": 547.9572402536869,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "633adfee.bdc3d"
+ ]
+ ]
+ },
+ {
+ "id": "633adfee.bdc3d",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 972.7263956069946,
+ "y": 544.9571811258793,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "630caf06.a577a"
+ ]
+ ]
+ },
+ {
+ "id": "630caf06.a577a",
+ "type": "set",
+ "name": "set vendor",
+ "xml": "<set>\n<parameter name='prop.device.vendor' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1115.7263956069946,
+ "y": 543.5571872293949,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "463a228c.d26a9c",
+ "type": "switchNode",
+ "name": "switch class",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'class'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 828.4978942871094,
+ "y": 334.99424281716347,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "b2250b2e.750348"
+ ]
+ ]
+ },
+ {
+ "id": "b2250b2e.750348",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 972.4978942871094,
+ "y": 334.99424281716347,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "810d94ea.a48138"
+ ]
+ ]
+ },
+ {
+ "id": "810d94ea.a48138",
+ "type": "set",
+ "name": "set class",
+ "xml": "<set>\n<parameter name='prop.device.class' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1092.8312683105469,
+ "y": 334.45542445778847,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "e732bba8.4d48f8",
+ "type": "switchNode",
+ "name": "switch version",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'version'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 826.4978942871094,
+ "y": 418.99424281716347,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "3d7ee8b7.466ab8"
+ ]
+ ]
+ },
+ {
+ "id": "3d7ee8b7.466ab8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 972.4978942871094,
+ "y": 415.99424281716347,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "314ae7d6.dc68d8"
+ ]
+ ]
+ },
+ {
+ "id": "314ae7d6.dc68d8",
+ "type": "set",
+ "name": "set version",
+ "xml": "<set>\n<parameter name='prop.device.version' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1115.4978942871094,
+ "y": 414.5942489206791,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "88a6e509.9d3208",
+ "type": "switchNode",
+ "name": "switch deviceId",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 818.4979629516602,
+ "y": 594.9942914545536,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "46303600.72a7ac"
+ ]
+ ]
+ },
+ {
+ "id": "46303600.72a7ac",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 974.4980506896973,
+ "y": 590.9943362772465,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "ba71d8b.57ad228"
+ ]
+ ]
+ },
+ {
+ "id": "ba71d8b.57ad228",
+ "type": "set",
+ "name": "set deviceId",
+ "xml": "<set>\n<parameter name='prop.device.deviceId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1112.8317985534668,
+ "y": 579.4554721415043,
+ "z": "492d4750.cb7708",
+ "wires": []
+ },
+ {
+ "id": "b49703f2.4b839",
+ "type": "switchNode",
+ "name": "switch sdncCreate",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'sdncCreate'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 813.497917175293,
+ "y": 640.9942537844181,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "7e203582.a2c85c"
+ ]
+ ]
+ },
+ {
+ "id": "7e203582.a2c85c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 978.4979782104492,
+ "y": 637.9943148195744,
+ "z": "492d4750.cb7708",
+ "wires": [
+ [
+ "840a186.e7a4be8"
+ ]
+ ]
+ },
+ {
+ "id": "840a186.e7a4be8",
+ "type": "set",
+ "name": "set sdncCreate",
+ "xml": "<set>\n<parameter name='prop.device.sdncCreate' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1127.8317184448242,
+ "y": 636.4554354250431,
+ "z": "492d4750.cb7708",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json
new file mode 100644
index 00000000..4bb31386
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json
@@ -0,0 +1,507 @@
+[
+ {
+ "id": "3208e6b7.8cb61a",
+ "type": "for",
+ "name": "for each sdwan-get-request-input-param",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 327,
+ "y": 415.6666383743286,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "5e79a667.e36978"
+ ]
+ ]
+ },
+ {
+ "id": "bb96599.94117a8",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 159.3332290649414,
+ "y": 78,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "619534b0.e7c14c"
+ ]
+ ]
+ },
+ {
+ "id": "619534b0.e7c14c",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 304.3332328796387,
+ "y": 159.0000171661377,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "fa9cc521.66a538"
+ ]
+ ]
+ },
+ {
+ "id": "fa9cc521.66a538",
+ "type": "method",
+ "name": "sdwan-get-vf-module-lanport-param",
+ "xml": "<method rpc='sdwan-get-vf-module-lanport-param' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 292.3333511352539,
+ "y": 247,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "9745a419.00eab8"
+ ]
+ ]
+ },
+ {
+ "id": "9745a419.00eab8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 299.33324432373047,
+ "y": 333.0000581741333,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "3208e6b7.8cb61a"
+ ]
+ ]
+ },
+ {
+ "id": "5e79a667.e36978",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 583.2326469421387,
+ "y": 418.0103905200958,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "c8ef8603.ded258",
+ "de743e37.2d6ef",
+ "74590dc6.2a74a4",
+ "24b13d58.52ec12",
+ "c43795e3.062a98",
+ "575ca25e.3b0f5c",
+ "e5fd35dc.3490a8",
+ "6a33fd1e.0f98c4",
+ "f22f3b86.1d2998",
+ "c6929deb.bb79b"
+ ]
+ ]
+ },
+ {
+ "id": "c8ef8603.ded258",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 777.7332534790039,
+ "y": 708.0107636451721,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "74590dc6.2a74a4",
+ "type": "switchNode",
+ "name": "switch deviceName",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 805.7326431274414,
+ "y": 345.01042914390564,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "beaed204.71603"
+ ]
+ ]
+ },
+ {
+ "id": "beaed204.71603",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.7330360412598,
+ "y": 343.01051592826843,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "b55ea4ff.9cde28"
+ ]
+ ]
+ },
+ {
+ "id": "b55ea4ff.9cde28",
+ "type": "set",
+ "name": "set deviceName",
+ "xml": "<set>\n<parameter name='prop.lan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1155.7331199645996,
+ "y": 344.61056327819824,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "e5fd35dc.3490a8",
+ "type": "switchNode",
+ "name": "switch vlanId",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 783.5727691650391,
+ "y": 552.0104854106903,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "99b2d592.8926d8"
+ ]
+ ]
+ },
+ {
+ "id": "99b2d592.8926d8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 976.5727577209473,
+ "y": 554.0105578899384,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "e0277d38.f11f6"
+ ]
+ ]
+ },
+ {
+ "id": "e0277d38.f11f6",
+ "type": "set",
+ "name": "set vlanId",
+ "xml": "<set>\n<parameter name='prop.lan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1122.9065856933594,
+ "y": 555.4718005657196,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "575ca25e.3b0f5c",
+ "type": "switchNode",
+ "name": "switch ipAddress",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 792.6279563903809,
+ "y": 510.3871638774872,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "e7a176a1.ce4358"
+ ]
+ ]
+ },
+ {
+ "id": "e7a176a1.ce4358",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 977.6280975341797,
+ "y": 510.38712096214294,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "d2f3c8c4.499528"
+ ]
+ ]
+ },
+ {
+ "id": "d2f3c8c4.499528",
+ "type": "set",
+ "name": "set ipAddress",
+ "xml": "<set>\n<parameter name='prop.lan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1141.9619789123535,
+ "y": 511.8483989238739,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "c43795e3.062a98",
+ "type": "switchNode",
+ "name": "switch portNumber",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 798.9610862731934,
+ "y": 469.00466132164,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "7eda0cd0.bddb34"
+ ]
+ ]
+ },
+ {
+ "id": "7eda0cd0.bddb34",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.9611854553223,
+ "y": 471.00467467308044,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "f1d0b896.8928d8"
+ ]
+ ]
+ },
+ {
+ "id": "f1d0b896.8928d8",
+ "type": "set",
+ "name": "set portNumber",
+ "xml": "<set>\n<parameter name='prop.lan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1150.961597442627,
+ "y": 469.60469126701355,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "24b13d58.52ec12",
+ "type": "switchNode",
+ "name": "switch portType",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 788.8561058044434,
+ "y": 426.9779860973358,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "945d6482.e4ba88"
+ ]
+ ]
+ },
+ {
+ "id": "945d6482.e4ba88",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 983.8561782836914,
+ "y": 427.9780204296112,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "51acc9c3.2fe3b8"
+ ]
+ ]
+ },
+ {
+ "id": "51acc9c3.2fe3b8",
+ "type": "set",
+ "name": "set portType",
+ "xml": "<set>\n<parameter name='prop.lan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1141.8565788269043,
+ "y": 425.57802534103394,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "de743e37.2d6ef",
+ "type": "switchNode",
+ "name": "switch id",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'id'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 789.7319984436035,
+ "y": 296.3970763683319,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "5d9145a5.3659cc"
+ ]
+ ]
+ },
+ {
+ "id": "5d9145a5.3659cc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 981.7319221496582,
+ "y": 296.3970830440521,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "e87eb6bc.61a328"
+ ]
+ ]
+ },
+ {
+ "id": "e87eb6bc.61a328",
+ "type": "set",
+ "name": "set id",
+ "xml": "<set>\n<parameter name='prop.lan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1125.7321891784668,
+ "y": 295.99721121788025,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "6a33fd1e.0f98c4",
+ "type": "switchNode",
+ "name": "switch portSwitch",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portSwitch'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 795.7324638366699,
+ "y": 388.0207631587982,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "f0a564e5.e03788"
+ ]
+ ]
+ },
+ {
+ "id": "f0a564e5.e03788",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.7323989868164,
+ "y": 386.02081274986267,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "607e93f6.70105c"
+ ]
+ ]
+ },
+ {
+ "id": "607e93f6.70105c",
+ "type": "set",
+ "name": "set portSwitch",
+ "xml": "<set>\n<parameter name='prop.lan.portSwitch' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1152.7327842712402,
+ "y": 386.6208064556122,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "f22f3b86.1d2998",
+ "type": "switchNode",
+ "name": "switch devicePortId",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 799.0000152587891,
+ "y": 596.0000171661377,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "e1bc8bda.eb9038"
+ ]
+ ]
+ },
+ {
+ "id": "e1bc8bda.eb9038",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 968.0000286102295,
+ "y": 596.0000991821289,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "d2ef0983.267148"
+ ]
+ ]
+ },
+ {
+ "id": "d2ef0983.267148",
+ "type": "set",
+ "name": "set devicePortId",
+ "xml": "<set>\n<parameter name='prop.lan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1126.3338165283203,
+ "y": 599.4613151550293,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ },
+ {
+ "id": "c6929deb.bb79b",
+ "type": "switchNode",
+ "name": "switch lanPortId",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'lanPortId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 781,
+ "y": 652,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "3b76a25e.db01ce"
+ ]
+ ]
+ },
+ {
+ "id": "3b76a25e.db01ce",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 973.9999885559082,
+ "y": 654.000072479248,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": [
+ [
+ "5afdfd4e.d87a04"
+ ]
+ ]
+ },
+ {
+ "id": "5afdfd4e.d87a04",
+ "type": "set",
+ "name": "set lanPortId",
+ "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1120.3338165283203,
+ "y": 655.4613151550293,
+ "z": "f5fe05ac.3dbcd8",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json
new file mode 100644
index 00000000..4565c4de
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json
@@ -0,0 +1,910 @@
+[
+ {
+ "id": "484180f6.294fb",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 121.00390625,
+ "y": 54.00390625,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "39a32e97.7d2bf2"
+ ]
+ ]
+ },
+ {
+ "id": "39a32e97.7d2bf2",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 299.00391006469727,
+ "y": 119.0039234161377,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "cdd33b78.958888"
+ ]
+ ]
+ },
+ {
+ "id": "cdd33b78.958888",
+ "type": "method",
+ "name": "sdwan-get-vf-module-site-param",
+ "xml": "<method rpc='sdwan-get-vf-module-site-param' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 287.0040283203125,
+ "y": 207.00390625,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "3b8b7ba0.ba9d74"
+ ]
+ ]
+ },
+ {
+ "id": "3b8b7ba0.ba9d74",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 294.00392150878906,
+ "y": 293.0039644241333,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "cf281c73.11274"
+ ]
+ ]
+ },
+ {
+ "id": "cf281c73.11274",
+ "type": "for",
+ "name": "for each sdwan-get-request-input-param",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 330.6706848144531,
+ "y": 375.670560836792,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "f885ce18.55215"
+ ]
+ ]
+ },
+ {
+ "id": "f885ce18.55215",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 617.5042343139648,
+ "y": 293.00400829315186,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "4a5ce4fc.97fe0c",
+ "f4cc368c.35bde8",
+ "70d53de2.3d5724",
+ "b1d10119.2f141",
+ "6aa3af3.d91fd5",
+ "3a7c3a06.65f626",
+ "50debd23.9a1de4",
+ "4dc3fc8d.6fd204",
+ "b069280b.7f4bd8",
+ "5aa9fa90.43fe74",
+ "db390dd0.a9e2a",
+ "fd28eb0c.be3ba8",
+ "8406a399.f2e3e",
+ "b6ec51e3.02bd9"
+ ]
+ ]
+ },
+ {
+ "id": "4a5ce4fc.97fe0c",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 819.005012512207,
+ "y": 726.0046715736389,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "f4cc368c.35bde8",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 837.0039443969727,
+ "y": 89.003981590271,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "34b7e315.1a243c"
+ ]
+ ]
+ },
+ {
+ "id": "34b7e315.1a243c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 979.0039443969727,
+ "y": 90.003981590271,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "b4b588e9.e7c4f8"
+ ]
+ ]
+ },
+ {
+ "id": "b4b588e9.e7c4f8",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1113.0039443969727,
+ "y": 90.60398769378662,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "70d53de2.3d5724",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 833.0040512084961,
+ "y": 180.00393962860107,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "bd7892f2.73131"
+ ]
+ ]
+ },
+ {
+ "id": "bd7892f2.73131",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1011.0040645599365,
+ "y": 183.00393962860107,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "a01e32db.c7d83"
+ ]
+ ]
+ },
+ {
+ "id": "a01e32db.c7d83",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1158.0040740966797,
+ "y": 182.60393524169922,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "5aa9fa90.43fe74",
+ "type": "switchNode",
+ "name": "switch type",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 811.8997230529785,
+ "y": 477.9773893356323,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "1b07ddd4.378392"
+ ]
+ ]
+ },
+ {
+ "id": "69d26327.61da0c",
+ "type": "set",
+ "name": "set type",
+ "xml": "<set>\n<parameter name='prop.site.type' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value='true' />",
+ "comments": "",
+ "x": 1463.8997840881348,
+ "y": 531.5773239135742,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "db390dd0.a9e2a",
+ "type": "switchNode",
+ "name": "switch role",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'role'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 810.8994369506836,
+ "y": 585.9774322509766,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "e69860a9.0015d"
+ ]
+ ]
+ },
+ {
+ "id": "e69860a9.0015d",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.8994445800781,
+ "y": 595.9773950576782,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "9cd4ca73.3ac2d8"
+ ]
+ ]
+ },
+ {
+ "id": "b1d10119.2f141",
+ "type": "switchNode",
+ "name": "switch location-name",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'location-name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 855.8992385864258,
+ "y": 221.9772481918335,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "8a7e81ba.e5188"
+ ]
+ ]
+ },
+ {
+ "id": "8a7e81ba.e5188",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1019.8994102478027,
+ "y": 221.9772491455078,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "f5bb619c.343e3"
+ ]
+ ]
+ },
+ {
+ "id": "f5bb619c.343e3",
+ "type": "set",
+ "name": "set location-name",
+ "xml": "<set>\n<parameter name='prop.site.location-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1181.8994216918945,
+ "y": 221.5773057937622,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "6aa3af3.d91fd5",
+ "type": "switchNode",
+ "name": "switch address",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'address'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 838.8992385864258,
+ "y": 257.97725200653076,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "3614458a.d4ba8a"
+ ]
+ ]
+ },
+ {
+ "id": "3614458a.d4ba8a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1008.8990859985352,
+ "y": 265.97725105285645,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "8230e765.9acfa8"
+ ]
+ ]
+ },
+ {
+ "id": "8230e765.9acfa8",
+ "type": "set",
+ "name": "set location-address",
+ "xml": "<set>\n<parameter name='prop.site.location-address' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1196.8992614746094,
+ "y": 261.57722663879395,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "3a7c3a06.65f626",
+ "type": "switchNode",
+ "name": "switch postcode",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'postcode'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 839.8992385864258,
+ "y": 299.9772129058838,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "17049263.1424ae"
+ ]
+ ]
+ },
+ {
+ "id": "17049263.1424ae",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1004.8994102478027,
+ "y": 298.9772129058838,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "6c71f682.a61eb8"
+ ]
+ ]
+ },
+ {
+ "id": "6c71f682.a61eb8",
+ "type": "set",
+ "name": "set location-postcode",
+ "xml": "<set>\n<parameter name='prop.site.location-postcode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1191.8992614746094,
+ "y": 300.5772294998169,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "fd28eb0c.be3ba8",
+ "type": "switchNode",
+ "name": "switch controlPoint",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'controlPoint'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 829.7826614379883,
+ "y": 646.0042333602905,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "e84b540.ad3b8b"
+ ]
+ ]
+ },
+ {
+ "id": "e84b540.ad3b8b",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 991.782585144043,
+ "y": 642.0042562484741,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "6a601537.4b319c"
+ ]
+ ]
+ },
+ {
+ "id": "b2a19a82.68d928",
+ "type": "set",
+ "name": "set role",
+ "xml": "<set>\n<parameter name='prop.site.role' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",
+ "comments": "",
+ "x": 1363.7827529907227,
+ "y": 570.0042057037354,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "f2bf7a.aeab3088",
+ "type": "set",
+ "name": "set controlPoint",
+ "xml": "<set>\n<parameter name='prop.site.controlPoint' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",
+ "comments": "",
+ "x": 1737.7825927734375,
+ "y": 689.0043344497681,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "a54dec2e.97d4",
+ "type": "execute",
+ "name": "execute split roles",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.role`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.roles\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1391.448959350586,
+ "y": 619.0040884017944,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9cd4ca73.3ac2d8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1138.4490966796875,
+ "y": 599.0040884017944,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "b2a19a82.68d928",
+ "a54dec2e.97d4"
+ ]
+ ]
+ },
+ {
+ "id": "ba801506.77df48",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1555.4490089416504,
+ "y": 709.0040903091431,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "f2bf7a.aeab3088",
+ "7b2bb6bb.83c9d8"
+ ]
+ ]
+ },
+ {
+ "id": "7b2bb6bb.83c9d8",
+ "type": "execute",
+ "name": "execute split control points",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.controlPoint`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.controlpoints\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1762.4490699768066,
+ "y": 741.0041942596436,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "50debd23.9a1de4",
+ "type": "switchNode",
+ "name": "switch latitude",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'latitude'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 830.1155471801758,
+ "y": 344.00399017333984,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "58f650e6.ada6d"
+ ]
+ ]
+ },
+ {
+ "id": "58f650e6.ada6d",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1006.1153945922852,
+ "y": 339.00394916534424,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "536b62b7.33ab7c"
+ ]
+ ]
+ },
+ {
+ "id": "536b62b7.33ab7c",
+ "type": "set",
+ "name": "set location-latitude",
+ "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1180.1154022216797,
+ "y": 337.60396575927734,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "4dc3fc8d.6fd204",
+ "type": "switchNode",
+ "name": "switch longitude",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'longitude'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 833.1155471801758,
+ "y": 384.0040330886841,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "f395b1da.86ab9"
+ ]
+ ]
+ },
+ {
+ "id": "f395b1da.86ab9",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1005.1155548095703,
+ "y": 379.004075050354,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "7695df92.1105c"
+ ]
+ ]
+ },
+ {
+ "id": "7695df92.1105c",
+ "type": "set",
+ "name": "set location-longitude",
+ "xml": "<set>\n<parameter name='prop.site.location-longitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1187.1154098510742,
+ "y": 382.60392665863037,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "650d8fc0.b6389",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 996.1155548095703,
+ "y": 429.00407791137695,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "8334f7f2.2699d8"
+ ]
+ ]
+ },
+ {
+ "id": "d0f32787.0608d8",
+ "type": "set",
+ "name": "set emails",
+ "xml": "<set>\n<parameter name='prop.site.emails' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1354.115249633789,
+ "y": 397.6039299964905,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "b069280b.7f4bd8",
+ "type": "switchNode",
+ "name": "switch emails",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'emails'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 823.1156234741211,
+ "y": 429.00407791137695,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "650d8fc0.b6389"
+ ]
+ ]
+ },
+ {
+ "id": "cb890556.5aec68",
+ "type": "execute",
+ "name": "execute split emails",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.emails`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.email\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1379.781593322754,
+ "y": 444.00383281707764,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "8334f7f2.2699d8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1158.1155624389648,
+ "y": 430.0039954185486,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "d0f32787.0608d8",
+ "cb890556.5aec68"
+ ]
+ ]
+ },
+ {
+ "id": "8406a399.f2e3e",
+ "type": "switchNode",
+ "name": "switch description",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 836.0039291381836,
+ "y": 133.0039103301242,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "df39a5b0.38ab18"
+ ]
+ ]
+ },
+ {
+ "id": "df39a5b0.38ab18",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.00390625,
+ "y": 135.00390625,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "77e9385a.343e78"
+ ]
+ ]
+ },
+ {
+ "id": "77e9385a.343e78",
+ "type": "set",
+ "name": "set description",
+ "xml": "<set>\n<parameter name='prop.site.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1126.0039825439453,
+ "y": 135.60393619537354,
+ "z": "3ab9f09a.78056",
+ "wires": []
+ },
+ {
+ "id": "bbcae826.787888",
+ "type": "other",
+ "name": "outcome Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1353.00394821167,
+ "y": 483.00396156311035,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "b7d9fe5a.8e045"
+ ]
+ ]
+ },
+ {
+ "id": "4964090b.461a88",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1336.5042762756348,
+ "y": 531.0039215087891,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "69d26327.61da0c"
+ ]
+ ]
+ },
+ {
+ "id": "1b07ddd4.378392",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 949.8996047973633,
+ "y": 477.97730827331543,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "dc18071d.1bddd8"
+ ]
+ ]
+ },
+ {
+ "id": "dc18071d.1bddd8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1066.0039367675781,
+ "y": 480.00392055511475,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "46e35b04.b2e184"
+ ]
+ ]
+ },
+ {
+ "id": "46e35b04.b2e184",
+ "type": "switchNode",
+ "name": "switch value",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1196.0039405822754,
+ "y": 512.0039196014404,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "bbcae826.787888",
+ "4964090b.461a88"
+ ]
+ ]
+ },
+ {
+ "id": "b7d9fe5a.8e045",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1492.0039520263672,
+ "y": 483.00391960144043,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "6a601537.4b319c",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1129.00390625,
+ "y": 655.00390625,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "f5a10a50.3b7ee8"
+ ]
+ ]
+ },
+ {
+ "id": "f5a10a50.3b7ee8",
+ "type": "switchNode",
+ "name": "switch value",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1259.0039100646973,
+ "y": 687.0039052963257,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "9d775805.ce9a18",
+ "603a4c12.7819c4"
+ ]
+ ]
+ },
+ {
+ "id": "9d775805.ce9a18",
+ "type": "other",
+ "name": "outcome Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1416.0039176940918,
+ "y": 658.0039472579956,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "73c6eb1d.a33c74"
+ ]
+ ]
+ },
+ {
+ "id": "603a4c12.7819c4",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1399.5042457580566,
+ "y": 706.0039072036743,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ [
+ "ba801506.77df48"
+ ]
+ ]
+ },
+ {
+ "id": "73c6eb1d.a33c74",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1555.003921508789,
+ "y": 658.0039052963257,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b6ec51e3.02bd9",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic2.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'vf-module-site-params'\"/>\n<parameter name=\"field3\" value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 824.0000228881836,
+ "y": 33,
+ "z": "3ab9f09a.78056",
+ "wires": [
+ []
+ ]
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
index dbd911b5..30ccba9b 100644
--- a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
@@ -1,727 +1,859 @@
-[
- {
- "id": "439a8dde.a54294",
- "type": "dgstart",
- "name": "DGSTART",
- "outputs": 1,
- "x": 95,
- "y": 67,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "885d7f3c.d7635"
- ]
- ]
- },
- {
- "id": "885d7f3c.d7635",
- "type": "service-logic",
- "name": "GENERIC-RESOURCE-API ${project.version}",
- "module": "GENERIC-RESOURCE-API",
- "version": "${project.version}",
- "comments": "",
- "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
- "outputs": 1,
- "x": 307.00000381469727,
- "y": 139.0000171661377,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "715e2390.5052fc"
- ]
- ]
- },
- {
- "id": "715e2390.5052fc",
- "type": "method",
- "name": "sdwan-get-wan-param",
- "xml": "<method rpc='sdwan-get-wan-param' mode='sync'>\n",
- "comments": "",
- "outputs": 1,
- "x": 295.0001220703125,
- "y": 227,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "9d4aea5e.ef6f48"
- ]
- ]
- },
- {
- "id": "9d4aea5e.ef6f48",
- "type": "block",
- "name": "block : atomic",
- "xml": "<block atomic=\"true\">\n",
- "atomic": "false",
- "comments": "",
- "outputs": 1,
- "x": 302.00001525878906,
- "y": 313.0000581741333,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "6b944277.796b7c"
- ]
- ]
- },
- {
- "id": "6b944277.796b7c",
- "type": "for",
- "name": "for each sdwan-get-request-input-param",
- "xml": "<for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >\n\n",
- "comments": "",
- "outputs": 1,
- "x": 338.6667785644531,
- "y": 395.666654586792,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "37470750.b03bb8"
- ]
- ]
- },
- {
- "id": "37470750.b03bb8",
- "type": "block",
- "name": "block",
- "xml": "<block>\n",
- "atomic": "false",
- "comments": "",
- "outputs": 1,
- "x": 603.5002822875977,
- "y": 305.00004625320435,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "7ac07f9d.deb5a",
- "f51dc11b.c63d",
- "390047c.48de9b8",
- "19863ae8.c2ed05",
- "a84af135.691bc",
- "40a2ce76.5acb8",
- "743ccae1.1d4ed4",
- "da2a6768.0f1b08",
- "937e7e7c.abe2b",
- "d7a63229.55ffb",
- "52f8113f.08404",
- "dd33b364.8ca5b",
- "edbcab35.7a44e8",
- "d34e678f.eeed98",
- "54c67966.b6a9c8"
- ]
- ]
- },
- {
- "id": "7ac07f9d.deb5a",
- "type": "returnSuccess",
- "name": "return success",
- "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
- "comments": "",
- "x": 837.0006408691406,
- "y": 671.0003890991211,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "a84af135.691bc",
- "type": "switchNode",
- "name": "switch deviceName",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'deviceName'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 836.0000877380371,
- "y": 220.00005626678467,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "e491e463.e045e8"
- ]
- ]
- },
- {
- "id": "e491e463.e045e8",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1038.000494003296,
- "y": 221.00012683868408,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "946002ca.03b1f"
- ]
- ]
- },
- {
- "id": "946002ca.03b1f",
- "type": "set",
- "name": "set deviceName",
- "xml": "<set>\n<parameter name='prop.wan.deviceName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1190.0005569458008,
- "y": 218.60021209716797,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "d7a63229.55ffb",
- "type": "switchNode",
- "name": "switch vlanId",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'vlanId'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 828.8402290344238,
- "y": 406.00011920928955,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "d3962f14.7c3b3"
- ]
- ]
- },
- {
- "id": "d3962f14.7c3b3",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1013.8403167724609,
- "y": 404.0001497268677,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "1b718234.ee52ce"
- ]
- ]
- },
- {
- "id": "1b718234.ee52ce",
- "type": "set",
- "name": "set vlanId",
- "xml": "<set>\n<parameter name='prop.wan.vlanId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1161.1742248535156,
- "y": 401.4614086151123,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "390047c.48de9b8",
- "type": "switchNode",
- "name": "switch name",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 833.8951606750488,
- "y": 149.97332763671875,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "eba68f46.eff61"
- ]
- ]
- },
- {
- "id": "eba68f46.eff61",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1021.8952484130859,
- "y": 150.97335720062256,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "7dfe338e.aacb9c"
- ]
- ]
- },
- {
- "id": "7dfe338e.aacb9c",
- "type": "set",
- "name": "set name",
- "xml": "<set>\n<parameter name='prop.wan.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1171.8954982757568,
- "y": 145.57343292236328,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "da2a6768.0f1b08",
- "type": "switchNode",
- "name": "switch ipAddress",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'ipAddress'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 832.8954048156738,
- "y": 332.37682247161865,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "d6f71f04.c7866"
- ]
- ]
- },
- {
- "id": "d6f71f04.c7866",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1026.895652770996,
- "y": 333.37677097320557,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "65be0cd2.03f094"
- ]
- ]
- },
- {
- "id": "65be0cd2.03f094",
- "type": "set",
- "name": "set ipAddress",
- "xml": "<set>\n<parameter name='prop.wan.ipAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1179.2295608520508,
- "y": 331.8380317687988,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "937e7e7c.abe2b",
- "type": "switchNode",
- "name": "switch providerIpAddress",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'providerIpAddress'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 864.895565032959,
- "y": 367.3767442703247,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "d6c02774.fd7328"
- ]
- ]
- },
- {
- "id": "d6c02774.fd7328",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1040.8958168029785,
- "y": 367.3766899108887,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "86d16286.a90f7"
- ]
- ]
- },
- {
- "id": "86d16286.a90f7",
- "type": "set",
- "name": "set providerIpAddress",
- "xml": "<set>\n<parameter name='prop.wan.providerIpAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1207.2294006347656,
- "y": 367.8378715515137,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "dd33b364.8ca5b",
- "type": "switchNode",
- "name": "switch inputBandwidth",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'inputBandwidth'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 855.8953742980957,
- "y": 479.3765506744385,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "8c8b118b.1a16e"
- ]
- ]
- },
- {
- "id": "8c8b118b.1a16e",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1032.8955726623535,
- "y": 478.376615524292,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "52559144.3d725"
- ]
- ]
- },
- {
- "id": "52559144.3d725",
- "type": "set",
- "name": "set inputBandwidth",
- "xml": "<set>\n<parameter name='prop.wan.inputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1240.2293224334717,
- "y": 472.8377799987793,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "edbcab35.7a44e8",
- "type": "switchNode",
- "name": "switch outputBandwidth",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'outputBandwidth'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 861.8953742980957,
- "y": 518.3765506744385,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "9785a401.84f478"
- ]
- ]
- },
- {
- "id": "9785a401.84f478",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1045.8955707550049,
- "y": 518.3766593933105,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "29877f00.328f52"
- ]
- ]
- },
- {
- "id": "29877f00.328f52",
- "type": "set",
- "name": "set outputBandwidth",
- "xml": "<set>\n<parameter name='prop.wan.outputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1242.2293453216553,
- "y": 511.8377628326416,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "19863ae8.c2ed05",
- "type": "switchNode",
- "name": "switch description",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 840.8953132629395,
- "y": 183.3767032623291,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "c907441.ebe9bb8"
- ]
- ]
- },
- {
- "id": "c907441.ebe9bb8",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1032.8955574035645,
- "y": 184.3767328262329,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "1126e041.4a24d"
- ]
- ]
- },
- {
- "id": "1126e041.4a24d",
- "type": "set",
- "name": "set description",
- "xml": "<set>\n<parameter name='prop.wan.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1183.2295608520508,
- "y": 183.8379421234131,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "743ccae1.1d4ed4",
- "type": "switchNode",
- "name": "switch portNumber",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portNumber'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 844.228572845459,
- "y": 291.9943332672119,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "ebcd50b1.0b3d6"
- ]
- ]
- },
- {
- "id": "ebcd50b1.0b3d6",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1035.228744506836,
- "y": 294.9943628311157,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "a1a449ce.d26a18"
- ]
- ]
- },
- {
- "id": "a1a449ce.d26a18",
- "type": "set",
- "name": "set portNumber",
- "xml": "<set>\n<parameter name='prop.wan.portNumber' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1189.2290725708008,
- "y": 294.5943775177002,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "40a2ce76.5acb8",
- "type": "switchNode",
- "name": "switch portType",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portType'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 834.1236763000488,
- "y": 255.96763801574707,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "6ea5c966.7c8868"
- ]
- ]
- },
- {
- "id": "6ea5c966.7c8868",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1029.123764038086,
- "y": 255.96766757965088,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "f40a6475.4548d8"
- ]
- ]
- },
- {
- "id": "f40a6475.4548d8",
- "type": "set",
- "name": "set portType",
- "xml": "<set>\n<parameter name='prop.wan.portType' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1176.1240921020508,
- "y": 256.56768226623535,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "90cd2791.ea5778",
- "type": "set",
- "name": "set transportnetworkName",
- "xml": "<set>\n<parameter name='prop.wan.transportNetworkName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1288.9998302459717,
- "y": 437.38701152801514,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "c9247859.1c5528",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1077.6659240722656,
- "y": 438.92592906951904,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "90cd2791.ea5778"
- ]
- ]
- },
- {
- "id": "52f8113f.08404",
- "type": "switchNode",
- "name": "switch transportnetworkName",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'transportNetworkName'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 878.6657485961914,
- "y": 442.9256591796875,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "c9247859.1c5528"
- ]
- ]
- },
- {
- "id": "f51dc11b.c63d",
- "type": "switchNode",
- "name": "switch id",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'id'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 825.999340057373,
- "y": 117.38670539855957,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "ebf6555a.abbb88"
- ]
- ]
- },
- {
- "id": "ebf6555a.abbb88",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1026.9994812011719,
- "y": 115.3867359161377,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "1a802dda.2caca2"
- ]
- ]
- },
- {
- "id": "1a802dda.2caca2",
- "type": "set",
- "name": "set id",
- "xml": "<set>\n<parameter name='prop.wan.id' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1168.999828338623,
- "y": 110.98684310913086,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "d34e678f.eeed98",
- "type": "switchNode",
- "name": "switch devicePortId",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'devicePortId'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 847.0000610351562,
- "y": 563.0000381469727,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "67b4d68f.872058"
- ]
- ]
- },
- {
- "id": "67b4d68f.872058",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1046.0002269744873,
- "y": 557.000114440918,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "8e605ff5.22a2d"
- ]
- ]
- },
- {
- "id": "8e605ff5.22a2d",
- "type": "set",
- "name": "set devicePortId",
- "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1245.3339710235596,
- "y": 556.4612121582031,
- "z": "1a0d2992.253ae6",
- "wires": []
- },
- {
- "id": "54c67966.b6a9c8",
- "type": "switchNode",
- "name": "switch wanPortId",
- "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'wanPortId'`\">\n",
- "comments": "",
- "outputs": 1,
- "x": 837.0000610351562,
- "y": 599.0000400543213,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "cda45636.504778"
- ]
- ]
- },
- {
- "id": "cda45636.504778",
- "type": "outcomeTrue",
- "name": "true",
- "xml": "<outcome value='true'>\n",
- "comments": "",
- "outputs": 1,
- "x": 1048.0002250671387,
- "y": 592.0001173019409,
- "z": "1a0d2992.253ae6",
- "wires": [
- [
- "651ea7f2.7fd2a8"
- ]
- ]
- },
- {
- "id": "651ea7f2.7fd2a8",
- "type": "set",
- "name": "set wanPortId",
- "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
- "comments": "",
- "x": 1245.3339710235596,
- "y": 596.4612121582031,
- "z": "1a0d2992.253ae6",
- "wires": []
- }
-]
+[
+ {
+ "id": "818160d.1a87aa",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 116.01041412353516,
+ "y": 49.010414123535156,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "2c87f750.9ff0e8"
+ ]
+ ]
+ },
+ {
+ "id": "2c87f750.9ff0e8",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 253.01041793823242,
+ "y": 154.0104274749756,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "ff163fb7.14832"
+ ]
+ ]
+ },
+ {
+ "id": "ff163fb7.14832",
+ "type": "method",
+ "name": "sdwan-get-wan-param",
+ "xml": "<method rpc='sdwan-get-wan-param' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 241.01053619384766,
+ "y": 242.0104103088379,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "352c95ce.453cea"
+ ]
+ ]
+ },
+ {
+ "id": "352c95ce.453cea",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 248.01042938232422,
+ "y": 328.0104684829712,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "52293f30.d5b77"
+ ]
+ ]
+ },
+ {
+ "id": "52293f30.d5b77",
+ "type": "for",
+ "name": "for each sdwan-get-request-input-param",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 284.6771926879883,
+ "y": 410.6770648956299,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "e8d20d4.02e64f"
+ ]
+ ]
+ },
+ {
+ "id": "e8d20d4.02e64f",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 549.5106964111328,
+ "y": 320.01045656204224,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "2847b0ea.9ebb",
+ "d4feaef6.6438f",
+ "3e47338e.c3ab3c",
+ "91d20588.adacd8",
+ "43f318cb.2f4418",
+ "49351eca.09882",
+ "a41eaf2.439f75",
+ "9005e8e9.34f768",
+ "a55d2183.cf6a",
+ "c8c85e46.4f10f",
+ "286e48cc.e48988",
+ "383fea5a.143066",
+ "18a75045.9bb5e",
+ "60fcaabc.ca5bf4",
+ "d17b4c90.52ccd",
+ "2a13a6a0.eb644a",
+ "19ce9dfd.f8a2f2",
+ "a399cdca.37b7a"
+ ]
+ ]
+ },
+ {
+ "id": "2847b0ea.9ebb",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 781.0111198425293,
+ "y": 804.0109233856201,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "43f318cb.2f4418",
+ "type": "switchNode",
+ "name": "switch deviceName",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 782.0105018615723,
+ "y": 235.01046657562256,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "510fde76.25775"
+ ]
+ ]
+ },
+ {
+ "id": "510fde76.25775",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 984.010908126831,
+ "y": 236.01053714752197,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "bacc1950.a6e0e8"
+ ]
+ ]
+ },
+ {
+ "id": "bacc1950.a6e0e8",
+ "type": "set",
+ "name": "set deviceName",
+ "xml": "<set>\n<parameter name='prop.wan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1148.0111656188965,
+ "y": 232.6106538772583,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "c8c85e46.4f10f",
+ "type": "switchNode",
+ "name": "switch vlanId",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 763.8506278991699,
+ "y": 465.01052474975586,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "5ea3c659.f0cd28"
+ ]
+ ]
+ },
+ {
+ "id": "5ea3c659.f0cd28",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 948.850715637207,
+ "y": 463.010555267334,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "a7e47063.77624"
+ ]
+ ]
+ },
+ {
+ "id": "a7e47063.77624",
+ "type": "set",
+ "name": "set vlanId",
+ "xml": "<set>\n<parameter name='prop.wan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1096.1846237182617,
+ "y": 460.4718141555786,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "3e47338e.c3ab3c",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 779.905574798584,
+ "y": 164.98373794555664,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "69feffe1.51e2a"
+ ]
+ ]
+ },
+ {
+ "id": "69feffe1.51e2a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 967.9056625366211,
+ "y": 165.98376750946045,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "8d991bb4.b45f18"
+ ]
+ ]
+ },
+ {
+ "id": "8d991bb4.b45f18",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.wan.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1117.905912399292,
+ "y": 160.58384323120117,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "9005e8e9.34f768",
+ "type": "switchNode",
+ "name": "switch ipAddress",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 767.9058036804199,
+ "y": 391.38722801208496,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "cf4b6fa5.dfd8b"
+ ]
+ ]
+ },
+ {
+ "id": "cf4b6fa5.dfd8b",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 961.9060516357422,
+ "y": 392.3871765136719,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "abac1fea.19c24"
+ ]
+ ]
+ },
+ {
+ "id": "abac1fea.19c24",
+ "type": "set",
+ "name": "set ipAddress",
+ "xml": "<set>\n<parameter name='prop.wan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1114.2399597167969,
+ "y": 390.84843730926514,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "a55d2183.cf6a",
+ "type": "switchNode",
+ "name": "switch providerIpAddress",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'providerIpAddress'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 799.9059638977051,
+ "y": 426.387149810791,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "b70a8774.407208"
+ ]
+ ]
+ },
+ {
+ "id": "b70a8774.407208",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 975.9062156677246,
+ "y": 426.387095451355,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "a3935f63.e64dc"
+ ]
+ ]
+ },
+ {
+ "id": "a3935f63.e64dc",
+ "type": "set",
+ "name": "set providerIpAddress",
+ "xml": "<set>\n<parameter name='prop.wan.providerIpAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1142.2397994995117,
+ "y": 426.84827709198,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "383fea5a.143066",
+ "type": "switchNode",
+ "name": "switch inputBandwidth",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'inputBandwidth'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 790.9057731628418,
+ "y": 538.3869562149048,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "45b075bc.f36a3c"
+ ]
+ ]
+ },
+ {
+ "id": "45b075bc.f36a3c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 967.9059715270996,
+ "y": 537.3870210647583,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "7f4d1606.062148"
+ ]
+ ]
+ },
+ {
+ "id": "7f4d1606.062148",
+ "type": "set",
+ "name": "set inputBandwidth",
+ "xml": "<set>\n<parameter name='prop.wan.inputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1175.2397212982178,
+ "y": 531.8481855392456,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "18a75045.9bb5e",
+ "type": "switchNode",
+ "name": "switch outputBandwidth",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'outputBandwidth'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 796.9057731628418,
+ "y": 577.3869562149048,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "2be3aa98.e7daa6"
+ ]
+ ]
+ },
+ {
+ "id": "2be3aa98.e7daa6",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.905969619751,
+ "y": 577.3870649337769,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "7e2e3a9b.578594"
+ ]
+ ]
+ },
+ {
+ "id": "7e2e3a9b.578594",
+ "type": "set",
+ "name": "set outputBandwidth",
+ "xml": "<set>\n<parameter name='prop.wan.outputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1177.2397441864014,
+ "y": 570.8481683731079,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "91d20588.adacd8",
+ "type": "switchNode",
+ "name": "switch description",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 786.9057273864746,
+ "y": 198.387113571167,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "8acddcca.d85a2"
+ ]
+ ]
+ },
+ {
+ "id": "8acddcca.d85a2",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 978.9059715270996,
+ "y": 199.3871431350708,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "f82affc6.722b5"
+ ]
+ ]
+ },
+ {
+ "id": "f82affc6.722b5",
+ "type": "set",
+ "name": "set description",
+ "xml": "<set>\n<parameter name='prop.wan.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1129.239974975586,
+ "y": 198.84835243225098,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "a41eaf2.439f75",
+ "type": "switchNode",
+ "name": "switch portNumber",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 779.2389717102051,
+ "y": 351.0047388076782,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "9190cac8.65bcb8"
+ ]
+ ]
+ },
+ {
+ "id": "9190cac8.65bcb8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 970.239143371582,
+ "y": 354.00476837158203,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "bc0c9c4f.ffd6c"
+ ]
+ ]
+ },
+ {
+ "id": "bc0c9c4f.ffd6c",
+ "type": "set",
+ "name": "set portNumber",
+ "xml": "<set>\n<parameter name='prop.wan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1124.2394714355469,
+ "y": 353.6047830581665,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "49351eca.09882",
+ "type": "switchNode",
+ "name": "switch portType",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 780.134090423584,
+ "y": 270.97804832458496,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "9c7436d2.ff2978"
+ ]
+ ]
+ },
+ {
+ "id": "9c7436d2.ff2978",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 975.1341781616211,
+ "y": 270.97807788848877,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "45817322.3ae1fc"
+ ]
+ ]
+ },
+ {
+ "id": "45817322.3ae1fc",
+ "type": "set",
+ "name": "set portType",
+ "xml": "<set>\n<parameter name='prop.wan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1122.134506225586,
+ "y": 271.57809257507324,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "c9e43e20.584a3",
+ "type": "set",
+ "name": "set transportnetworkName",
+ "xml": "<set>\n<parameter name='prop.wan.transportNetworkName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1224.0102291107178,
+ "y": 496.39741706848145,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "878c2a18.4ab5f8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1012.6763229370117,
+ "y": 497.93633460998535,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "c9e43e20.584a3"
+ ]
+ ]
+ },
+ {
+ "id": "286e48cc.e48988",
+ "type": "switchNode",
+ "name": "switch transportnetworkName",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'transportNetworkName'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 813.6761474609375,
+ "y": 501.9360647201538,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "878c2a18.4ab5f8"
+ ]
+ ]
+ },
+ {
+ "id": "d4feaef6.6438f",
+ "type": "switchNode",
+ "name": "switch id",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'id'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 772.0097541809082,
+ "y": 132.39711570739746,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "c4e97c71.2edee"
+ ]
+ ]
+ },
+ {
+ "id": "c4e97c71.2edee",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 973.009895324707,
+ "y": 130.3971462249756,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "fa0065d4.357e68"
+ ]
+ ]
+ },
+ {
+ "id": "fa0065d4.357e68",
+ "type": "set",
+ "name": "set id",
+ "xml": "<set>\n<parameter name='prop.wan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1115.0102424621582,
+ "y": 125.99725341796875,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "60fcaabc.ca5bf4",
+ "type": "switchNode",
+ "name": "switch devicePortId",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 782.0104598999023,
+ "y": 622.010443687439,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "642147fe.576a98"
+ ]
+ ]
+ },
+ {
+ "id": "642147fe.576a98",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 981.0106258392334,
+ "y": 616.0105199813843,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "fd4863f3.2dd12"
+ ]
+ ]
+ },
+ {
+ "id": "fd4863f3.2dd12",
+ "type": "set",
+ "name": "set devicePortId",
+ "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1180.3443698883057,
+ "y": 615.4716176986694,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "d17b4c90.52ccd",
+ "type": "switchNode",
+ "name": "switch wanPortId",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'wanPortId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 772.0104598999023,
+ "y": 658.0104455947876,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "f3f82bbf.a22db8"
+ ]
+ ]
+ },
+ {
+ "id": "f3f82bbf.a22db8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 983.0106239318848,
+ "y": 651.0105228424072,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "9cec917d.42e1c"
+ ]
+ ]
+ },
+ {
+ "id": "9cec917d.42e1c",
+ "type": "set",
+ "name": "set wanPortId",
+ "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1180.3443698883057,
+ "y": 655.4716176986694,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "e6f5b113.db834",
+ "type": "set",
+ "name": "set apn",
+ "xml": "<set>\n<parameter name='prop.wan.apn-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1121.0000076293945,
+ "y": 310.01041412353516,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "2a13a6a0.eb644a",
+ "type": "switchNode",
+ "name": "switch apn",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'apn'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 770.0000076293945,
+ "y": 309.01041412353516,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "cd547003.96af2"
+ ]
+ ]
+ },
+ {
+ "id": "cd547003.96af2",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 965.0000953674316,
+ "y": 309.01044368743896,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "e6f5b113.db834"
+ ]
+ ]
+ },
+ {
+ "id": "19ce9dfd.f8a2f2",
+ "type": "switchNode",
+ "name": "switch publicIP",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'publicIP'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 768.0000305175781,
+ "y": 701.0104351043701,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "fadc805c.91335"
+ ]
+ ]
+ },
+ {
+ "id": "fadc805c.91335",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 977.0002021789551,
+ "y": 696.010516166687,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "bda8c6bd.b7ac88"
+ ]
+ ]
+ },
+ {
+ "id": "bda8c6bd.b7ac88",
+ "type": "set",
+ "name": "set publicIP",
+ "xml": "<set>\n<parameter name='prop.wan.publicIP' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1182.3338661193848,
+ "y": 694.4716167449951,
+ "z": "83799888.3d8488",
+ "wires": []
+ },
+ {
+ "id": "a399cdca.37b7a",
+ "type": "switchNode",
+ "name": "switch IPMode",
+ "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 778.0000305175781,
+ "y": 742.0104360580444,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "728b6eda.0249c"
+ ]
+ ]
+ },
+ {
+ "id": "728b6eda.0249c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 977.0002822875977,
+ "y": 741.0105991363525,
+ "z": "83799888.3d8488",
+ "wires": [
+ [
+ "43404525.61dcfc"
+ ]
+ ]
+ },
+ {
+ "id": "43404525.61dcfc",
+ "type": "set",
+ "name": "set IPMode",
+ "xml": "<set>\n<parameter name='prop.wan.IPMode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",
+ "comments": "",
+ "x": 1188.3339176177979,
+ "y": 739.471586227417,
+ "z": "83799888.3d8488",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json
new file mode 100644
index 00000000..d02748ca
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json
@@ -0,0 +1,1123 @@
+[
+ {
+ "id": "66d617ca.7974e8",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 166.00390625,
+ "y": 42.000000953674316,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "ec960184.8c747"
+ ]
+ ]
+ },
+ {
+ "id": "ec960184.8c747",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 245.28961181640625,
+ "y": 104.23811054229736,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "b566667e.9703e8"
+ ]
+ ]
+ },
+ {
+ "id": "b566667e.9703e8",
+ "type": "method",
+ "name": "method sdwan-vf-operation-device-activate",
+ "xml": "<method rpc='sdwan-vf-operation-device-activate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 257.00390625,
+ "y": 198.58634281158447,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "48de3c23.140fd4"
+ ]
+ ]
+ },
+ {
+ "id": "48de3c23.140fd4",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 243.6705780029297,
+ "y": 383.6667146682739,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "9b8b15e3.9d27d8",
+ "22c945bf.bff90a",
+ "7a7ac9c1.d1c088",
+ "3bb5998d.d31786",
+ "6b9873c1.ed3cac",
+ "496cf1c2.09334",
+ "ab75124f.85f25",
+ "b9df134a.f3234",
+ "ad243b23.84cc68",
+ "d63a100a.4fb85",
+ "fba80bcb.537e38",
+ "45830f23.d0369",
+ "d2ac70a8.01bbc",
+ "104a605b.c517a",
+ "2b5c22d1.d99c1e",
+ "673290e1.c0902",
+ "4d09bded.34c944",
+ "d9f0bb67.a6d688"
+ ]
+ ]
+ },
+ {
+ "id": "22c945bf.bff90a",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 589.035270690918,
+ "y": 278.2691421508789,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "936d4e00.f8f0f"
+ ]
+ ]
+ },
+ {
+ "id": "9b8b15e3.9d27d8",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 594.0039253234863,
+ "y": 217.0000114440918,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "e59760b9.c5416"
+ ]
+ ]
+ },
+ {
+ "id": "e59760b9.c5416",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 774.00390625,
+ "y": 216.00000095367432,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "76bc4811.c948a8"
+ ]
+ ]
+ },
+ {
+ "id": "76bc4811.c948a8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 923.4326324462891,
+ "y": 217.14291858673096,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "936d4e00.f8f0f",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 812.0039215087891,
+ "y": 279.0000071525574,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "70d6072a.9e11d8"
+ ]
+ ]
+ },
+ {
+ "id": "70d6072a.9e11d8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1027.00390625,
+ "y": 277.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "ea0a9e13.79435"
+ ]
+ ]
+ },
+ {
+ "id": "ea0a9e13.79435",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1191.00390625,
+ "y": 272.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "7a7ac9c1.d1c088",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 639.0039138793945,
+ "y": 349.99999141693115,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "f88f2a92.99e738",
+ "cbbc80b7.cd82",
+ "d281c228.3bb21"
+ ]
+ ]
+ },
+ {
+ "id": "cbbc80b7.cd82",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 861.00390625,
+ "y": 384.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "3e09921b.36399e"
+ ]
+ ]
+ },
+ {
+ "id": "f88f2a92.99e738",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 866.0039024353027,
+ "y": 331,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "3e09921b.36399e"
+ ]
+ ]
+ },
+ {
+ "id": "3e09921b.36399e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1024.00390625,
+ "y": 344.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "d281c228.3bb21",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 861.00390625,
+ "y": 445.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "8e3c57a1.dadbf8"
+ ]
+ ]
+ },
+ {
+ "id": "8c0936c1.7617c8",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1215.003921508789,
+ "y": 443.0000149011612,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "8e3c57a1.dadbf8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1022.0039520263672,
+ "y": 441.99999237060547,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "8c0936c1.7617c8",
+ "28692055.9016f",
+ "a8eb8c24.f4a0f"
+ ]
+ ]
+ },
+ {
+ "id": "28692055.9016f",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1234.003890991211,
+ "y": 495.99999141693115,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "73f639ab.d244b8"
+ ]
+ ]
+ },
+ {
+ "id": "73f639ab.d244b8",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1477.00390625,
+ "y": 491.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "fdba254c.4c6898"
+ ]
+ ]
+ },
+ {
+ "id": "fdba254c.4c6898",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1675.0039348602295,
+ "y": 478.00000762939453,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "e324ecda.ee495"
+ ]
+ ]
+ },
+ {
+ "id": "e324ecda.ee495",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1827.00390625,
+ "y": 480.0000009536743,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "a7ad0572.bfda18",
+ "1d9eaeb3.112c31",
+ "96aaf259.9b5e1"
+ ]
+ ]
+ },
+ {
+ "id": "a7ad0572.bfda18",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vf-module-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2076.004005432129,
+ "y": 474.0000033378601,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "1d9eaeb3.112c31",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2065.004005432129,
+ "y": 525.000036239624,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "96aaf259.9b5e1",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-device-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2096.0042114257812,
+ "y": 572.0000371932983,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "6b9873c1.ed3cac",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Provided alloted resource length\"/>\n<parameter name=\"field3\" value=\"'parameters length'\"/>\n<parameter name=\"field4\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 554.0039806365967,
+ "y": 576.0000066757202,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "3bb5998d.d31786",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 578.0351257324219,
+ "y": 523.016074180603,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "68156871.093ed8"
+ ]
+ ]
+ },
+ {
+ "id": "68156871.093ed8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 725.4637680053711,
+ "y": 522.5874843597412,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "749cf44f.03bbfc"
+ ]
+ ]
+ },
+ {
+ "id": "749cf44f.03bbfc",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 874.8924942016602,
+ "y": 523.7304019927979,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "b9df134a.f3234",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 585.0351448059082,
+ "y": 625.0160593986511,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "fa016c6e.8bda5",
+ "type": "comment",
+ "name": "make sure this VNF doesn't exist already",
+ "info": "",
+ "comments": "",
+ "x": 1307.4205932617188,
+ "y": 1212.2502059936523,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "2b5c22d1.d99c1e",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create Devcie Instance",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 673.0080718994141,
+ "y": 1216.424148797989,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "9ca787d1.dfba38",
+ "a187483b.9fc538"
+ ]
+ ]
+ },
+ {
+ "id": "69b97572.5eed5c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1074.6745147705078,
+ "y": 1186.3128004074097,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d59ec52f.21c8f8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Activate Device rest api\" />\n",
+ "comments": "",
+ "x": 1076.1190948486328,
+ "y": 1236.868332862854,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "a187483b.9fc538",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 923.1189384460449,
+ "y": 1239.8682870864868,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "d59ec52f.21c8f8"
+ ]
+ ]
+ },
+ {
+ "id": "9ca787d1.dfba38",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 922.5634536743164,
+ "y": 1183.5349988937378,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "69b97572.5eed5c"
+ ]
+ ]
+ },
+ {
+ "id": "104a605b.c517a",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 590.0001373291016,
+ "y": 1160.5913829803467,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "ab75124f.85f25",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 552.0041103363037,
+ "y": 1641.5002851486206,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "496cf1c2.09334",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 597.3373680114746,
+ "y": 1531.8336429595947,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "5763663a.274778",
+ "type": "save",
+ "name": "update deviceInstance configuration in AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='Active' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 632.6708755493164,
+ "y": 1584.722743988037,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "fba80bcb.537e38",
+ "type": "set",
+ "name": "set deviceId to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value=\"deviceId\" />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />\n",
+ "comments": "",
+ "x": 593.6709938049316,
+ "y": 1315.7538223266602,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "ad243b23.84cc68",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 576.0041046142578,
+ "y": 1474.2504119873047,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "d9f0bb67.a6d688",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 620.0086822509766,
+ "y": 725.8936567306519,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "24c130a1.06544",
+ "1c6d2fc3.9d47f",
+ "d711f941.efb278"
+ ]
+ ]
+ },
+ {
+ "id": "24c130a1.06544",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 865.008659362793,
+ "y": 668.8936103284359,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "e6538e05.e2e95"
+ ]
+ ]
+ },
+ {
+ "id": "1c6d2fc3.9d47f",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 868.499626159668,
+ "y": 716.4676459729671,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "8c8ed57c.0ce668"
+ ]
+ ]
+ },
+ {
+ "id": "d711f941.efb278",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 863.832633972168,
+ "y": 757.8009589612484,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "37c7dcba.fd9d34"
+ ]
+ ]
+ },
+ {
+ "id": "e6538e05.e2e95",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1062.5087203979492,
+ "y": 656.8936103284359,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "8c8ed57c.0ce668",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1045.0710372924805,
+ "y": 704.7533820569515,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "37c7dcba.fd9d34",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1051.6051902770996,
+ "y": 753.24015173316,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "4d09bded.34c944",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 628.008659362793,
+ "y": 833.893609046936,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "68b0f825.949708",
+ "3ec68637.c0dbea"
+ ]
+ ]
+ },
+ {
+ "id": "68b0f825.949708",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 867.008731842041,
+ "y": 811.8936405181885,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "ea7ef978.26d9b8"
+ ]
+ ]
+ },
+ {
+ "id": "3ec68637.c0dbea",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 859.258731842041,
+ "y": 865.5365238189697,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "6b38fd7f.9697a4"
+ ]
+ ]
+ },
+ {
+ "id": "ea7ef978.26d9b8",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1017.008659362793,
+ "y": 812.893609046936,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "6b38fd7f.9697a4",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 1012.008731842041,
+ "y": 865.286584854126,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "d2ac70a8.01bbc",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 549.7587051391602,
+ "y": 1079.8937320709229,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "c50d0af9.6eaaa8"
+ ]
+ ]
+ },
+ {
+ "id": "c50d0af9.6eaaa8",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create network orchestration",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"orchestration-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 868.2587966918945,
+ "y": 1082.8938932418823,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "673290e1.c0902",
+ "type": "get-resource",
+ "name": "get-resource service-subscription",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-subscription\" \n key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type \n AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'\n force=\"true\" pfx=\"tmp.AnAI-data\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 604.0802001953125,
+ "y": 984.5722246170044,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "3dede820.fe1e48",
+ "221b4119.4d74ce"
+ ]
+ ]
+ },
+ {
+ "id": "a417e40c.ac4638",
+ "type": "switchNode",
+ "name": "switch temp-ub-sub-account-id",
+ "xml": "<switch test='`$tmp.AnAI-data.temp-ub-sub-account-id`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1016.0802917480469,
+ "y": 949.3223056793213,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "d1aef225.461ff",
+ "30bdca8a.d90ec6"
+ ]
+ ]
+ },
+ {
+ "id": "d1aef225.461ff",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1208.794750213623,
+ "y": 923.322338104248,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "b031c826.3fa048"
+ ]
+ ]
+ },
+ {
+ "id": "30bdca8a.d90ec6",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1209.080307006836,
+ "y": 978.3223094940186,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "85a88d68.7da4e"
+ ]
+ ]
+ },
+ {
+ "id": "927bbae7.3f69d8",
+ "type": "set",
+ "name": "set prop.tenant-id",
+ "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tmp.AnAI-data.temp-ub-sub-account-id`' />\n",
+ "comments": "",
+ "x": 1456.5088996887207,
+ "y": 1063.4651098251343,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "b031c826.3fa048",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1348.2586479187012,
+ "y": 923.6436066627502,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "e230776c.5a9d58",
+ "3aed4c7a.4aaa14",
+ "be32cece.2100a",
+ "e41ff38c.c7009",
+ "93c1362e.aa2c78",
+ "a9cddfc0.c31fc",
+ "7328f02d.f9128"
+ ]
+ ]
+ },
+ {
+ "id": "e41ff38c.c7009",
+ "type": "set",
+ "name": "set prop.customer-id",
+ "xml": "<set>\n<parameter name='prop.customer-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id`' />\n",
+ "comments": "",
+ "x": 1559.901756286621,
+ "y": 734.2151670455933,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "e230776c.5a9d58",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create tenant",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-tenant.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1618.9015731811523,
+ "y": 864.7864580154419,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "3aed4c7a.4aaa14",
+ "type": "set",
+ "name": "set prop.tenant-id",
+ "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />\n",
+ "comments": "",
+ "x": 1561.7588653564453,
+ "y": 962.6436986923218,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "be32cece.2100a",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create tenant auth",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1637.2588348388672,
+ "y": 1013.3937277793884,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "93c1362e.aa2c78",
+ "type": "get-resource",
+ "name": "update-resource customer-id in service-subscription",
+ "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-subscription\" \n key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type \n AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'>\n<parameter name='temp-ub-sub-account-id' value='`$tenant-result.data.tenantId`' />\n<!--parameter name='temp-ub-sub-account-id' value='`$prop.customer-id`' /-->\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1660.1873016357422,
+ "y": 915.7865858078003,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "3dede820.fe1e48",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 814.5800628662109,
+ "y": 957.3182830810547,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "a417e40c.ac4638"
+ ]
+ ]
+ },
+ {
+ "id": "221b4119.4d74ce",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 808.2586517333984,
+ "y": 1009.5325946807861,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "13b27219.75f72e"
+ ]
+ ]
+ },
+ {
+ "id": "13b27219.75f72e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 961.0086517333984,
+ "y": 1009.2826557159424,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "85a88d68.7da4e",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1267.7310638427734,
+ "y": 1061.4693012237549,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ [
+ "927bbae7.3f69d8",
+ "cc5300b4.c716d"
+ ]
+ ]
+ },
+ {
+ "id": "cc5300b4.c716d",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create tenant auth",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1539.1596603393555,
+ "y": 1110.0407037734985,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a9cddfc0.c31fc",
+ "type": "set",
+ "name": "set prop.userAccount",
+ "xml": "<set>\n<parameter name='prop.userAccount' value='`$tmp.userAccountEmail`' />\n<parameter name='prop.userEmail' value='`$tmp.userAccountEmail`' />",
+ "comments": "",
+ "x": 1571.008659362793,
+ "y": 816.889702796936,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "7328f02d.f9128",
+ "type": "execute",
+ "name": "execute concat customer-id and @test.com",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n <parameter name=\"source\" value='`$prop.customer-id`'/>\n <parameter name=\"outputPath\" value=\"tmp.userAccountEmail\"/>\n <parameter name=\"target\" value=\"@test.com\"/>\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1635.0125350952148,
+ "y": 775.8936452865601,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a8eb8c24.f4a0f",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic1.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"vf-module-id-input\"/>\n<parameter name=\"field3\" value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`'/>\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1182.3333740234375,
+ "y": 378,
+ "z": "487c8439.e79e0c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d63a100a.4fb85",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",
+ "comments": "",
+ "x": 597.0001373291016,
+ "y": 1410.3333740234375,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ },
+ {
+ "id": "45830f23.d0369",
+ "type": "set",
+ "name": "increment param length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",
+ "comments": "",
+ "x": 580.0000553131104,
+ "y": 1360.0000801086426,
+ "z": "487c8439.e79e0c",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json
new file mode 100644
index 00000000..d7e57be9
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json
@@ -0,0 +1,531 @@
+[
+ {
+ "id": "b9b83207.589ec",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1124.8294982910156,
+ "y": 251.16278839111328,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "8cae152d.7cd218"
+ ]
+ ]
+ },
+ {
+ "id": "e1800fba.baf5f",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 414.5,
+ "y": 144.99999237060547,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "6d32e66a.a8bcf8"
+ ]
+ ]
+ },
+ {
+ "id": "6d32e66a.a8bcf8",
+ "type": "method",
+ "name": "sdwan-vf-operation-device-create",
+ "xml": "<method rpc='sdwan-vf-operation-device-create' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 413.5,
+ "y": 244.99999237060547,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "1cc250f1.53fd7f"
+ ]
+ ]
+ },
+ {
+ "id": "9c8db0b.eb2055",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 244,
+ "y": 56,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "e1800fba.baf5f"
+ ]
+ ]
+ },
+ {
+ "id": "1cc250f1.53fd7f",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 572.4999847412109,
+ "y": 361.0000009536743,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "3397e2d.64c521e",
+ "92ec911d.95b14",
+ "fa9c393f.4d0eb8",
+ "1192cb09.4cd2d5",
+ "3e5eeaad.69c6b6",
+ "7e451b6c.fd6624",
+ "f6264050.f42d5",
+ "9e2c8c11.572dc",
+ "407f8a81.546654",
+ "f1088162.3598e",
+ "4489ad98.445654",
+ "860ccaf0.19f1e8"
+ ]
+ ]
+ },
+ {
+ "id": "3397e2d.64c521e",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 872.8294067382812,
+ "y": 252.49612522125244,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "b9b83207.589ec"
+ ]
+ ]
+ },
+ {
+ "id": "1913a60e.b7faaa",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1496.4959869384766,
+ "y": 253.16279125213623,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "8cae152d.7cd218",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1343.1628150939941,
+ "y": 253.16277027130127,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "1913a60e.b7faaa"
+ ]
+ ]
+ },
+ {
+ "id": "1192cb09.4cd2d5",
+ "type": "for",
+ "name": "for loop idx - VF input parameters",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 946.7501907348633,
+ "y": 474.66665840148926,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "f80594ca.7a0348"
+ ]
+ ]
+ },
+ {
+ "id": "f80594ca.7a0348",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1161.5285339355469,
+ "y": 472.2222423553467,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "99d262e0.f0c14",
+ "9b7ec3.98d4c14"
+ ]
+ ]
+ },
+ {
+ "id": "99d262e0.f0c14",
+ "type": "execute",
+ "name": "execute split parameterName",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1357.7847366333008,
+ "y": 449.97038078308105,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9b7ec3.98d4c14",
+ "type": "set",
+ "name": "set parameterName",
+ "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+ "comments": "",
+ "x": 1327.2291641235352,
+ "y": 486.97049713134766,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "1ce3af0c.391b61",
+ "type": "comment",
+ "name": "Take the parameter names by removing prefix",
+ "info": "",
+ "comments": "",
+ "x": 1330.7503929138184,
+ "y": 409.33332681655884,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "92ec911d.95b14",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 887.25,
+ "y": 207.9999942779541,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "1b06d72a.f85559"
+ ]
+ ]
+ },
+ {
+ "id": "1b06d72a.f85559",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1073.9166793823242,
+ "y": 207.3332920074463,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "7e3909f0.27dd48"
+ ]
+ ]
+ },
+ {
+ "id": "7e3909f0.27dd48",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1255.5833053588867,
+ "y": 207.3332920074463,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "fa9c393f.4d0eb8",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 928.4999895095825,
+ "y": 327.9999952316284,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "fe3884f5.3db408",
+ "f43025e1.350458"
+ ]
+ ]
+ },
+ {
+ "id": "fe3884f5.3db408",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1159.5,
+ "y": 303.99999237060547,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "ec84c7cd.2c42f8"
+ ]
+ ]
+ },
+ {
+ "id": "f43025e1.350458",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1159.5,
+ "y": 343.99999237060547,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "3d425c4c.b021a4"
+ ]
+ ]
+ },
+ {
+ "id": "ec84c7cd.2c42f8",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='0' />\n",
+ "comments": "",
+ "x": 1302,
+ "y": 303.99999237060547,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "3d425c4c.b021a4",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1303.8570442199707,
+ "y": 343.9365043640137,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "30d4aa0b.cee996",
+ "8e933b3.56987c8"
+ ]
+ ]
+ },
+ {
+ "id": "8e933b3.56987c8",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1456.555519104004,
+ "y": 313.5556030566804,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "30d4aa0b.cee996",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1512.9840240478516,
+ "y": 366.7777328491211,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "40a39312.e2cd5c"
+ ]
+ ]
+ },
+ {
+ "id": "f966e582.bd5968",
+ "type": "comment",
+ "name": "make sure this network doesn't exist already",
+ "info": "",
+ "comments": "",
+ "x": 1736.6347541809082,
+ "y": 325.03179025650024,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "40a39312.e2cd5c",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1788.2697448730469,
+ "y": 366.34923553466797,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "d61c18df.dc4958"
+ ]
+ ]
+ },
+ {
+ "id": "d61c18df.dc4958",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1688.999942779541,
+ "y": 424.9206666946411,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ [
+ "d629e081.56166"
+ ]
+ ]
+ },
+ {
+ "id": "d629e081.56166",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",
+ "comments": "",
+ "x": 1836.7500457763672,
+ "y": 424.7778587634675,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "407f8a81.546654",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.device-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<!--parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' /-->\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n",
+ "comments": "",
+ "x": 940.3531951904297,
+ "y": 754.4962153434753,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "9e2c8c11.572dc",
+ "type": "execute",
+ "name": "execute generate-vf-module-index",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.device-vf-index\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 948.6866912841797,
+ "y": 701.1629481315613,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f6264050.f42d5",
+ "type": "set",
+ "name": "set new vf-module_length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",
+ "comments": "",
+ "x": 922.6866683959961,
+ "y": 647.162841796875,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "3e5eeaad.69c6b6",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",
+ "comments": "",
+ "x": 937.6863288879395,
+ "y": 537.1542224884033,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "7e451b6c.fd6624",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-device-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 963.6867065429688,
+ "y": 593.1544561386108,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f1088162.3598e",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.device-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 935.5000877380371,
+ "y": 805.0000605583191,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "4489ad98.445654",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",
+ "comments": "",
+ "x": 943.0001907348633,
+ "y": 853.0000247955322,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ },
+ {
+ "id": "a1ffaa29.5bb868",
+ "type": "save",
+ "name": "save sdwan vpn resource in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n key='site-resource.site-resource-id = $prop.site-vf-index' >\n<parameter name='site-resource-id' value='`$prop.site-vf-index`' />\n<parameter name='site-resource-name' value='`$prop.site.name`' />\n<parameter name='description' value='`$prop.site.description`' />\n<parameter name='type' value='`$prop.site.type`' />\n<parameter name='role' value='`$prop.site.role`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 947.5000419616699,
+ "y": 899.4999761581421,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "503ce76b.44e798",
+ "type": "save",
+ "name": "save service relationship in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 946.4999847412109,
+ "y": 946.5000238418579,
+ "z": "c7d3e3a8.96c6a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "860ccaf0.19f1e8",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 895.2225151062012,
+ "y": 992.6738667488098,
+ "z": "c7d3e3a8.96c6a",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json
new file mode 100644
index 00000000..592f18ec
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json
@@ -0,0 +1,790 @@
+[
+ {
+ "id": "eab12fb4.9470c",
+ "type": "method",
+ "name": "method sdwan-vf-operation-device-deactivate",
+ "xml": "<method rpc='sdwan-vf-operation-device-deactivate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 247.00390625,
+ "y": 208.58633995056152,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "88bd5bad.58a838"
+ ]
+ ]
+ },
+ {
+ "id": "173d417d.3d9d4f",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 156.00390625,
+ "y": 51.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "49f08769.af3e38"
+ ]
+ ]
+ },
+ {
+ "id": "49f08769.af3e38",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 235.28961181640625,
+ "y": 114.23810768127441,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "eab12fb4.9470c"
+ ]
+ ]
+ },
+ {
+ "id": "88bd5bad.58a838",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 233.6705780029297,
+ "y": 393.666711807251,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "8b416f25.fd742",
+ "913862a1.5a856",
+ "4cb8dc52.180e74",
+ "fc24eafd.9fc4a8",
+ "4138123c.14d7fc",
+ "4970f16c.dac46",
+ "895129ed.754e48",
+ "365ea8c0.8e5e88",
+ "3a024eed.b847b2",
+ "b57ebaec.796048",
+ "f96bfa0c.8df2e8",
+ "c52a640a.528f08",
+ "f35fbdc0.23293",
+ "8adce6c1.0054d8",
+ "c93c3cc4.3e059",
+ "2b4abdb6.03e172"
+ ]
+ ]
+ },
+ {
+ "id": "913862a1.5a856",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 579.035270690918,
+ "y": 288.26913928985596,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "efd4ecd6.bbb91"
+ ]
+ ]
+ },
+ {
+ "id": "8b416f25.fd742",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 584.0039253234863,
+ "y": 227.00000858306885,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "d471cf9c.3d2c3"
+ ]
+ ]
+ },
+ {
+ "id": "d471cf9c.3d2c3",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 764.00390625,
+ "y": 225.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "50f0a620.2f6168"
+ ]
+ ]
+ },
+ {
+ "id": "50f0a620.2f6168",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 913.4326324462891,
+ "y": 227.142915725708,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "efd4ecd6.bbb91",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 802.0039215087891,
+ "y": 289.0000042915344,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "ddc6fec5.e8104"
+ ]
+ ]
+ },
+ {
+ "id": "ddc6fec5.e8104",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1017.00390625,
+ "y": 286.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "b9cc7318.0324"
+ ]
+ ]
+ },
+ {
+ "id": "b9cc7318.0324",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1181.00390625,
+ "y": 281.99999809265137,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "4cb8dc52.180e74",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 608.0039138793945,
+ "y": 388.99999046325684,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "e6e168ae.5922f8",
+ "fd79ee10.1cfe",
+ "a16175c1.4d7fe8"
+ ]
+ ]
+ },
+ {
+ "id": "fd79ee10.1cfe",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 851.00390625,
+ "y": 393.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "a7f74d79.37951"
+ ]
+ ]
+ },
+ {
+ "id": "e6e168ae.5922f8",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 856.0039024353027,
+ "y": 340.99999713897705,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "a7f74d79.37951"
+ ]
+ ]
+ },
+ {
+ "id": "a7f74d79.37951",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1014.00390625,
+ "y": 353.99999809265137,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "a16175c1.4d7fe8",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 851.00390625,
+ "y": 454.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "29b73225.fee79e"
+ ]
+ ]
+ },
+ {
+ "id": "9a42153a.0e1ba8",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1205.003921508789,
+ "y": 453.00001204013824,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "29b73225.fee79e",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1012.0039520263672,
+ "y": 451.9999895095825,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "9a42153a.0e1ba8",
+ "a90f8236.4cea3"
+ ]
+ ]
+ },
+ {
+ "id": "a90f8236.4cea3",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1224.003890991211,
+ "y": 505.9999885559082,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "9531aa2b.7d82e8"
+ ]
+ ]
+ },
+ {
+ "id": "9531aa2b.7d82e8",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1467.00390625,
+ "y": 500.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "50f86cda.3bbd84"
+ ]
+ ]
+ },
+ {
+ "id": "50f86cda.3bbd84",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1665.0039348602295,
+ "y": 488.0000047683716,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "1f4f69b5.ee4bf6"
+ ]
+ ]
+ },
+ {
+ "id": "1f4f69b5.ee4bf6",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1817.00390625,
+ "y": 489.99999809265137,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "31d234fd.985a5c",
+ "fba615aa.7b1928",
+ "1bbdb98.9d83a47"
+ ]
+ ]
+ },
+ {
+ "id": "31d234fd.985a5c",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2042.003978729248,
+ "y": 485.00000762939453,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "fba615aa.7b1928",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2045.00390625,
+ "y": 534.9999980926514,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "1bbdb98.9d83a47",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-device-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2073.0041275024414,
+ "y": 583.0000038146973,
+ "z": "43a65733.428508",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "fc24eafd.9fc4a8",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 568.0351257324219,
+ "y": 533.0160713195801,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "f7322d10.91c7"
+ ]
+ ]
+ },
+ {
+ "id": "f7322d10.91c7",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 715.4637680053711,
+ "y": 532.5874814987183,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "aba11941.c41518"
+ ]
+ ]
+ },
+ {
+ "id": "aba11941.c41518",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 864.8924942016602,
+ "y": 533.7303991317749,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "4138123c.14d7fc",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 575.0351448059082,
+ "y": 635.0160565376282,
+ "z": "43a65733.428508",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "8adce6c1.0054d8",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 620.00390625,
+ "y": 814.9999980926514,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "21e717d4.e526d8",
+ "beac382b.708d18"
+ ]
+ ]
+ },
+ {
+ "id": "21e717d4.e526d8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 852.00390625,
+ "y": 794.9999980926514,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "ab96a06a.0fe99"
+ ]
+ ]
+ },
+ {
+ "id": "beac382b.708d18",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 844.25390625,
+ "y": 836.6428813934326,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "d406c325.c6945"
+ ]
+ ]
+ },
+ {
+ "id": "ab96a06a.0fe99",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 989.00390625,
+ "y": 794.9999980926514,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "d406c325.c6945",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 970.33740234375,
+ "y": 836.8889141082764,
+ "z": "43a65733.428508",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f35fbdc0.23293",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 614.5595703125,
+ "y": 719.2222194671631,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "bbf3791.82cae88",
+ "5c78e46.37fed1c",
+ "6cb7b96f.bcb5f8"
+ ]
+ ]
+ },
+ {
+ "id": "5c78e46.37fed1c",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 847.050464630127,
+ "y": 692.7962417602539,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "dee4ec51.1a644"
+ ]
+ ]
+ },
+ {
+ "id": "dee4ec51.1a644",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1020.6218757629395,
+ "y": 681.0819778442383,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "6cb7b96f.bcb5f8",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 839.383472442627,
+ "y": 734.1295547485352,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "af4faa3a.89fcb8"
+ ]
+ ]
+ },
+ {
+ "id": "af4faa3a.89fcb8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1027.1560287475586,
+ "y": 729.5687475204468,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "bbf3791.82cae88",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 855.559627532959,
+ "y": 644.2221937179565,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "a080fe09.3fe2b"
+ ]
+ ]
+ },
+ {
+ "id": "a080fe09.3fe2b",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1032.059669494629,
+ "y": 635.2221827507019,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "c93c3cc4.3e059",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 601.0000190734863,
+ "y": 869.5910816192627,
+ "z": "43a65733.428508",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "365ea8c0.8e5e88",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 570.0039882659912,
+ "y": 1320.5000076293945,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "4970f16c.dac46",
+ "type": "set",
+ "name": "set vf-module-oper-status to PendingDelete",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",
+ "comments": "",
+ "x": 655.4840393066406,
+ "y": 1183.8372745513916,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "895129ed.754e48",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 612.3372573852539,
+ "y": 1089.8334884643555,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "c52a640a.528f08",
+ "type": "save",
+ "name": "update deviceInstance configuration in AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='PendingDelete' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 648.6707305908203,
+ "y": 1248.7224197387695,
+ "z": "43a65733.428508",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "3a024eed.b847b2",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 599.00390625,
+ "y": 1135.2501430511475,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "f96bfa0c.8df2e8",
+ "type": "set",
+ "name": "set device Id length and deviceId",
+ "xml": "<set>\n<parameter name='prop.devices[0]' value='`$prop.device.deviceId`' />\n\n\n",
+ "comments": "",
+ "x": 617.00390625,
+ "y": 977.5039043426514,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "b57ebaec.796048",
+ "type": "set",
+ "name": "set device Id length and deviceId",
+ "xml": "<set>\n<parameter name='prop.devices_length' value='1' />\n\n\n",
+ "comments": "",
+ "x": 621.0038833618164,
+ "y": 935.503867149353,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "12cd00be.9dffef",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 961.0039329528809,
+ "y": 1011.2539529800415,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "f39a352.055c0c8"
+ ]
+ ]
+ },
+ {
+ "id": "f39a352.055c0c8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1132.114948272705,
+ "y": 1010.0317735671997,
+ "z": "43a65733.428508",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5670b097.b1ca5",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 957.5594863891602,
+ "y": 1064.587239265442,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "a7ade3fe.220b3"
+ ]
+ ]
+ },
+ {
+ "id": "a7ade3fe.220b3",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
+ "comments": "",
+ "x": 1102.5594863891602,
+ "y": 1067.587239265442,
+ "z": "43a65733.428508",
+ "wires": []
+ },
+ {
+ "id": "2b4abdb6.03e172",
+ "type": "execute",
+ "name": "execute RestApiCallNode delete Devcie Instance",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 667.4798164367676,
+ "y": 1034.1741046905518,
+ "z": "43a65733.428508",
+ "wires": [
+ [
+ "12cd00be.9dffef",
+ "5670b097.b1ca5"
+ ]
+ ]
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json
new file mode 100644
index 00000000..ad4c6efc
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json
@@ -0,0 +1,707 @@
+[
+ {
+ "id": "c6fed7ba.2e5e18",
+ "type": "method",
+ "name": "method sdwan-vf-operation-device-delete",
+ "xml": "<method rpc='sdwan-vf-operation-device-delete' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 255.00390625,
+ "y": 216.58634042739868,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "4804312d.8867d"
+ ]
+ ]
+ },
+ {
+ "id": "e5478a26.0a9688",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 164.00390625,
+ "y": 59.999998569488525,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "3b2be231.ea30ae"
+ ]
+ ]
+ },
+ {
+ "id": "3b2be231.ea30ae",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 243.28961181640625,
+ "y": 122.23810815811157,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "c6fed7ba.2e5e18"
+ ]
+ ]
+ },
+ {
+ "id": "4804312d.8867d",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 271.6706085205078,
+ "y": 450.66671800613403,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "f36d7165.5e774",
+ "9c192f6.d32f3d",
+ "edf648d0.949e68",
+ "68b5e9b8.2b0318",
+ "370fd9d.4d0a826",
+ "e73ad2e7.ff301",
+ "61a4bf49.6ae31",
+ "4b0a719b.ddb45",
+ "77882cba.d66624",
+ "75517c95.ffb8a4",
+ "b631e163.c5869",
+ "22f84c9a.3b1234"
+ ]
+ ]
+ },
+ {
+ "id": "9c192f6.d32f3d",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 587.035270690918,
+ "y": 296.2691397666931,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "a9bd8416.007568"
+ ]
+ ]
+ },
+ {
+ "id": "f36d7165.5e774",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 592.0039253234863,
+ "y": 235.000009059906,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "ca4b0462.04ea28"
+ ]
+ ]
+ },
+ {
+ "id": "ca4b0462.04ea28",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 772.00390625,
+ "y": 233.99999856948853,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "6923c8a0.a21e38"
+ ]
+ ]
+ },
+ {
+ "id": "6923c8a0.a21e38",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 921.4326324462891,
+ "y": 235.14291620254517,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "a9bd8416.007568",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 810.0039215087891,
+ "y": 297.0000047683716,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "cd0a501b.5bef4"
+ ]
+ ]
+ },
+ {
+ "id": "cd0a501b.5bef4",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1025.00390625,
+ "y": 294.9999985694885,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "48bd1058.cd2f6"
+ ]
+ ]
+ },
+ {
+ "id": "48bd1058.cd2f6",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1189.00390625,
+ "y": 289.9999985694885,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "edf648d0.949e68",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 658.0039405822754,
+ "y": 373.00002336502075,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "428796e8.82f0e8",
+ "dc937af3.d44e48",
+ "71d8961.8097f68"
+ ]
+ ]
+ },
+ {
+ "id": "dc937af3.d44e48",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 880.0039329528809,
+ "y": 407.0000329017639,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "f5d99ed7.a4a21"
+ ]
+ ]
+ },
+ {
+ "id": "428796e8.82f0e8",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 885.0039291381836,
+ "y": 354.0000319480896,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "f5d99ed7.a4a21"
+ ]
+ ]
+ },
+ {
+ "id": "f5d99ed7.a4a21",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1043.0039329528809,
+ "y": 367.0000329017639,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "71d8961.8097f68",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 880.0039329528809,
+ "y": 468.0000329017639,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "d086ad92.da44d"
+ ]
+ ]
+ },
+ {
+ "id": "1ece4dd8.f577c2",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1234.00394821167,
+ "y": 466.0000468492508,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "d086ad92.da44d",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1041.003978729248,
+ "y": 465.00002431869507,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "1ece4dd8.f577c2",
+ "85d68297.b6351"
+ ]
+ ]
+ },
+ {
+ "id": "85d68297.b6351",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1253.0039176940918,
+ "y": 519.0000233650208,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "22a0d6f0.bf05ea"
+ ]
+ ]
+ },
+ {
+ "id": "22a0d6f0.bf05ea",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1496.0039329528809,
+ "y": 514.0000329017639,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "158cf966.e07057"
+ ]
+ ]
+ },
+ {
+ "id": "158cf966.e07057",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1737.0040607452393,
+ "y": 507.00003004074097,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "66a900a3.a3c07"
+ ]
+ ]
+ },
+ {
+ "id": "66a900a3.a3c07",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1889.0040321350098,
+ "y": 509.00002336502075,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "e303b920.69ef18",
+ "94649a24.085df8",
+ "2718f6a1.d8c36a"
+ ]
+ ]
+ },
+ {
+ "id": "e303b920.69ef18",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2111.0040321350098,
+ "y": 505.00002336502075,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "94649a24.085df8",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2117.0040321350098,
+ "y": 554.0000233650208,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "2718f6a1.d8c36a",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-device-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2145.004253387451,
+ "y": 602.0000290870667,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "68b5e9b8.2b0318",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 597.0351524353027,
+ "y": 546.0161061286926,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "99df81ad.4b936"
+ ]
+ ]
+ },
+ {
+ "id": "99df81ad.4b936",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 744.463794708252,
+ "y": 545.5875163078308,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "5487274c.85e858"
+ ]
+ ]
+ },
+ {
+ "id": "5487274c.85e858",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 893.892520904541,
+ "y": 546.7304339408875,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "370fd9d.4d0a826",
+ "type": "switchNode",
+ "name": "switch vf-module-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 641.3333129882812,
+ "y": 616.3333115577698,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "8d4cefb5.e8f04",
+ "d9412eaf.21b64"
+ ]
+ ]
+ },
+ {
+ "id": "8d4cefb5.e8f04",
+ "type": "outcome",
+ "name": "outcome PendingDelete",
+ "xml": "<outcome value='PendingDelete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 932.1665802001953,
+ "y": 620.4444346427917,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "d8669fbd.c1c02"
+ ]
+ ]
+ },
+ {
+ "id": "d9412eaf.21b64",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 899.1667175292969,
+ "y": 672.4444873332977,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "dfeaa117.eea9d"
+ ]
+ ]
+ },
+ {
+ "id": "dfeaa117.eea9d",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
+ "comments": "",
+ "x": 1058.6664848327637,
+ "y": 675.4444863796234,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "d8669fbd.c1c02",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1129.4729804992676,
+ "y": 630.7695889472961,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b631e163.c5869",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 619.4445152282715,
+ "y": 995.2221984863281,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "22f84c9a.3b1234",
+ "type": "switchNode",
+ "name": "switch prop.device.sdncCreate",
+ "xml": "<switch test=\"`$prop.device.sdncCreate`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 659.0948181152344,
+ "y": 937.5949177742004,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "44543bd3.4c8bf4"
+ ]
+ ]
+ },
+ {
+ "id": "e73ad2e7.ff301",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+ "comments": "",
+ "x": 615.5311832427979,
+ "y": 690.3333535194397,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "61a4bf49.6ae31",
+ "type": "for",
+ "name": "for lidx..service-data.vf-modules.vf-module[]",
+ "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 695.5310974121094,
+ "y": 741.3333554267883,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "da9431cc.52513"
+ ]
+ ]
+ },
+ {
+ "id": "4b0a719b.ddb45",
+ "type": "set",
+ "name": "set new vnf length",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+ "comments": "",
+ "x": 619.6324615478516,
+ "y": 792.1375555992126,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "77882cba.d66624",
+ "type": "set",
+ "name": "Remove vnf from ServiceData",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",
+ "comments": "",
+ "x": 656.5311431884766,
+ "y": 844.3333582878113,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "da9431cc.52513",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 955.5310878753662,
+ "y": 748.3332152366638,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "18a9693d.650b17"
+ ]
+ ]
+ },
+ {
+ "id": "44543bd3.4c8bf4",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 870.094669342041,
+ "y": 936.5945897102356,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "33a69b5b.9a15c4"
+ ]
+ ]
+ },
+ {
+ "id": "33a69b5b.9a15c4",
+ "type": "delete",
+ "name": "delete wan port instance configuration in AAI",
+ "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='device' \n key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1136.5314407348633,
+ "y": 934.5948338508606,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "18a9693d.650b17",
+ "type": "switchNode",
+ "name": "switch vnf-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1141.5311546325684,
+ "y": 748.3333759307861,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "3ab3fce3.adf244"
+ ]
+ ]
+ },
+ {
+ "id": "3ab3fce3.adf244",
+ "type": "outcomeFalse",
+ "name": "false",
+ "xml": "<outcome value='false'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1310.531162261963,
+ "y": 747.3332133293152,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "9c7fc57d.2e0378"
+ ]
+ ]
+ },
+ {
+ "id": "9c7fc57d.2e0378",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1464.5310010910034,
+ "y": 739.3332142829895,
+ "z": "314ec97c.2253c6",
+ "wires": [
+ [
+ "3c3fb736.ab7c18",
+ "3d45148.2511eec"
+ ]
+ ]
+ },
+ {
+ "id": "3c3fb736.ab7c18",
+ "type": "set",
+ "name": "set vnf data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 1629.531096458435,
+ "y": 714.3333697319031,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "3d45148.2511eec",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+ "comments": "",
+ "x": 1651.531096458435,
+ "y": 770.333333492279,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ },
+ {
+ "id": "75517c95.ffb8a4",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 643.3333511352539,
+ "y": 889.6666932106018,
+ "z": "314ec97c.2253c6",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json
new file mode 100644
index 00000000..138d31fb
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json
@@ -0,0 +1,1853 @@
+[
+ {
+ "id": "cea6a9f1.279478",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 570.7143020629883,
+ "y": 337.99999046325684,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "4a89ecf7.049034",
+ "2a09fa32.63fc36",
+ "c2f1098d.e8bd38"
+ ]
+ ]
+ },
+ {
+ "id": "1833f3f4.1b830c",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 107.71429824829102,
+ "y": 29,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "181dc2fc.e539bd"
+ ]
+ ]
+ },
+ {
+ "id": "181dc2fc.e539bd",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 177,
+ "y": 92.23810958862305,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "25791551.06845a"
+ ]
+ ]
+ },
+ {
+ "id": "25791551.06845a",
+ "type": "method",
+ "name": "method sdwan-vf-operation-lanport-activate",
+ "xml": "<method rpc='sdwan-vf-operation-lanport-activate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 188.71429443359375,
+ "y": 186.58634185791016,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "419d7afa.b1ca54"
+ ]
+ ]
+ },
+ {
+ "id": "419d7afa.b1ca54",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 189.38096618652344,
+ "y": 442.666708946228,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "f5110085.4f487",
+ "f62e0d25.9e73c",
+ "cea6a9f1.279478",
+ "76df47d2.f28eb8",
+ "3a550152.acb95e",
+ "bad651b2.12a17",
+ "a66a0a0e.fef0c8",
+ "f2a2fd31.6afea",
+ "11a6133a.d1ed1d",
+ "6bb3e148.a2b06",
+ "233d7734.c6ad18",
+ "ec89c38e.b0db3",
+ "cfe4c928.772628",
+ "307480f2.c3f12",
+ "83adcbda.9cab18",
+ "41a8aff.133475",
+ "bf4ca0a0.f719b",
+ "14cdbea6.6ff3c1",
+ "96f47da7.f3275",
+ "7299f238.fa9f1c",
+ "e4f03070.b443a",
+ "1e3434c6.db511b",
+ "56401cb0.1f0164"
+ ]
+ ]
+ },
+ {
+ "id": "f62e0d25.9e73c",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 520.7456588745117,
+ "y": 266.2691411972046,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "b7bf67d0.4c13b8"
+ ]
+ ]
+ },
+ {
+ "id": "f5110085.4f487",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 525.7143135070801,
+ "y": 205.00001049041748,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "61a8d0c5.ce10b"
+ ]
+ ]
+ },
+ {
+ "id": "61a8d0c5.ce10b",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 705.7142944335938,
+ "y": 204,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "3e167156.21c02e"
+ ]
+ ]
+ },
+ {
+ "id": "3e167156.21c02e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 855.1430206298828,
+ "y": 205.14291763305664,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "b7bf67d0.4c13b8",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 743.7143096923828,
+ "y": 267.00000619888306,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "29696342.56f90c"
+ ]
+ ]
+ },
+ {
+ "id": "29696342.56f90c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 958.7142944335938,
+ "y": 265,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "1ba7830b.c7ea6d"
+ ]
+ ]
+ },
+ {
+ "id": "1ba7830b.c7ea6d",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1122.7142944335938,
+ "y": 260,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "2a09fa32.63fc36",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 792.7142944335938,
+ "y": 372,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "4ead305d.0b806"
+ ]
+ ]
+ },
+ {
+ "id": "4a89ecf7.049034",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 797.7142906188965,
+ "y": 318.9999990463257,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "4ead305d.0b806"
+ ]
+ ]
+ },
+ {
+ "id": "4ead305d.0b806",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 955.7142944335938,
+ "y": 332,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "c2f1098d.e8bd38",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 792.7142944335938,
+ "y": 433,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "2458c219.d10e1e"
+ ]
+ ]
+ },
+ {
+ "id": "ead36ccd.33529",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1146.7143096923828,
+ "y": 431.0000139474869,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "2458c219.d10e1e",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 953.7143402099609,
+ "y": 429.99999141693115,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "ead36ccd.33529",
+ "386f97ee.904d48"
+ ]
+ ]
+ },
+ {
+ "id": "386f97ee.904d48",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1165.7142791748047,
+ "y": 483.99999046325684,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "593c39.dc7673c8"
+ ]
+ ]
+ },
+ {
+ "id": "593c39.dc7673c8",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1408.7142944335938,
+ "y": 479,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "1efda74.b0eb959"
+ ]
+ ]
+ },
+ {
+ "id": "1efda74.b0eb959",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1606.7143230438232,
+ "y": 466.0000066757202,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "d0b5f3a2.35747"
+ ]
+ ]
+ },
+ {
+ "id": "d0b5f3a2.35747",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1758.7142944335938,
+ "y": 468,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "1fc6559e.18634a",
+ "802dea9f.3c2848",
+ "9329a8cc.23d418"
+ ]
+ ]
+ },
+ {
+ "id": "1fc6559e.18634a",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 1986.7144088745117,
+ "y": 410.00000381469727,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "802dea9f.3c2848",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 1990.7144088745117,
+ "y": 464.00000381469727,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "76df47d2.f28eb8",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 504.714412689209,
+ "y": 2079.501151561737,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "9329a8cc.23d418",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-lanport-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2021.16943359375,
+ "y": 515.0104961395264,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b2d390ae.97474",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 827.9683685302734,
+ "y": 520.0040225982666,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "7dff73e1.0243cc"
+ ]
+ ]
+ },
+ {
+ "id": "3f6c843d.edec8c",
+ "type": "switchNode",
+ "name": "switch this deviceName == vf-input",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`\">\n \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1100.9686126708984,
+ "y": 606.0041282176971,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "cb455713.e1bdd8"
+ ]
+ ]
+ },
+ {
+ "id": "7dff73e1.0243cc",
+ "type": "for",
+ "name": "for vf-module-input-param length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1125.9682846069336,
+ "y": 523.0040645599365,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "3f6c843d.edec8c"
+ ]
+ ]
+ },
+ {
+ "id": "cb455713.e1bdd8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1314.9684257507324,
+ "y": 603.0041129589081,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "8c1ad275.b541"
+ ]
+ ]
+ },
+ {
+ "id": "8c1ad275.b541",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1528.9684677124023,
+ "y": 599.0040664672852,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "6aaf6a5c.76e9f4"
+ ]
+ ]
+ },
+ {
+ "id": "6aaf6a5c.76e9f4",
+ "type": "switchNode",
+ "name": "switch deviceId == input vf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1843.9685440063477,
+ "y": 598.0040471553802,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "85841cc6.de2b3"
+ ]
+ ]
+ },
+ {
+ "id": "85841cc6.de2b3",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2045.9686737060547,
+ "y": 596.0040481090546,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "1722d3f0.fc82dc"
+ ]
+ ]
+ },
+ {
+ "id": "1722d3f0.fc82dc",
+ "type": "set",
+ "name": "set prop.lan.deviceId",
+ "xml": "<set>\n<parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",
+ "comments": "",
+ "x": 2220.9685668945312,
+ "y": 596.004228591919,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "3a550152.acb95e",
+ "type": "for",
+ "name": "for service-data.vnfs.vnf_length",
+ "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 573.9682159423828,
+ "y": 455.00401973724365,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "b2d390ae.97474"
+ ]
+ ]
+ },
+ {
+ "id": "566234f6.d57f8c",
+ "type": "switchNode",
+ "name": "switch ActivateSDWANSiteInstance",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1168.7185821533203,
+ "y": 727.0039882659912,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "d08758a.8a9d4a8"
+ ]
+ ]
+ },
+ {
+ "id": "4a6e0872.754c78",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 814.7184219360352,
+ "y": 694.0040283203125,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "2141a4d0.4ed0ac"
+ ]
+ ]
+ },
+ {
+ "id": "83adcbda.9cab18",
+ "type": "for",
+ "name": "for service-data.vnfs.vnf_length",
+ "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 565.7182769775391,
+ "y": 625.0039081573486,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "4a6e0872.754c78"
+ ]
+ ]
+ },
+ {
+ "id": "d08758a.8a9d4a8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1390.7184982299805,
+ "y": 727.0040698051453,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "5c9349a5.10cdf8"
+ ]
+ ]
+ },
+ {
+ "id": "5c9349a5.10cdf8",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1471.968505859375,
+ "y": 801.5040712356567,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "78c531f9.c452d"
+ ]
+ ]
+ },
+ {
+ "id": "78502254.1e1d1c",
+ "type": "switchNode",
+ "name": "switch siteId",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1854.968864440918,
+ "y": 808.5041785240173,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "cef8d9d4.a847d8"
+ ]
+ ]
+ },
+ {
+ "id": "cef8d9d4.a847d8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2031.9688835144043,
+ "y": 811.5040187835693,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "57774070.165c4"
+ ]
+ ]
+ },
+ {
+ "id": "26765522.97752a",
+ "type": "set",
+ "name": "set prop.attach.siteId",
+ "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",
+ "comments": "",
+ "x": 2415.9693908691406,
+ "y": 785.5040702819824,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "57774070.165c4",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2191.2190742492676,
+ "y": 807.0040588378906,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "26765522.97752a",
+ "18aa70c2.f51f1f",
+ "95fdece9.83f56",
+ "13d1a87e.cc7dd8"
+ ]
+ ]
+ },
+ {
+ "id": "41a8aff.133475",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 526.7182235717773,
+ "y": 944.5039968490601,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "9e1e759b.490ef8",
+ "587c1d85.98e364",
+ "1fecffb3.fdfc1"
+ ]
+ ]
+ },
+ {
+ "id": "9e1e759b.490ef8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 770.7182846069336,
+ "y": 908.5039968490601,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "1eeec00d.ea37e"
+ ]
+ ]
+ },
+ {
+ "id": "587c1d85.98e364",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 773.2091674804688,
+ "y": 944.0780334472656,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "f1f9240f.1bbe98"
+ ]
+ ]
+ },
+ {
+ "id": "1fecffb3.fdfc1",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 768.5421752929688,
+ "y": 980.4113922119141,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "e9937b5c.1de1c8"
+ ]
+ ]
+ },
+ {
+ "id": "e9937b5c.1de1c8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 922.3146667480469,
+ "y": 977.8504791259766,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "f1f9240f.1bbe98",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 918.7805633544922,
+ "y": 942.3637208938599,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "1eeec00d.ea37e",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 931.2183952331543,
+ "y": 906.5039367675781,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "bf4ca0a0.f719b",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 540.6564559936523,
+ "y": 1047.62509059906,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "d05110e4.15f05",
+ "623a881a.ebe538"
+ ]
+ ]
+ },
+ {
+ "id": "d05110e4.15f05",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 775.6565818786621,
+ "y": 1033.6250791549683,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "adf2584e.694ce8"
+ ]
+ ]
+ },
+ {
+ "id": "623a881a.ebe538",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 774.9065818786621,
+ "y": 1069.2679862976074,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "e8c30ab5.68d3b8"
+ ]
+ ]
+ },
+ {
+ "id": "e8c30ab5.68d3b8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 923.6565895080566,
+ "y": 1070.0180683135986,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "adf2584e.694ce8",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 917.6565895080566,
+ "y": 1032.6250801086426,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "96f47da7.f3275",
+ "type": "execute",
+ "name": "execute RestApiCallNode device port create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 566.7455520629883,
+ "y": 1199.0782289505005,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "50af67d.1491698",
+ "bef4965a.55b458"
+ ]
+ ]
+ },
+ {
+ "id": "50af67d.1491698",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 815.7456111907959,
+ "y": 1213.0784349441528,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "b4a513b9.d44d6"
+ ]
+ ]
+ },
+ {
+ "id": "bef4965a.55b458",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 815.7456111907959,
+ "y": 1175.0782704353333,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "d695c8db.015488"
+ ]
+ ]
+ },
+ {
+ "id": "d695c8db.015488",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
+ "comments": "",
+ "x": 959.7459449768066,
+ "y": 1174.078269958496,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "b4a513b9.d44d6",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 962.7456226348877,
+ "y": 1214.0782737731934,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "bad651b2.12a17",
+ "type": "set",
+ "name": "set prop.lan.devicePortId",
+ "xml": "<set>\n<parameter name='prop.lan.devicePortId' value='`$portResp.success[0].id`' />\n",
+ "comments": "",
+ "x": 509.4028129577637,
+ "y": 1252.1794338226318,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "1d5fca27.3bbea6",
+ "type": "comment",
+ "name": "Create port",
+ "info": "",
+ "comments": "",
+ "x": 468.41149139404297,
+ "y": 1165.522253036499,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "14cdbea6.6ff3c1",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 515.411491394043,
+ "y": 1114.1886892318726,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f52cabac.abeb68",
+ "type": "execute",
+ "name": "execute RestApiCallNode bridge domain create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"bridgeDomainResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 989.3958015441895,
+ "y": 1294.188857793808,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "441eed4c.baf224",
+ "fa3f1c96.1fc6d"
+ ]
+ ]
+ },
+ {
+ "id": "441eed4c.baf224",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1310.3958282470703,
+ "y": 1311.1891782283783,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "a63cb83c.98c9e8"
+ ]
+ ]
+ },
+ {
+ "id": "fa3f1c96.1fc6d",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1313.3958549499512,
+ "y": 1276.1889598369598,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "421c7bf9.398d94"
+ ]
+ ]
+ },
+ {
+ "id": "421c7bf9.398d94",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create bridge domain rest api\" />\n",
+ "comments": "",
+ "x": 1516.3962440490723,
+ "y": 1272.1890671253204,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "a63cb83c.98c9e8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1517.395809173584,
+ "y": 1307.1889336109161,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7044fc7.42f8204",
+ "type": "comment",
+ "name": "Create bridge domain",
+ "info": "",
+ "comments": "",
+ "x": 933.061695098877,
+ "y": 1260.6330835819244,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "a66a0a0e.fef0c8",
+ "type": "switchNode",
+ "name": "switch portSwitch",
+ "xml": "<switch test=\"`$prop.lan.portSwitch == 'layer2-port'`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 489.17326736450195,
+ "y": 1295.855489730835,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "cc6612da.43a9"
+ ]
+ ]
+ },
+ {
+ "id": "cc6612da.43a9",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 668.1732978820801,
+ "y": 1295.966812133789,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "f52cabac.abeb68"
+ ]
+ ]
+ },
+ {
+ "id": "f2a2fd31.6afea",
+ "type": "execute",
+ "name": "execute split ip and mask",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.lan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 513.71826171875,
+ "y": 1395.7540397644043,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "c87ddd20.90349",
+ "aaf35528.c457d8"
+ ]
+ ]
+ },
+ {
+ "id": "aaf35528.c457d8",
+ "type": "failure",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 714.7182807922363,
+ "y": 1373.7540311813354,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "f3c46122.a1ec5"
+ ]
+ ]
+ },
+ {
+ "id": "c87ddd20.90349",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 714.7182846069336,
+ "y": 1414.7540349960327,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "3701541a.3aea9c"
+ ]
+ ]
+ },
+ {
+ "id": "f3c46122.a1ec5",
+ "type": "set",
+ "name": "set ipAddress prefixLength",
+ "xml": "<set>\n<parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />",
+ "comments": "",
+ "x": 911.7182998657227,
+ "y": 1371.7540311813354,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "3701541a.3aea9c",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",
+ "comments": "",
+ "x": 869.7182922363281,
+ "y": 1411.7540340423584,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "6cdf4550.c744bc",
+ "type": "comment",
+ "name": "Create wan port",
+ "info": "",
+ "comments": "",
+ "x": 486.7281379699707,
+ "y": 1348.7640895843506,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "2701cb4.59cff34",
+ "type": "comment",
+ "name": "TODO: split ip/mask",
+ "info": "",
+ "comments": "",
+ "x": 910.7279319763184,
+ "y": 1333.9343032836914,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "7299f238.fa9f1c",
+ "type": "execute",
+ "name": "execute RestApiCallNode IPSubnets create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-ip-subnets.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"lanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 572.489631652832,
+ "y": 1471.8749294281006,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "fe753b01.7a4008",
+ "c50acfa.66a383"
+ ]
+ ]
+ },
+ {
+ "id": "c50acfa.66a383",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 841.4896621704102,
+ "y": 1458.8749017715454,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "da685c50.c0fca"
+ ]
+ ]
+ },
+ {
+ "id": "fe753b01.7a4008",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 838.4896354675293,
+ "y": 1493.8751201629639,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "7c874cb1.b7ec64"
+ ]
+ ]
+ },
+ {
+ "id": "da685c50.c0fca",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
+ "comments": "",
+ "x": 994.4900436401367,
+ "y": 1454.8751277923584,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "7c874cb1.b7ec64",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 985.489616394043,
+ "y": 1494.8748760223389,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "220d830a.a3737c"
+ ]
+ ]
+ },
+ {
+ "id": "220d830a.a3737c",
+ "type": "set",
+ "name": "set prop.lan.lanPortId",
+ "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />\n",
+ "comments": "",
+ "x": 1192.378719329834,
+ "y": 1497.208342552185,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "1e3434c6.db511b",
+ "type": "execute",
+ "name": "execute RestApiCallNode create vpn topology",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 598.0000534057617,
+ "y": 1630.333706855774,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "dad634fb.8374a8",
+ "222fdfc3.31cbd"
+ ]
+ ]
+ },
+ {
+ "id": "222fdfc3.31cbd",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 836.9999675750732,
+ "y": 1677.333193898201,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "a113b13a.6f74c"
+ ]
+ ]
+ },
+ {
+ "id": "a113b13a.6f74c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1006.999906539917,
+ "y": 1680.333193898201,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "66af30b.a74d8d",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn topology failed\" />\n",
+ "comments": "",
+ "x": 1007.0000286102295,
+ "y": 1636.333193898201,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "dad634fb.8374a8",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 839.999906539917,
+ "y": 1636.333193898201,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "66af30b.a74d8d"
+ ]
+ ]
+ },
+ {
+ "id": "e4f03070.b443a",
+ "type": "execute",
+ "name": "execute RestApiCallNode create vpn ",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 559.9984092712402,
+ "y": 1561.8328762054443,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "93f9856d.ae6458",
+ "98bd094d.9d68c8"
+ ]
+ ]
+ },
+ {
+ "id": "98bd094d.9d68c8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 780.99831199646,
+ "y": 1583.8328419923782,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "54c36251.c8076c"
+ ]
+ ]
+ },
+ {
+ "id": "54c36251.c8076c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 950.9982509613037,
+ "y": 1586.8328419923782,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "719bdb7c.5a10b4",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn failed\" />\n",
+ "comments": "",
+ "x": 950.9983730316162,
+ "y": 1542.8328419923782,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "93f9856d.ae6458",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 783.9982509613037,
+ "y": 1542.8328419923782,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "719bdb7c.5a10b4"
+ ]
+ ]
+ },
+ {
+ "id": "cdd2e071.957e3",
+ "type": "switchNode",
+ "name": "switch ActivateSDWANVpnInstance",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1147.0002365112305,
+ "y": 848.3332567214966,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "f5335833.4ba238"
+ ]
+ ]
+ },
+ {
+ "id": "2141a4d0.4ed0ac",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 904.3333396911621,
+ "y": 777.3333368301392,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "566234f6.d57f8c",
+ "cdd2e071.957e3",
+ "785db3d8.98fb5c"
+ ]
+ ]
+ },
+ {
+ "id": "f5335833.4ba238",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1242.666748046875,
+ "y": 922.3333377838135,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "deda6015.73137"
+ ]
+ ]
+ },
+ {
+ "id": "deda6015.73137",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1456.916633605957,
+ "y": 923.8333144187927,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "6ef0c48a.c4e20c"
+ ]
+ ]
+ },
+ {
+ "id": "6ef0c48a.c4e20c",
+ "type": "switchNode",
+ "name": "switch vpn-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1703.9166717529297,
+ "y": 918.8333973884583,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "45631feb.4e63d"
+ ]
+ ]
+ },
+ {
+ "id": "45631feb.4e63d",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1854.6666259765625,
+ "y": 920.3333129882812,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "4fe0c915.7019d8"
+ ]
+ ]
+ },
+ {
+ "id": "4fe0c915.7019d8",
+ "type": "set",
+ "name": "set prop.vpn1Id",
+ "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",
+ "comments": "",
+ "x": 2028.6673736572266,
+ "y": 920.3333714008331,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "18aa70c2.f51f1f",
+ "type": "set",
+ "name": "Add sites to list and update length",
+ "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
+ "comments": "",
+ "x": 2459.000747680664,
+ "y": 826.3333714008331,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "95fdece9.83f56",
+ "type": "set",
+ "name": "Add site attachement to list and update length",
+ "xml": "<set>\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+ "comments": "",
+ "x": 2490.0006408691406,
+ "y": 869.3333377838135,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "11a6133a.d1ed1d",
+ "type": "set",
+ "name": "set prop.siteAttachement_length=0",
+ "xml": "<set>\n<parameter name='prop.siteAttachements_length' value='0' />\n<parameter name='prop.siteIds_length' value='0' />\n\n\n\n",
+ "comments": "",
+ "x": 576.0000152587891,
+ "y": 574.333330154419,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "78c531f9.c452d",
+ "type": "block",
+ "name": "block atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1689.3336715698242,
+ "y": 802.3333358764648,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "78502254.1e1d1c",
+ "63d66e16.071a8",
+ "5671530f.b2ba5c"
+ ]
+ ]
+ },
+ {
+ "id": "63d66e16.071a8",
+ "type": "switchNode",
+ "name": "switch role",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1851.666603088379,
+ "y": 733.3333349227905,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "5896f487.b2b6fc"
+ ]
+ ]
+ },
+ {
+ "id": "5896f487.b2b6fc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2014.6666069030762,
+ "y": 728.3333358764648,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "21c68e35.ea4b92"
+ ]
+ ]
+ },
+ {
+ "id": "21c68e35.ea4b92",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2182.666648864746,
+ "y": 722.3333339691162,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "c62b7f98.336c5",
+ "2c113cab.56e434",
+ "c2240666.9ee948"
+ ]
+ ]
+ },
+ {
+ "id": "2c113cab.56e434",
+ "type": "switchNode",
+ "name": "switch sd-wan-edge",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2377.666778564453,
+ "y": 683.3333253860474,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "ba2b297.cd792d8"
+ ]
+ ]
+ },
+ {
+ "id": "c62b7f98.336c5",
+ "type": "switchNode",
+ "name": "switch dsvpn-hub",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2374.6668853759766,
+ "y": 738.333340883255,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "f4f54567.510e38"
+ ]
+ ]
+ },
+ {
+ "id": "8ed96cca.37dc4",
+ "type": "set",
+ "name": "set spoke role",
+ "xml": "<set>\n<parameter name='prop.role' value=\"spoke\" />\n",
+ "comments": "",
+ "x": 2707.6669006347656,
+ "y": 677.3333711624146,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "4cf4d59c.e1707c",
+ "type": "set",
+ "name": "set hub role",
+ "xml": "<set>\n<parameter name='prop.role' value=\"hub\" />\n",
+ "comments": "",
+ "x": 2706.666660308838,
+ "y": 732.3333549499512,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "ba2b297.cd792d8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2547.666748046875,
+ "y": 679,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "8ed96cca.37dc4"
+ ]
+ ]
+ },
+ {
+ "id": "f4f54567.510e38",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2551.666748046875,
+ "y": 734,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ [
+ "4cf4d59c.e1707c"
+ ]
+ ]
+ },
+ {
+ "id": "56401cb0.1f0164",
+ "type": "update",
+ "name": "update SDWAN VPN status to AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' \n key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='Active' />\n<parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 560.0312843322754,
+ "y": 1998.031280040741,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "ec89c38e.b0db3",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 556.6663017272949,
+ "y": 1941.1261107651517,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "233d7734.c6ad18",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 590.6663017272949,
+ "y": 1892.6261098114774,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "6bb3e148.a2b06",
+ "type": "set",
+ "name": "copy input data in service-data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 554.6662559509277,
+ "y": 1844.876064300537,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "307480f2.c3f12",
+ "type": "set",
+ "name": "set device PortId to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.devicePortId`' />\n",
+ "comments": "",
+ "x": 561.031322479248,
+ "y": 1738.0314636230469,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "cfe4c928.772628",
+ "type": "set",
+ "name": "set lan PortId to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='lanPortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.lanPortId`' />\n",
+ "comments": "",
+ "x": 547.0312461853027,
+ "y": 1792.0312767028809,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ },
+ {
+ "id": "13d1a87e.cc7dd8",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic21.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"prop.attach.siteId\"/>\n<parameter name=\"field3\" value='`$prop.attach.siteId`'/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2384.0313873291016,
+ "y": 914.5312805175781,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c2240666.9ee948",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic22.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"set spoke role\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2353.0313987731934,
+ "y": 645.531247138977,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5671530f.b2ba5c",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic23.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"param-name\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1847.03125,
+ "y": 677.53125,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "785db3d8.98fb5c",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic24.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"request-action\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1096.03125,
+ "y": 686.53125,
+ "z": "2f0cf160.dc107e",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "bacdcf2a.07a41",
+ "type": "comment",
+ "name": "**revert the changes",
+ "info": "",
+ "comments": "",
+ "x": 1248.0312767028809,
+ "y": 683.0312824249268,
+ "z": "2f0cf160.dc107e",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json
new file mode 100644
index 00000000..b4f838d0
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json
@@ -0,0 +1,533 @@
+[
+ {
+ "id": "3d343d97.916e12",
+ "type": "method",
+ "name": "sdwan-vf-operation-lanport-create",
+ "xml": "<method rpc='sdwan-vf-operation-lanport-create' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 285,
+ "y": 241.99999237060547,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "72bd87e4.7210f8"
+ ]
+ ]
+ },
+ {
+ "id": "72bd87e4.7210f8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 444.99999237060547,
+ "y": 374.9999885559082,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "fa08bbfd.f36978",
+ "662c5c91.bf14f4",
+ "3a8662b6.7187de",
+ "d0f313c6.a0ddd",
+ "87f25b72.4b1968",
+ "c96f1257.64bf8",
+ "9ca9880e.f474f8",
+ "23949443.ee4acc",
+ "64302671.d03c08",
+ "305a60f0.cd87a",
+ "17d1be09.26b4d2",
+ "8ab4415a.f464b",
+ "b65f8656.be0f98",
+ "8944476b.d5f828"
+ ]
+ ]
+ },
+ {
+ "id": "78ad706e.d12e1",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 286,
+ "y": 141.99999237060547,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "3d343d97.916e12"
+ ]
+ ]
+ },
+ {
+ "id": "7c5370ed.0ab17",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 115.5,
+ "y": 53,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "78ad706e.d12e1"
+ ]
+ ]
+ },
+ {
+ "id": "fa08bbfd.f36978",
+ "type": "for",
+ "name": "for loop idx - VF input parameters",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 791.2501525878906,
+ "y": 357.66665744781494,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "c93f649f.0099c8"
+ ]
+ ]
+ },
+ {
+ "id": "c93f649f.0099c8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1006.0284957885742,
+ "y": 355.22224140167236,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "8f744d78.f7a31",
+ "7468dc64.d34424"
+ ]
+ ]
+ },
+ {
+ "id": "8f744d78.f7a31",
+ "type": "execute",
+ "name": "execute split parameterName",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1202.2846984863281,
+ "y": 332.97037982940674,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7468dc64.d34424",
+ "type": "set",
+ "name": "set parameterName",
+ "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+ "comments": "",
+ "x": 1171.7291259765625,
+ "y": 369.97049617767334,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "143889df.349216",
+ "type": "comment",
+ "name": "Take the parameter names by removing prefix",
+ "info": "",
+ "comments": "",
+ "x": 829.2503547668457,
+ "y": 314.3333249092102,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "3a8662b6.7187de",
+ "type": "set",
+ "name": "set new vf-module_length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",
+ "comments": "",
+ "x": 770.186767578125,
+ "y": 516.1629304885864,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "662c5c91.bf14f4",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",
+ "comments": "",
+ "x": 770.1862945556641,
+ "y": 462.15421867370605,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "64302671.d03c08",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.lan-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n",
+ "comments": "",
+ "x": 782.3531112670898,
+ "y": 624.3335423469543,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "23949443.ee4acc",
+ "type": "execute",
+ "name": "execute generate-vf-module-index",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.lan-vf-index\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 794.6866760253906,
+ "y": 570.0002617835999,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "305a60f0.cd87a",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 770.500036239624,
+ "y": 675.8373885154724,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "17d1be09.26b4d2",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 785.0000953674316,
+ "y": 725.837281703949,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "8ab4415a.f464b",
+ "type": "save",
+ "name": "save sdwan lan-port-config resource in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' \n key='lan-port-config.lan-port-config-id = $prop.lan-vf-index' >\n<parameter name=\"lan-port-config-id\" value=\"`$prop.vnf-index`\" />\n<parameter name=\"device-id\" value=\"`$prop.lan.deviceName`\" />\n<parameter name=\"port-switch\" value=\"`$prop.lan.portSwitch`\" />\n<parameter name=\"port-type\" value=\"`$prop.lan.portType`\" />\n<parameter name=\"port-number\" value=\"`$prop.lan.portnumber`\" />\n<parameter name=\"ipv4-address\" value=\"`$prop.lan.ipAddress`\" />\n<parameter name='vlan-tag' value=\"`$prop.lan.vlanId`\" />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 817.5000152587891,
+ "y": 766.3373422622681,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b65f8656.be0f98",
+ "type": "save",
+ "name": "save service relationship in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.lan-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"lan-port-config-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.lan-vf-index`\" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 785.4999313354492,
+ "y": 815.3373589515686,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "8944476b.d5f828",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 736.2224769592285,
+ "y": 862.5112180709839,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "87f25b72.4b1968",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 729,
+ "y": 165.99999713897705,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "e80313cd.820e4"
+ ]
+ ]
+ },
+ {
+ "id": "e80313cd.820e4",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 981.0000915527344,
+ "y": 164.6666603088379,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "b80badb7.d9753"
+ ]
+ ]
+ },
+ {
+ "id": "8bc04fc8.d6a11",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1352.6665802001953,
+ "y": 166.66666316986084,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "b80badb7.d9753",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1199.333408355713,
+ "y": 166.66664218902588,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "8bc04fc8.d6a11"
+ ]
+ ]
+ },
+ {
+ "id": "d0f313c6.a0ddd",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 743.4205932617188,
+ "y": 121.50386619567871,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "7ab34e25.1cd4e"
+ ]
+ ]
+ },
+ {
+ "id": "7ab34e25.1cd4e",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 930.087272644043,
+ "y": 120.8371639251709,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "984b3a64.7e1a38"
+ ]
+ ]
+ },
+ {
+ "id": "984b3a64.7e1a38",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1111.7538986206055,
+ "y": 120.8371639251709,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "c96f1257.64bf8",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 784.6705827713013,
+ "y": 241.50386714935303,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "ab6c63f4.e55a6",
+ "14b85aee.617c65"
+ ]
+ ]
+ },
+ {
+ "id": "ab6c63f4.e55a6",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1015.6705932617188,
+ "y": 217.50386428833008,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "342d6918.bdf256"
+ ]
+ ]
+ },
+ {
+ "id": "14b85aee.617c65",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1015.6705932617188,
+ "y": 257.5038642883301,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "eedb45d.e2420b8"
+ ]
+ ]
+ },
+ {
+ "id": "342d6918.bdf256",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='0' />\n",
+ "comments": "",
+ "x": 1158.1705932617188,
+ "y": 217.50386428833008,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "eedb45d.e2420b8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1160.0276374816895,
+ "y": 257.4403762817383,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "a00dcbbe.533a58",
+ "7019e496.422f8c"
+ ]
+ ]
+ },
+ {
+ "id": "7019e496.422f8c",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1312.7261123657227,
+ "y": 227.05947497440502,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "a00dcbbe.533a58",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1369.1546173095703,
+ "y": 280.2816047668457,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "19e6409a.9c554f"
+ ]
+ ]
+ },
+ {
+ "id": "f530bc4a.54c5c",
+ "type": "comment",
+ "name": "make sure this network doesn't exist already",
+ "info": "",
+ "comments": "",
+ "x": 1592.805347442627,
+ "y": 238.53566217422485,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "19e6409a.9c554f",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1644.4403381347656,
+ "y": 279.8531074523926,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "24af0b91.ce5344"
+ ]
+ ]
+ },
+ {
+ "id": "24af0b91.ce5344",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1545.1705360412598,
+ "y": 338.4245386123657,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ [
+ "bf4e4104.4edb"
+ ]
+ ]
+ },
+ {
+ "id": "bf4e4104.4edb",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",
+ "comments": "",
+ "x": 1692.920639038086,
+ "y": 338.28173068119213,
+ "z": "be7b9c9c.26b5d",
+ "wires": []
+ },
+ {
+ "id": "9ca9880e.f474f8",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-lanport-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 804.0000152587891,
+ "y": 408.99999809265137,
+ "z": "be7b9c9c.26b5d",
+ "wires": [
+ []
+ ]
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json
new file mode 100644
index 00000000..cb288630
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json
@@ -0,0 +1,1847 @@
+[
+ {
+ "id": "3eaead5d.8a50e2",
+ "type": "method",
+ "name": "method sdwan-vf-operation-lanport-deactivate",
+ "xml": "<method rpc='sdwan-vf-operation-lanport-deactivate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 252,
+ "y": 208,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "de2de50e.7db098"
+ ]
+ ]
+ },
+ {
+ "id": "ba6ca55d.d04268",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 634.0000076293945,
+ "y": 359.4136486053467,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "96bd0da6.6b228",
+ "d7d04d79.b116e",
+ "bcfd0c5e.e6103"
+ ]
+ ]
+ },
+ {
+ "id": "996651b.9ec83b",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 171.00000381469727,
+ "y": 50.413658142089844,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "509643c7.891eac"
+ ]
+ ]
+ },
+ {
+ "id": "509643c7.891eac",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 240.28570556640625,
+ "y": 113.65176773071289,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "3eaead5d.8a50e2"
+ ]
+ ]
+ },
+ {
+ "id": "de2de50e.7db098",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 252.6666717529297,
+ "y": 464.08036708831787,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "cd5d97be.4098b8",
+ "cc768085.ce4bc",
+ "ba6ca55d.d04268",
+ "582a5dfb.dfaf24",
+ "6331828e.70aa2c",
+ "60ca269e.96d878",
+ "ba5b2145.40753",
+ "d3ab3217.7d57a",
+ "58afb0e4.ba7df",
+ "2ee3209f.a1bb9",
+ "bfac8597.a517f8",
+ "b282b047.e838d",
+ "89ba2ad0.277798",
+ "e99d476c.3f3ac8",
+ "81163bc0.74e178",
+ "e8785c39.cc512",
+ "86da8112.f0417",
+ "2b5c8466.72828c",
+ "6c0bf23f.5303ac",
+ "16e6f83a.5e7ff8"
+ ]
+ ]
+ },
+ {
+ "id": "cc768085.ce4bc",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 578.0313873291016,
+ "y": 287.6828079223633,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "9776f320.0567"
+ ]
+ ]
+ },
+ {
+ "id": "cd5d97be.4098b8",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 589.0000190734863,
+ "y": 226.41366863250732,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "2debc059.5aa7"
+ ]
+ ]
+ },
+ {
+ "id": "2debc059.5aa7",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 769,
+ "y": 225.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "355351ee.f9153e"
+ ]
+ ]
+ },
+ {
+ "id": "355351ee.f9153e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 918.4287261962891,
+ "y": 226.55657577514648,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "9776f320.0567",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 807.0000152587891,
+ "y": 288.4136643409729,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "f97986b6.bf7158"
+ ]
+ ]
+ },
+ {
+ "id": "f97986b6.bf7158",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1022,
+ "y": 286.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "926d8df9.33314"
+ ]
+ ]
+ },
+ {
+ "id": "926d8df9.33314",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1186,
+ "y": 281.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "d7d04d79.b116e",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 856,
+ "y": 393.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "511ce89.f44bb18"
+ ]
+ ]
+ },
+ {
+ "id": "96bd0da6.6b228",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 860.9999961853027,
+ "y": 340.4136571884155,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "511ce89.f44bb18"
+ ]
+ ]
+ },
+ {
+ "id": "511ce89.f44bb18",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1019,
+ "y": 353.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "bcfd0c5e.e6103",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 856,
+ "y": 454.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "b8a34756.728a58"
+ ]
+ ]
+ },
+ {
+ "id": "af4bd42d.9f4868",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1210.000015258789,
+ "y": 452.4136720895767,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "b8a34756.728a58",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1017.0000457763672,
+ "y": 451.413649559021,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "af4bd42d.9f4868",
+ "69a184fd.28972c"
+ ]
+ ]
+ },
+ {
+ "id": "69a184fd.28972c",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1229.0000305175781,
+ "y": 501.41367053985596,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "72e39d48.4f8944"
+ ]
+ ]
+ },
+ {
+ "id": "72e39d48.4f8944",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1472,
+ "y": 500.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "5f38c3e.5d3ce3c"
+ ]
+ ]
+ },
+ {
+ "id": "5f38c3e.5d3ce3c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1670.0000286102295,
+ "y": 487.41366481781006,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "92d909cb.ff6d68"
+ ]
+ ]
+ },
+ {
+ "id": "92d909cb.ff6d68",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1822,
+ "y": 489.41365814208984,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "4dec85b6.3eab5c",
+ "e85d666e.e8adc8",
+ "15a9af4c.a7f031"
+ ]
+ ]
+ },
+ {
+ "id": "4dec85b6.3eab5c",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2050.000114440918,
+ "y": 431.4136619567871,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "e85d666e.e8adc8",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2054.000114440918,
+ "y": 485.4136619567871,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "582a5dfb.dfaf24",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 553.0002136230469,
+ "y": 1926.9149341583252,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "15a9af4c.a7f031",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-lanport-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2084.4551391601562,
+ "y": 536.4241542816162,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "1adddcaf.a133d3",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 891.2540740966797,
+ "y": 541.4176807403564,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "8d8ac8b6.f23b18"
+ ]
+ ]
+ },
+ {
+ "id": "cc689d86.6d6b1",
+ "type": "switchNode",
+ "name": "switch this deviceName == vf-input",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`\">\n \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1164.2543182373047,
+ "y": 627.417786359787,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "ec201f5b.98b55"
+ ]
+ ]
+ },
+ {
+ "id": "8d8ac8b6.f23b18",
+ "type": "for",
+ "name": "for vf-module-input-param length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1189.2539901733398,
+ "y": 544.4177227020264,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "cc689d86.6d6b1"
+ ]
+ ]
+ },
+ {
+ "id": "ec201f5b.98b55",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1378.2541313171387,
+ "y": 624.4177711009979,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "137ad5db.05e33a"
+ ]
+ ]
+ },
+ {
+ "id": "42b7ec46.f75e94",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1767.254322052002,
+ "y": 621.4179258346558,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "6fa7e982.f0f398"
+ ]
+ ]
+ },
+ {
+ "id": "6fa7e982.f0f398",
+ "type": "switchNode",
+ "name": "switch deviceId == input vf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2059.2542114257812,
+ "y": 622.4178848266602,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "a93d7d08.b19f3"
+ ]
+ ]
+ },
+ {
+ "id": "a93d7d08.b19f3",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2258.254379272461,
+ "y": 620.4178848266602,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "8ce50095.7309f"
+ ]
+ ]
+ },
+ {
+ "id": "8ce50095.7309f",
+ "type": "set",
+ "name": "set prop.lan.deviceId",
+ "xml": "<set>\n<parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",
+ "comments": "",
+ "x": 2431.254383087158,
+ "y": 620.4179258346558,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "6331828e.70aa2c",
+ "type": "for",
+ "name": "for service-data.vnfs.vnf_length",
+ "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 637.2539215087891,
+ "y": 476.4176778793335,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "1adddcaf.a133d3"
+ ]
+ ]
+ },
+ {
+ "id": "125425fb.ef4bfa",
+ "type": "switchNode",
+ "name": "switch ActivateSDWANSiteInstance",
+ "xml": "<!--switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\"-->\n<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1232.0042877197266,
+ "y": 748.417646408081,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "7336ac27.633e24"
+ ]
+ ]
+ },
+ {
+ "id": "38f21693.f6208a",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 765.0041732788086,
+ "y": 819.4176635742188,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "e28cdf4a.09f99"
+ ]
+ ]
+ },
+ {
+ "id": "58afb0e4.ba7df",
+ "type": "for",
+ "name": "for service-data.vnfs.vnf_length",
+ "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 629.0039825439453,
+ "y": 646.4175662994385,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "74d2892.3a20c78"
+ ]
+ ]
+ },
+ {
+ "id": "7336ac27.633e24",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1454.0042037963867,
+ "y": 748.4177279472351,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "6d31748d.e3c9bc"
+ ]
+ ]
+ },
+ {
+ "id": "6d31748d.e3c9bc",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1535.2542114257812,
+ "y": 822.9177293777466,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "7cb6a87.6e3f758"
+ ]
+ ]
+ },
+ {
+ "id": "1008121d.0f833e",
+ "type": "switchNode",
+ "name": "switch siteId",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1918.2545700073242,
+ "y": 829.9178366661072,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "7c572003.6098f"
+ ]
+ ]
+ },
+ {
+ "id": "7c572003.6098f",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2095.2545890808105,
+ "y": 832.9176769256592,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "8daf5324.de268"
+ ]
+ ]
+ },
+ {
+ "id": "63cd961f.c156c8",
+ "type": "set",
+ "name": "set prop.attach.siteId",
+ "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",
+ "comments": "",
+ "x": 2479.255096435547,
+ "y": 806.9177284240723,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "8daf5324.de268",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2254.504779815674,
+ "y": 828.4177169799805,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "63cd961f.c156c8",
+ "4f58a0f5.56037",
+ "975b7faf.1862a"
+ ]
+ ]
+ },
+ {
+ "id": "89ba2ad0.277798",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 590.0039291381836,
+ "y": 965.9176549911499,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "2d233c53.3f6be4",
+ "f1938aaa.240958",
+ "46bd4734.d48208"
+ ]
+ ]
+ },
+ {
+ "id": "2d233c53.3f6be4",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 834.0039901733398,
+ "y": 929.9176549911499,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "157032ce.bbb88d"
+ ]
+ ]
+ },
+ {
+ "id": "f1938aaa.240958",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 836.494873046875,
+ "y": 965.4916915893555,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "4af9366b.00d608"
+ ]
+ ]
+ },
+ {
+ "id": "46bd4734.d48208",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 831.827880859375,
+ "y": 1001.8250503540039,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "3961a91d.651c56"
+ ]
+ ]
+ },
+ {
+ "id": "3961a91d.651c56",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 985.6003723144531,
+ "y": 999.2641372680664,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "4af9366b.00d608",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 982.0662689208984,
+ "y": 963.7773790359497,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "157032ce.bbb88d",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 994.5041007995605,
+ "y": 927.917594909668,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "e99d476c.3f3ac8",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 603.9421615600586,
+ "y": 1069.03874874115,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "e801e029.f1d5a",
+ "8d93013.82561"
+ ]
+ ]
+ },
+ {
+ "id": "e801e029.f1d5a",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 838.9422874450684,
+ "y": 1055.038737297058,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "aaae6df9.4c056"
+ ]
+ ]
+ },
+ {
+ "id": "8d93013.82561",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 838.1922874450684,
+ "y": 1090.6816444396973,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "5e0c2f7e.4b122"
+ ]
+ ]
+ },
+ {
+ "id": "5e0c2f7e.4b122",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 986.9422950744629,
+ "y": 1091.4317264556885,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "aaae6df9.4c056",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 980.9422950744629,
+ "y": 1054.0387382507324,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "e8785c39.cc512",
+ "type": "execute",
+ "name": "execute RestApiCallNode device port delete",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 630.0312576293945,
+ "y": 1220.4918870925903,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "552b4230.a57a2c",
+ "a21ab43e.f1ce68"
+ ]
+ ]
+ },
+ {
+ "id": "552b4230.a57a2c",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 879.0313167572021,
+ "y": 1234.4920930862427,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "d1a4e04e.60501"
+ ]
+ ]
+ },
+ {
+ "id": "a21ab43e.f1ce68",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 879.0313167572021,
+ "y": 1196.491928577423,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "54a6d547.da0aec"
+ ]
+ ]
+ },
+ {
+ "id": "54a6d547.da0aec",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
+ "comments": "",
+ "x": 1023.0316505432129,
+ "y": 1195.491928100586,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "d1a4e04e.60501",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1026.031328201294,
+ "y": 1235.4919319152832,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c5c8c91e.ca8b48",
+ "type": "comment",
+ "name": "Delete port",
+ "info": "",
+ "comments": "",
+ "x": 531.6971969604492,
+ "y": 1186.9359111785889,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "81163bc0.74e178",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 578.6971969604492,
+ "y": 1135.6023473739624,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a939bddc.25a0a",
+ "type": "execute",
+ "name": "execute RestApiCallNode bridge domain create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"bridgeDomainResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1052.6815071105957,
+ "y": 1315.6025159358978,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "991e6562.cad008",
+ "a675752c.fef5c8"
+ ]
+ ]
+ },
+ {
+ "id": "991e6562.cad008",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1373.6815338134766,
+ "y": 1332.6028363704681,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "fb3cfb9f.764a18"
+ ]
+ ]
+ },
+ {
+ "id": "a675752c.fef5c8",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1376.6815605163574,
+ "y": 1297.6026179790497,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "92f1575b.a1bfb8"
+ ]
+ ]
+ },
+ {
+ "id": "92f1575b.a1bfb8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create bridge domain rest api\" />\n",
+ "comments": "",
+ "x": 1579.6819496154785,
+ "y": 1293.6027252674103,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "fb3cfb9f.764a18",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1580.6815147399902,
+ "y": 1328.602591753006,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d50d1b79.abf9a8",
+ "type": "comment",
+ "name": "Create bridge domain",
+ "info": "",
+ "comments": "",
+ "x": 996.3474006652832,
+ "y": 1282.0467417240143,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "60ca269e.96d878",
+ "type": "switchNode",
+ "name": "switch portSwitch",
+ "xml": "<switch test=\"`$prop.lan.portSwitch == 'layer2-port'`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 561.4590759277344,
+ "y": 1331.2692050933838,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "13b85938.8b9cd7"
+ ]
+ ]
+ },
+ {
+ "id": "13b85938.8b9cd7",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 749.4590034484863,
+ "y": 1329.3805322647095,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "a939bddc.25a0a"
+ ]
+ ]
+ },
+ {
+ "id": "ba5b2145.40753",
+ "type": "execute",
+ "name": "execute split ip and mask",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.lan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 577.0039672851562,
+ "y": 1417.1676979064941,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "575235a2.fb9bbc",
+ "3c20212c.49fade"
+ ]
+ ]
+ },
+ {
+ "id": "3c20212c.49fade",
+ "type": "failure",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 778.0039863586426,
+ "y": 1395.1676893234253,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "bdf015ad.4678f8"
+ ]
+ ]
+ },
+ {
+ "id": "575235a2.fb9bbc",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 778.0039901733398,
+ "y": 1436.1676931381226,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "133c89f4.2a7c76"
+ ]
+ ]
+ },
+ {
+ "id": "bdf015ad.4678f8",
+ "type": "set",
+ "name": "set ipAddress prefixLength",
+ "xml": "<set>\n<parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />",
+ "comments": "",
+ "x": 975.0040054321289,
+ "y": 1393.1676893234253,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "133c89f4.2a7c76",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",
+ "comments": "",
+ "x": 933.0039978027344,
+ "y": 1433.1676921844482,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "372eb63a.83ff6a",
+ "type": "comment",
+ "name": "TODO: split ip/mask",
+ "info": "",
+ "comments": "",
+ "x": 974.0136375427246,
+ "y": 1355.3479614257812,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "86da8112.f0417",
+ "type": "execute",
+ "name": "execute RestApiCallNode IPSubnets delete",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-ip-subnets-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"lanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 635.7753372192383,
+ "y": 1493.2885875701904,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "15bd3770.c63fa9",
+ "248a192b.d86396"
+ ]
+ ]
+ },
+ {
+ "id": "248a192b.d86396",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 904.7753677368164,
+ "y": 1480.2885599136353,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "616ee6f.3d9a718"
+ ]
+ ]
+ },
+ {
+ "id": "15bd3770.c63fa9",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 901.7753410339355,
+ "y": 1515.2887783050537,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "40c5dea7.9b57"
+ ]
+ ]
+ },
+ {
+ "id": "616ee6f.3d9a718",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
+ "comments": "",
+ "x": 1057.775749206543,
+ "y": 1476.2887859344482,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "40c5dea7.9b57",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1048.7753219604492,
+ "y": 1516.2885341644287,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "339192eb.51711e"
+ ]
+ ]
+ },
+ {
+ "id": "339192eb.51711e",
+ "type": "set",
+ "name": "set prop.lan.lanPortId",
+ "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />\n",
+ "comments": "",
+ "x": 1255.6644248962402,
+ "y": 1518.622000694275,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "6c0bf23f.5303ac",
+ "type": "execute",
+ "name": "execute RestApiCallNode create vpn topology",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 652.2857360839844,
+ "y": 1651.7474851608276,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "6503000e.7fe09",
+ "f95d774d.951318"
+ ]
+ ]
+ },
+ {
+ "id": "f95d774d.951318",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 898.2856712341309,
+ "y": 1687.7468357086182,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "1f602715.4e71b9"
+ ]
+ ]
+ },
+ {
+ "id": "1f602715.4e71b9",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1070.2856121063232,
+ "y": 1701.7468520402908,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7c916735.dbf778",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn topology failed\" />\n",
+ "comments": "",
+ "x": 1070.2857341766357,
+ "y": 1657.7468520402908,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "6503000e.7fe09",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 902.2855892181396,
+ "y": 1645.7468347549438,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "7c916735.dbf778"
+ ]
+ ]
+ },
+ {
+ "id": "2b5c8466.72828c",
+ "type": "execute",
+ "name": "execute RestApiCallNode create vpn ",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 619.2841186523438,
+ "y": 1585.246587753296,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "593d6e8d.d4036",
+ "22423ed9.18f8e2"
+ ]
+ ]
+ },
+ {
+ "id": "22423ed9.18f8e2",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 844.2840175628662,
+ "y": 1605.246500134468,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "b88f4563.6b6768"
+ ]
+ ]
+ },
+ {
+ "id": "b88f4563.6b6768",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1014.28395652771,
+ "y": 1608.246500134468,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a724847c.2c4088",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn failed\" />\n",
+ "comments": "",
+ "x": 1014.2840785980225,
+ "y": 1564.246500134468,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "593d6e8d.d4036",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 847.28395652771,
+ "y": 1564.246500134468,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "a724847c.2c4088"
+ ]
+ ]
+ },
+ {
+ "id": "1f47d1c3.9d407e",
+ "type": "switchNode",
+ "name": "switch ActivateSDWANVpnInstance",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1210.2859420776367,
+ "y": 869.7469148635864,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "6200b940.359218"
+ ]
+ ]
+ },
+ {
+ "id": "e28cdf4a.09f99",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 967.6190452575684,
+ "y": 798.746994972229,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "125425fb.ef4bfa",
+ "1f47d1c3.9d407e",
+ "712ec051.8d2a6"
+ ]
+ ]
+ },
+ {
+ "id": "6200b940.359218",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1305.9524536132812,
+ "y": 943.7469959259033,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "309bb160.fe92de"
+ ]
+ ]
+ },
+ {
+ "id": "309bb160.fe92de",
+ "type": "for",
+ "name": "for vf-modules.vf-module_length",
+ "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1520.2023391723633,
+ "y": 945.2469725608826,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "1ac88e91.8c9681"
+ ]
+ ]
+ },
+ {
+ "id": "1ac88e91.8c9681",
+ "type": "switchNode",
+ "name": "switch vpn-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1767.202377319336,
+ "y": 940.2470555305481,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "3a5e3420.dfdfbc"
+ ]
+ ]
+ },
+ {
+ "id": "3a5e3420.dfdfbc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1917.9523315429688,
+ "y": 941.7469711303711,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "f542060.75c12f8"
+ ]
+ ]
+ },
+ {
+ "id": "f542060.75c12f8",
+ "type": "set",
+ "name": "set prop.vpn1Id",
+ "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",
+ "comments": "",
+ "x": 2091.953079223633,
+ "y": 941.747029542923,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "4f58a0f5.56037",
+ "type": "set",
+ "name": "Add sites to list and update length",
+ "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
+ "comments": "",
+ "x": 2522.2864532470703,
+ "y": 847.747029542923,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "975b7faf.1862a",
+ "type": "set",
+ "name": "Add site attachement to list and update length",
+ "xml": "<set>\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+ "comments": "",
+ "x": 2553.286346435547,
+ "y": 890.7469959259033,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "d3ab3217.7d57a",
+ "type": "set",
+ "name": "set prop.siteAttachement_length=0",
+ "xml": "<set>\n<parameter name='prop.siteAttachements_length' value='0' />\n<parameter name='prop.siteIds_length' value='0' />\n\n\n\n",
+ "comments": "",
+ "x": 639.2857208251953,
+ "y": 595.7469882965088,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "7cb6a87.6e3f758",
+ "type": "block",
+ "name": "block atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1752.6193771362305,
+ "y": 823.7469940185547,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "1008121d.0f833e",
+ "38f1f3d9.ea90fc",
+ "65c7e0ab.e924d"
+ ]
+ ]
+ },
+ {
+ "id": "38f1f3d9.ea90fc",
+ "type": "switchNode",
+ "name": "switch role",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1914.9523086547852,
+ "y": 754.7469930648804,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "e4b2cfb7.2be02"
+ ]
+ ]
+ },
+ {
+ "id": "e4b2cfb7.2be02",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2077.9523124694824,
+ "y": 749.7469940185547,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "cbd09e2f.5bc81"
+ ]
+ ]
+ },
+ {
+ "id": "cbd09e2f.5bc81",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2245.9523544311523,
+ "y": 743.746992111206,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "3c601cb.4b2f2e4",
+ "2d319605.7a6e9a"
+ ]
+ ]
+ },
+ {
+ "id": "2d319605.7a6e9a",
+ "type": "switchNode",
+ "name": "switch sd-wan-edge",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2440.9524841308594,
+ "y": 704.7469835281372,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "bb6dcfdd.128fa"
+ ]
+ ]
+ },
+ {
+ "id": "3c601cb.4b2f2e4",
+ "type": "switchNode",
+ "name": "switch dsvpn-hub",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`\">\n \n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2437.952590942383,
+ "y": 759.7469990253448,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "b131819c.daa97"
+ ]
+ ]
+ },
+ {
+ "id": "91128780.38fd08",
+ "type": "set",
+ "name": "set spoke role",
+ "xml": "<set>\n<parameter name='prop.role' value=\"spoke\" />\n",
+ "comments": "",
+ "x": 2770.952606201172,
+ "y": 698.7470293045044,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "c4199cad.d68d",
+ "type": "set",
+ "name": "set hub role",
+ "xml": "<set>\n<parameter name='prop.role' value=\"hub\" />\n",
+ "comments": "",
+ "x": 2769.952365875244,
+ "y": 753.747013092041,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "bb6dcfdd.128fa",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2610.9524536132812,
+ "y": 700.4136581420898,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "91128780.38fd08"
+ ]
+ ]
+ },
+ {
+ "id": "b131819c.daa97",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2614.9524536132812,
+ "y": 755.4136581420898,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "c4199cad.d68d"
+ ]
+ ]
+ },
+ {
+ "id": "16e6f83a.5e7ff8",
+ "type": "update",
+ "name": "update SDWAN VPN status to AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' \n key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 617.3170700073242,
+ "y": 1867.4452047348022,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "65c7e0ab.e924d",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic23.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"param-name\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1910.3169555664062,
+ "y": 698.9449081420898,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "712ec051.8d2a6",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic24.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"request-action\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1153.3171730041504,
+ "y": 699.9450273513794,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "500d4c8a.78bee4",
+ "type": "comment",
+ "name": "**revert the changes",
+ "info": "",
+ "comments": "",
+ "x": 1311.316982269287,
+ "y": 704.4449405670166,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "137ad5db.05e33a",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1536.3333740234375,
+ "y": 621.6667051315308,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "42b7ec46.f75e94",
+ "5c976c54.43c564"
+ ]
+ ]
+ },
+ {
+ "id": "5c976c54.43c564",
+ "type": "set",
+ "name": "set prop.vnf-id",
+ "xml": "<set>\n<parameter name='prop.vnf-id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-id`' />\n\n",
+ "comments": "",
+ "x": 1728.0000495910645,
+ "y": 551.6666831970215,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "74d2892.3a20c78",
+ "type": "switchNode",
+ "name": "switch prop.vnf-id match",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-id == $prop.vnf-id`\">",
+ "comments": "",
+ "outputs": 1,
+ "x": 886.0003509521484,
+ "y": 673.0000200271606,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "cfdd9f28.400e6"
+ ]
+ ]
+ },
+ {
+ "id": "cfdd9f28.400e6",
+ "type": "outcomeFalse",
+ "name": "false",
+ "xml": "<outcome value='false'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 674.0005035400391,
+ "y": 748.0000233650208,
+ "z": "2a0755d2.04892a",
+ "wires": [
+ [
+ "38f21693.f6208a"
+ ]
+ ]
+ },
+ {
+ "id": "fef5106c.cc924",
+ "type": "comment",
+ "name": "if device-name match with the incomming device-name, sites in this service vnf should not be included",
+ "info": "",
+ "comments": "",
+ "x": 749.0000915527344,
+ "y": 845.0000410079956,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "2ee3209f.a1bb9",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 605.0000915527344,
+ "y": 1719.6667194366455,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "bfac8597.a517f8",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 639.3032913208008,
+ "y": 1763.4698286056519,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ },
+ {
+ "id": "b282b047.e838d",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 606.3033180236816,
+ "y": 1816.4698705673218,
+ "z": "2a0755d2.04892a",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json
new file mode 100644
index 00000000..012deec8
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json
@@ -0,0 +1,686 @@
+[
+ {
+ "id": "a54d86da.b0b4c8",
+ "type": "method",
+ "name": "method sdwan-vf-operation-lanport-delete",
+ "xml": "<method rpc='sdwan-vf-operation-lanport-delete' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 234.00000762939453,
+ "y": 230.00012350082397,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "4d4d77e8.c38938"
+ ]
+ ]
+ },
+ {
+ "id": "db831233.33e69",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 222.28571319580078,
+ "y": 130.65188121795654,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "a54d86da.b0b4c8"
+ ]
+ ]
+ },
+ {
+ "id": "62c65238.af2cac",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 143.00000762939453,
+ "y": 68.4137716293335,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "db831233.33e69"
+ ]
+ ]
+ },
+ {
+ "id": "4d4d77e8.c38938",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 250.66670989990234,
+ "y": 459.080491065979,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "26d66719.d43da8",
+ "e7e6cf90.f4145",
+ "2040df5d.c513d",
+ "58084a37.394334",
+ "8cf55d8b.9b86e",
+ "6f98bfc7.8211a",
+ "b57e1a43.a54548",
+ "9d1a9cea.dd56",
+ "49881624.abb0c8",
+ "c5683ab4.530598",
+ "d5b959e7.7e0cc8",
+ "d3e08866.ee2d18"
+ ]
+ ]
+ },
+ {
+ "id": "e7e6cf90.f4145",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 566.0313720703125,
+ "y": 304.6829128265381,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "7275fe1.35167"
+ ]
+ ]
+ },
+ {
+ "id": "26d66719.d43da8",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 571.0000267028809,
+ "y": 243.41378211975098,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "4f7f751d.4ffa8c"
+ ]
+ ]
+ },
+ {
+ "id": "4f7f751d.4ffa8c",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 751.0000076293945,
+ "y": 242.4137716293335,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "b8464fa4.268c7"
+ ]
+ ]
+ },
+ {
+ "id": "b8464fa4.268c7",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 900.4287338256836,
+ "y": 243.55668926239014,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "7275fe1.35167",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 789.0000228881836,
+ "y": 305.41377782821655,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "2f21af21.529ff"
+ ]
+ ]
+ },
+ {
+ "id": "2f21af21.529ff",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1004.0000076293945,
+ "y": 303.4137716293335,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "a1139d12.89e01"
+ ]
+ ]
+ },
+ {
+ "id": "a1139d12.89e01",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1168.0000076293945,
+ "y": 298.4137716293335,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "2040df5d.c513d",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 637.0000419616699,
+ "y": 381.4137964248657,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "6da138cf.958678",
+ "2a607157.3c86fe",
+ "9b455cd1.ad8b9"
+ ]
+ ]
+ },
+ {
+ "id": "2a607157.3c86fe",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 859.0000343322754,
+ "y": 415.4138059616089,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "9e4075b3.63ff28"
+ ]
+ ]
+ },
+ {
+ "id": "6da138cf.958678",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 864.0000305175781,
+ "y": 362.41380500793457,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "9e4075b3.63ff28"
+ ]
+ ]
+ },
+ {
+ "id": "9e4075b3.63ff28",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1022.0000343322754,
+ "y": 375.4138059616089,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "9b455cd1.ad8b9",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 859.0000343322754,
+ "y": 476.4138059616089,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "76d683a5.eebfec"
+ ]
+ ]
+ },
+ {
+ "id": "3f214675.09ba1a",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1213.0000495910645,
+ "y": 474.41381990909576,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "76d683a5.eebfec",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1020.0000801086426,
+ "y": 473.41379737854004,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "3f214675.09ba1a",
+ "42fcda16.d37964"
+ ]
+ ]
+ },
+ {
+ "id": "42fcda16.d37964",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1232.0000190734863,
+ "y": 527.4137964248657,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "9de7c553.fd25f8"
+ ]
+ ]
+ },
+ {
+ "id": "9de7c553.fd25f8",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1503.0000381469727,
+ "y": 528.4138336181641,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "f61f0e52.12de6"
+ ]
+ ]
+ },
+ {
+ "id": "f61f0e52.12de6",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1716.0001621246338,
+ "y": 515.4138031005859,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "cf9e9748.fd3478"
+ ]
+ ]
+ },
+ {
+ "id": "cf9e9748.fd3478",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1868.0001335144043,
+ "y": 517.4137964248657,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "1f23fa4e.25db46",
+ "5446fb0a.a3b5a4",
+ "71d1f1bd.544fb"
+ ]
+ ]
+ },
+ {
+ "id": "1f23fa4e.25db46",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2090.0001335144043,
+ "y": 513.4137964248657,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "5446fb0a.a3b5a4",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2096.0001335144043,
+ "y": 562.4137964248657,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "71d1f1bd.544fb",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-lan-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lan-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2124.0003547668457,
+ "y": 610.4138021469116,
+ "z": "1f04287d.306418",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "58084a37.394334",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 576.0312538146973,
+ "y": 554.4298791885376,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "a8fd4f02.a0c39"
+ ]
+ ]
+ },
+ {
+ "id": "a8fd4f02.a0c39",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 723.4598960876465,
+ "y": 554.0012893676758,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "e19c0822.f14e78"
+ ]
+ ]
+ },
+ {
+ "id": "e19c0822.f14e78",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 872.8886222839355,
+ "y": 555.1442070007324,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "8cf55d8b.9b86e",
+ "type": "switchNode",
+ "name": "switch vf-module-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 620.3294143676758,
+ "y": 624.7470846176147,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "56dc0c78.140284",
+ "7bad1343.8cb25c"
+ ]
+ ]
+ },
+ {
+ "id": "56dc0c78.140284",
+ "type": "outcome",
+ "name": "outcome PendingDelete",
+ "xml": "<outcome value='PendingDelete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 911.1626815795898,
+ "y": 628.8582077026367,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "27edf28.129770e"
+ ]
+ ]
+ },
+ {
+ "id": "7bad1343.8cb25c",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 878.1628189086914,
+ "y": 680.8582603931427,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "ea590f8e.65b32"
+ ]
+ ]
+ },
+ {
+ "id": "ea590f8e.65b32",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
+ "comments": "",
+ "x": 1037.6625862121582,
+ "y": 683.8582594394684,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "27edf28.129770e",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1108.469081878662,
+ "y": 639.1833620071411,
+ "z": "1f04287d.306418",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9d1a9cea.dd56",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 591.4406318664551,
+ "y": 1071.635935306549,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "c5683ab4.530598",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+ "comments": "",
+ "x": 598.5272789001465,
+ "y": 695.7472534179688,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "49881624.abb0c8",
+ "type": "for",
+ "name": "for lidx..service-data.vf-modules.vf-module[]",
+ "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 674.5271987915039,
+ "y": 749.7471284866333,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "3538a71e.fcff88"
+ ]
+ ]
+ },
+ {
+ "id": "6f98bfc7.8211a",
+ "type": "set",
+ "name": "set new vnf length",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+ "comments": "",
+ "x": 598.6285705566406,
+ "y": 802.5513463020325,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "d5b959e7.7e0cc8",
+ "type": "set",
+ "name": "Remove vnf from ServiceData",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",
+ "comments": "",
+ "x": 639.5272369384766,
+ "y": 849.7472591400146,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "3538a71e.fcff88",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 934.5271892547607,
+ "y": 756.7469882965088,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "10631fee.66247"
+ ]
+ ]
+ },
+ {
+ "id": "d3e08866.ee2d18",
+ "type": "delete",
+ "name": "delete lanport vf instance configuration in AAI",
+ "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='lan-port-config' \n key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 673.5276069641113,
+ "y": 1019.008641242981,
+ "z": "1f04287d.306418",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "10631fee.66247",
+ "type": "switchNode",
+ "name": "switch vnf-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1120.527256011963,
+ "y": 756.7471489906311,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "5f2f4339.fa3b9c"
+ ]
+ ]
+ },
+ {
+ "id": "5f2f4339.fa3b9c",
+ "type": "outcomeFalse",
+ "name": "false",
+ "xml": "<outcome value='false'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1289.5272636413574,
+ "y": 755.7469863891602,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "282bbccf.a76394"
+ ]
+ ]
+ },
+ {
+ "id": "282bbccf.a76394",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1443.527102470398,
+ "y": 747.7469873428345,
+ "z": "1f04287d.306418",
+ "wires": [
+ [
+ "15dd9ec6.9cd7d1",
+ "810eaf7a.70186"
+ ]
+ ]
+ },
+ {
+ "id": "15dd9ec6.9cd7d1",
+ "type": "set",
+ "name": "set vnf data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 1608.5271978378296,
+ "y": 722.747142791748,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "810eaf7a.70186",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+ "comments": "",
+ "x": 1630.5271978378296,
+ "y": 778.747106552124,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "b57e1a43.a54548",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 615.3294677734375,
+ "y": 966.0804300308228,
+ "z": "1f04287d.306418",
+ "wires": []
+ },
+ {
+ "id": "eeeb55b5.4909d8",
+ "type": "set",
+ "name": "Remove vnf from ServiceData",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].\" value=\"\"/>\n",
+ "comments": "",
+ "x": 629.3333129882812,
+ "y": 900,
+ "z": "1f04287d.306418",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json
new file mode 100644
index 00000000..87441280
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json
@@ -0,0 +1,1231 @@
+[
+ {
+ "id": "a0039ac7.2c7d88",
+ "type": "method",
+ "name": "sdwan-vf-operation-site-activate",
+ "xml": "<method rpc='sdwan-vf-operation-site-activate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 265.00390625,
+ "y": 238.9999939496629,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "c22d3a60.7ddaa8"
+ ]
+ ]
+ },
+ {
+ "id": "27e9fc06.1c68a4",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 266.00390625,
+ "y": 138.9999939496629,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "a0039ac7.2c7d88"
+ ]
+ ]
+ },
+ {
+ "id": "d5e4bca4.474e7",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 107.50391006469727,
+ "y": 52.999998688697815,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "27e9fc06.1c68a4"
+ ]
+ ]
+ },
+ {
+ "id": "c22d3a60.7ddaa8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 321.00390625,
+ "y": 394.9999939496629,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "f1b7432.96d6cc",
+ "4d30068b.cb8248",
+ "a5fa8ed1.f351a",
+ "81999ef9.7a265",
+ "9e668e87.35152",
+ "c78d235f.ab387",
+ "887e324d.70c37",
+ "bbecde3.6ca5b2",
+ "4023f188.867be",
+ "536ee31e.2dbb9c",
+ "8570b81.0d01d48",
+ "a5bc4e1c.1202d",
+ "d5f9133b.45a0f"
+ ]
+ ]
+ },
+ {
+ "id": "f1b7432.96d6cc",
+ "type": "set",
+ "name": "set prop.site.sdwan false",
+ "xml": "<set>\n<parameter name='prop.site.sdwan' value=\"false\" />\n\n",
+ "comments": "",
+ "x": 712.5078086853027,
+ "y": 178.0039163827896,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "a5fa8ed1.f351a",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 674.0078315734863,
+ "y": 296.00391483306885,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "35074f40.98b9b"
+ ]
+ ]
+ },
+ {
+ "id": "35074f40.98b9b",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 927.0079040527344,
+ "y": 287.67056906223297,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "501cda7c.262744"
+ ]
+ ]
+ },
+ {
+ "id": "58a08191.616f9",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1298.6743927001953,
+ "y": 289.6705719232559,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "501cda7c.262744",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1145.341220855713,
+ "y": 289.67055094242096,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "58a08191.616f9"
+ ]
+ ]
+ },
+ {
+ "id": "4d30068b.cb8248",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 689.4284057617188,
+ "y": 244.5077749490738,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "7bd5f4ce.76777c"
+ ]
+ ]
+ },
+ {
+ "id": "7bd5f4ce.76777c",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 876.095085144043,
+ "y": 243.84107267856598,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "7b0f629c.5a07fc"
+ ]
+ ]
+ },
+ {
+ "id": "7b0f629c.5a07fc",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1057.7617111206055,
+ "y": 243.84107267856598,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "a81de15.ac0e82",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1328.0078201293945,
+ "y": 459.0038963262923,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "7b05dd5f.af6d94"
+ ]
+ ]
+ },
+ {
+ "id": "25ac2ea9.1fa992",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1603.2935409545898,
+ "y": 458.5753990118392,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "ac802e50.23445"
+ ]
+ ]
+ },
+ {
+ "id": "50990900.1946a8",
+ "type": "set",
+ "name": "set vf-module-length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1314.579444885254,
+ "y": 422.781782746315,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "39f64e9a.4cae32",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1118.8808403015137,
+ "y": 436.1626678411849,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "a81de15.ac0e82",
+ "50990900.1946a8",
+ "6433e94c.b18f68"
+ ]
+ ]
+ },
+ {
+ "id": "c412715b.35f49",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 974.523796081543,
+ "y": 436.2261558477767,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "39f64e9a.4cae32"
+ ]
+ ]
+ },
+ {
+ "id": "81999ef9.7a265",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 738.523777961731,
+ "y": 363.22616827487946,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "c412715b.35f49",
+ "c7523305.ecaa5",
+ "87107744.973288"
+ ]
+ ]
+ },
+ {
+ "id": "c7523305.ecaa5",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 980.0078144073486,
+ "y": 335.0038973093033,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "c77fefd.df0431"
+ ]
+ ]
+ },
+ {
+ "id": "87107744.973288",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 982.0390033721924,
+ "y": 372.03520834445953,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "c77fefd.df0431"
+ ]
+ ]
+ },
+ {
+ "id": "c77fefd.df0431",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-operation-input.vf-module-request-input.vf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1139.8165187835693,
+ "y": 352.9241567850113,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "ac802e50.23445",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1807.0077819824219,
+ "y": 457.003905415535,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "62b8a185.3b8a2"
+ ]
+ ]
+ },
+ {
+ "id": "62b8a185.3b8a2",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1977.3510780334473,
+ "y": 461.0900408029556,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "d0800c3d.a149d",
+ "c55d54ef.05e398",
+ "934abf0d.9c8f4"
+ ]
+ ]
+ },
+ {
+ "id": "d0800c3d.a149d",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2219.2377700805664,
+ "y": 431.43245470523834,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "c55d54ef.05e398",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2222.6840286254883,
+ "y": 476.0900937318802,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "934abf0d.9c8f4",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-site-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2252.324935913086,
+ "y": 519.5395450592041,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e56ea967.0d64a8",
+ "type": "switchNode",
+ "name": "switch ActivateSDWANDeviceInstance",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n ",
+ "comments": "",
+ "outputs": 1,
+ "x": 1635.5079193115234,
+ "y": 525.0039278268814,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "7a4ace3.f95e93"
+ ]
+ ]
+ },
+ {
+ "id": "7a4ace3.f95e93",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1864.507667541504,
+ "y": 524.0039049386978,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "7ca1b13d.5aea"
+ ]
+ ]
+ },
+ {
+ "id": "7ca1b13d.5aea",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1819.920581817627,
+ "y": 586.0000458955765,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "3b148280.e830fe"
+ ]
+ ]
+ },
+ {
+ "id": "3b148280.e830fe",
+ "type": "for",
+ "name": "for loop deviceidx - Get deviceId from servicedata",
+ "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">",
+ "comments": "",
+ "outputs": 1,
+ "x": 2101.2543354034424,
+ "y": 596.0000663995743,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "c30dfd09.aeccc"
+ ]
+ ]
+ },
+ {
+ "id": "c30dfd09.aeccc",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 2217.254119873047,
+ "y": 647.0002518892288,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "81c39ef4.3376e"
+ ]
+ ]
+ },
+ {
+ "id": "81c39ef4.3376e",
+ "type": "switchNode",
+ "name": "switch deviceId",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n ",
+ "comments": "",
+ "outputs": 1,
+ "x": 2377.2543754577637,
+ "y": 649.0001050233841,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "52222e22.86b7"
+ ]
+ ]
+ },
+ {
+ "id": "52222e22.86b7",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2529.2545471191406,
+ "y": 648.0001050233841,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "86b2a0ab.20409"
+ ]
+ ]
+ },
+ {
+ "id": "86b2a0ab.20409",
+ "type": "set",
+ "name": "set deviceId",
+ "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",
+ "comments": "",
+ "x": 2669.254550933838,
+ "y": 647.6000596284866,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "7b05dd5f.af6d94",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1390.5078125,
+ "y": 504.00390589237213,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "25ac2ea9.1fa992",
+ "e56ea967.0d64a8"
+ ]
+ ]
+ },
+ {
+ "id": "b93cb489.5e32b8",
+ "type": "comment",
+ "name": "Get devices",
+ "info": "",
+ "comments": "",
+ "x": 1627.5078125,
+ "y": 495.00390589237213,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "6433e94c.b18f68",
+ "type": "set",
+ "name": "set prop.site.deviceId_length",
+ "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",
+ "comments": "",
+ "x": 1341.0078125,
+ "y": 387.00390589237213,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "9e668e87.35152",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 690.0078582763672,
+ "y": 452.00391256809235,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b14da696.802af8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1486.0043601989746,
+ "y": 868.7539058923721,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "715b60bd.6f62c"
+ ]
+ ]
+ },
+ {
+ "id": "715b60bd.6f62c",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1674.5044555664062,
+ "y": 862.7539155483246,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "cda4261b.975c18",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1489.4953269958496,
+ "y": 916.3279415369034,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "5d5ef9c3.e66358"
+ ]
+ ]
+ },
+ {
+ "id": "5d5ef9c3.e66358",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1663.066738128662,
+ "y": 904.6136776208878,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "15ce450b.53d72b",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1481.8283348083496,
+ "y": 957.6612545251846,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "10b242b1.35021d"
+ ]
+ ]
+ },
+ {
+ "id": "10b242b1.35021d",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1669.6008911132812,
+ "y": 953.1004472970963,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "e838c5da.a148e8",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1219.0042724609375,
+ "y": 916.7539117336273,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "b14da696.802af8",
+ "cda4261b.975c18",
+ "15ce450b.53d72b"
+ ]
+ ]
+ },
+ {
+ "id": "ef61bc2f.e72cb",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create SDWAN site",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-' + $template.site.role + '.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"site-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1246.5043334960938,
+ "y": 1106.7538763284683,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "1bbca445.afcd4c",
+ "dd7810f4.d9827"
+ ]
+ ]
+ },
+ {
+ "id": "4382528a.72cf7c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1662.1709098815918,
+ "y": 1075.642806649208,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e4a16c90.a1073",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
+ "comments": "",
+ "x": 1647.615493774414,
+ "y": 1135.198154091835,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "dd7810f4.d9827",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1502.615484237671,
+ "y": 1132.1981521844864,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "e4a16c90.a1073"
+ ]
+ ]
+ },
+ {
+ "id": "1bbca445.afcd4c",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1503.0598220825195,
+ "y": 1075.8649603128433,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "4382528a.72cf7c"
+ ]
+ ]
+ },
+ {
+ "id": "28c40fdc.d8ec",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1220.2583694458008,
+ "y": 1009.7579724788666,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "745b648e.d351dc",
+ "de446705.d7ff98"
+ ]
+ ]
+ },
+ {
+ "id": "745b648e.d351dc",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1485.2582511901855,
+ "y": 994.7578675746918,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "7f55ea12.ac1244"
+ ]
+ ]
+ },
+ {
+ "id": "de446705.d7ff98",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1477.5082511901855,
+ "y": 1036.400750875473,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "a8040204.8ea56"
+ ]
+ ]
+ },
+ {
+ "id": "a8040204.8ea56",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1603.5917472839355,
+ "y": 1036.6467835903168,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7f55ea12.ac1244",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1622.2582511901855,
+ "y": 994.7578675746918,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "d0e6b60f.9d8498",
+ "type": "comment",
+ "name": "tmp.thirdparty-sdnc-id is hardcoded value?",
+ "info": "",
+ "comments": "",
+ "x": 1267.508171081543,
+ "y": 870.7578836679459,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "f3e2e0b8.aff3b",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 943.5041809082031,
+ "y": 845.4204959869385,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "fdcbc7bd.a13598",
+ "49ca1a6b.47d2b4",
+ "e838c5da.a148e8",
+ "28c40fdc.d8ec",
+ "e1072ab4.4292c8",
+ "ef61bc2f.e72cb"
+ ]
+ ]
+ },
+ {
+ "id": "fdcbc7bd.a13598",
+ "type": "set",
+ "name": "set siteId",
+ "xml": "<set>\n<parameter name='prop.site.siteId' value=\"\" />\n\n",
+ "comments": "",
+ "x": 1160.5041847229004,
+ "y": 831.753604888916,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "47307892.eb80f8",
+ "type": "for",
+ "name": "for cpidx..prop.site.controlpoints",
+ "xml": "<for index='cpidx' start='0' end='`$prop.site.controlpoints_length`' >\n\t\t\t\t\t\t\t\t\t\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1236.504379272461,
+ "y": 781.7848201990128,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "6433e5be.2bdc0c"
+ ]
+ ]
+ },
+ {
+ "id": "6433e5be.2bdc0c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1443.50390625,
+ "y": 711.7847648859024,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "9d85c0cd.f74a",
+ "6f1b0298.c2014c"
+ ]
+ ]
+ },
+ {
+ "id": "dddca1ae.0aa96",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1885.500316619873,
+ "y": 705.7535845041275,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "5f3e8ab6.51b064"
+ ]
+ ]
+ },
+ {
+ "id": "26937b29.826f14",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1887.7501602172852,
+ "y": 744.3964706659317,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "a5bc087a.7a1fa8"
+ ]
+ ]
+ },
+ {
+ "id": "9d85c0cd.f74a",
+ "type": "set",
+ "name": "set prop.controlPtId",
+ "xml": "<set>\n<parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />\n\n",
+ "comments": "",
+ "x": 1632.5000076293945,
+ "y": 684.7535415887833,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "e1072ab4.4292c8",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1198.7894897460938,
+ "y": 1054.7535101175308,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "49ca1a6b.47d2b4",
+ "type": "switchNode",
+ "name": "switch prop.site.controlpoints ",
+ "xml": "<switch test=\"`$prop.site.controlPoint`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1093.7894897460938,
+ "y": 664.7535101175308,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "1e813b9c.d1bb24",
+ "5e874fed.35cf3"
+ ]
+ ]
+ },
+ {
+ "id": "5e874fed.35cf3",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1281.7894897460938,
+ "y": 686.7535101175308,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "8ca15cae.d821b"
+ ]
+ ]
+ },
+ {
+ "id": "85141f25.2d6e",
+ "type": "comment",
+ "name": "should be null in request",
+ "info": "",
+ "comments": "",
+ "x": 1330.5040740966797,
+ "y": 824.7535778284073,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "8ca15cae.d821b",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1090.7933807373047,
+ "y": 729.7574154138565,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "47307892.eb80f8",
+ "5fd810ad.7ad7a"
+ ]
+ ]
+ },
+ {
+ "id": "5fd810ad.7ad7a",
+ "type": "set",
+ "name": "set template file spoke",
+ "xml": "<set>\n<parameter name='template.site.role' value=\"spoke\" />\n\n",
+ "comments": "",
+ "x": 1269.7933959960938,
+ "y": 748.7574754953384,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "1e813b9c.d1bb24",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1289.7894897460938,
+ "y": 637.7535101175308,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "41d50201.d63e2c"
+ ]
+ ]
+ },
+ {
+ "id": "41d50201.d63e2c",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1427.7894897460938,
+ "y": 639.7535101175308,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "aa5fa9ea.6d1fe8"
+ ]
+ ]
+ },
+ {
+ "id": "aa5fa9ea.6d1fe8",
+ "type": "set",
+ "name": "set template file hub",
+ "xml": "<set>\n<parameter name='template.site.role' value=\"hub\" />\n\n",
+ "comments": "",
+ "x": 1596.7934875488281,
+ "y": 642.7574306726456,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "c26bdc53.ff98c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 775.5039558410645,
+ "y": 825.4201318025589,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "f3e2e0b8.aff3b"
+ ]
+ ]
+ },
+ {
+ "id": "c78d235f.ab387",
+ "type": "switchNode",
+ "name": "switch prop.site.sdwan",
+ "xml": "<switch test=\"`$prop.site.sdwan`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 681.5039215087891,
+ "y": 708.4201065301895,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "c26bdc53.ff98c"
+ ]
+ ]
+ },
+ {
+ "id": "5f3e8ab6.51b064",
+ "type": "set",
+ "name": "set siteId in control point",
+ "xml": "<set>\n<parameter name='prop.site.controlpoints[$cpidx]' value='`$tmp.aai.controlPoints.generated-site-id`' />\n\n",
+ "comments": "",
+ "x": 2064.1666679382324,
+ "y": 706.75370657444,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "a5bc087a.7a1fa8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 2028.1665077209473,
+ "y": 742.7535272836685,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "bbecde3.6ca5b2",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 675.5079383850098,
+ "y": 1382.2541280984879,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "887e324d.70c37",
+ "type": "set",
+ "name": "set siteId to service data",
+ "xml": "<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='siteId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$site-result.success[0].id`' />\n",
+ "comments": "",
+ "x": 713.1783866882324,
+ "y": 1060.9140511751175,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "4023f188.867be",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 763.5078964233398,
+ "y": 1211.7539602518082,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "8570b81.0d01d48",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 729.5078964233398,
+ "y": 1260.2539612054825,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "d5f9133b.45a0f",
+ "type": "update",
+ "name": "update SDWAN VPN status to AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='site-resource-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='generated-site-id' value='`$site-result.success[0].id`' /> \n<parameter name='operational-status' value='Active' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 734.6154022216797,
+ "y": 1314.8460041284561,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "536ee31e.2dbb9c",
+ "type": "set",
+ "name": "copy input data in service-data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 727.5078506469727,
+ "y": 1164.003914740868,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ },
+ {
+ "id": "6f1b0298.c2014c",
+ "type": "get-resource",
+ "name": "get-resource control pts for sideId",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"site-resource\" \n\t\tkey=\"site-resource.site-resource-name = $prop.controlPtId AND \n\t\t depth = '1'\"\n pfx='tmp.aai.controlPoints' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1670.8334999084473,
+ "y": 748.7536220550537,
+ "z": "85485d1c.bbd62",
+ "wires": [
+ [
+ "dddca1ae.0aa96",
+ "26937b29.826f14"
+ ]
+ ]
+ },
+ {
+ "id": "a5bc4e1c.1202d",
+ "type": "set",
+ "name": "increment param length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",
+ "comments": "",
+ "x": 717.6667060852051,
+ "y": 1112.6666584014893,
+ "z": "85485d1c.bbd62",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json
new file mode 100644
index 00000000..833563e6
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json
@@ -0,0 +1,531 @@
+[
+ {
+ "id": "39688a3a.06a796",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 265.00390625,
+ "y": 145.999990940094,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "921891f8.416e5"
+ ]
+ ]
+ },
+ {
+ "id": "921891f8.416e5",
+ "type": "method",
+ "name": "sdwan-vf-operation-site-create",
+ "xml": "<method rpc='sdwan-vf-operation-site-create' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 264.00390625,
+ "y": 245.999990940094,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "22a013b4.ab58dc"
+ ]
+ ]
+ },
+ {
+ "id": "695e0384.f33d9c",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 94.50390625,
+ "y": 56.999998569488525,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "39688a3a.06a796"
+ ]
+ ]
+ },
+ {
+ "id": "22a013b4.ab58dc",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 423.00389099121094,
+ "y": 361.99999952316284,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "4325b612.73e1e8",
+ "a6c02374.2dca",
+ "40ba27b5.057bf8",
+ "d6478b6b.a2b888",
+ "59e1bfa3.d11e4",
+ "1c5585c5.9cdc3a",
+ "a7e8dd90.c6661",
+ "2f9ca627.c38e7a",
+ "40436b2a.16f614",
+ "64771e44.2196d",
+ "bb863987.8db5d8",
+ "462de6d9.81f588"
+ ]
+ ]
+ },
+ {
+ "id": "4325b612.73e1e8",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 723.3333129882812,
+ "y": 253.49612379074097,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "63fc0005.8f2ee"
+ ]
+ ]
+ },
+ {
+ "id": "63fc0005.8f2ee",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 975.3334045410156,
+ "y": 252.1627869606018,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "c555201.0223fe"
+ ]
+ ]
+ },
+ {
+ "id": "6fae689f.7fef88",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1346.9998931884766,
+ "y": 254.16278982162476,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "c555201.0223fe",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1193.6667213439941,
+ "y": 254.1627688407898,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "6fae689f.7fef88"
+ ]
+ ]
+ },
+ {
+ "id": "d6478b6b.a2b888",
+ "type": "for",
+ "name": "for loop idx - VF input parameters",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 797.2540969848633,
+ "y": 475.6666569709778,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "e10e6c76.58a1d"
+ ]
+ ]
+ },
+ {
+ "id": "e10e6c76.58a1d",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1012.0324401855469,
+ "y": 473.2222409248352,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "9a3f095b.53aca8",
+ "454b0ff.c77c1f"
+ ]
+ ]
+ },
+ {
+ "id": "9a3f095b.53aca8",
+ "type": "execute",
+ "name": "execute split parameterName",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1208.2886428833008,
+ "y": 450.9703793525696,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "454b0ff.c77c1f",
+ "type": "set",
+ "name": "set parameterName",
+ "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+ "comments": "",
+ "x": 1177.7330703735352,
+ "y": 487.9704957008362,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "1b7ed90b.0ee057",
+ "type": "comment",
+ "name": "Take the parameter names by removing prefix",
+ "info": "",
+ "comments": "",
+ "x": 1181.2542991638184,
+ "y": 410.33332538604736,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "a6c02374.2dca",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 737.75390625,
+ "y": 208.99999284744263,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "698329a9.119718"
+ ]
+ ]
+ },
+ {
+ "id": "698329a9.119718",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 924.4205856323242,
+ "y": 208.33329057693481,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "f31a5878.bf4fd8"
+ ]
+ ]
+ },
+ {
+ "id": "f31a5878.bf4fd8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1106.0872116088867,
+ "y": 208.33329057693481,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "40ba27b5.057bf8",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 779.0038957595825,
+ "y": 328.99999380111694,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "51b4cfc4.d81ec",
+ "9cba331b.ccedc"
+ ]
+ ]
+ },
+ {
+ "id": "51b4cfc4.d81ec",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1010.00390625,
+ "y": 304.999990940094,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "3f2cb9e5.051a76"
+ ]
+ ]
+ },
+ {
+ "id": "9cba331b.ccedc",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1010.00390625,
+ "y": 344.999990940094,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "e0c33286.cb104"
+ ]
+ ]
+ },
+ {
+ "id": "3f2cb9e5.051a76",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='0' />\n",
+ "comments": "",
+ "x": 1152.50390625,
+ "y": 304.999990940094,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "e0c33286.cb104",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1154.3609504699707,
+ "y": 344.9365029335022,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "8b8b9efa.275ce",
+ "1791a391.e4fccc"
+ ]
+ ]
+ },
+ {
+ "id": "1791a391.e4fccc",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1307.059425354004,
+ "y": 314.55560162616894,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "8b8b9efa.275ce",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1363.4879302978516,
+ "y": 367.7777314186096,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "aaa91538.94bcc8"
+ ]
+ ]
+ },
+ {
+ "id": "bd3d2242.9164e",
+ "type": "comment",
+ "name": "make sure this network doesn't exist already",
+ "info": "",
+ "comments": "",
+ "x": 1587.1386604309082,
+ "y": 326.03178882598877,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "aaa91538.94bcc8",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1638.7736511230469,
+ "y": 367.3492341041565,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "a84edb80.0d80e8"
+ ]
+ ]
+ },
+ {
+ "id": "a84edb80.0d80e8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1539.503849029541,
+ "y": 425.92066526412964,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ [
+ "7ca646fd.066d78"
+ ]
+ ]
+ },
+ {
+ "id": "7ca646fd.066d78",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",
+ "comments": "",
+ "x": 1687.2539520263672,
+ "y": 425.77785733295605,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "40436b2a.16f614",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n",
+ "comments": "",
+ "x": 790.8571014404297,
+ "y": 755.4962139129639,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "2f9ca627.c38e7a",
+ "type": "execute",
+ "name": "execute generate-vf-module-index",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.site-vf-index\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 799.1905975341797,
+ "y": 702.1629467010498,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a7e8dd90.c6661",
+ "type": "set",
+ "name": "set new vf-module_length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",
+ "comments": "",
+ "x": 773.1905746459961,
+ "y": 648.1628403663635,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "59e1bfa3.d11e4",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",
+ "comments": "",
+ "x": 788.1902351379395,
+ "y": 538.1542210578918,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "1c5585c5.9cdc3a",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-site-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 804.190544128418,
+ "y": 590.154402256012,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "64771e44.2196d",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.site-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 786.0039939880371,
+ "y": 806.0000591278076,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "bb863987.8db5d8",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",
+ "comments": "",
+ "x": 795.5040130615234,
+ "y": 854.9999685287476,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ },
+ {
+ "id": "670cd372.9429ec",
+ "type": "save",
+ "name": "save sdwan vpn resource in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n key='site-resource.site-resource-id = $prop.site-vf-index' >\n<parameter name='site-resource-id' value='`$prop.site-vf-index`' />\n<parameter name='site-resource-name' value='`$prop.site.name`' />\n<parameter name='description' value='`$prop.site.description`' />\n<parameter name='type' value='`$prop.site.type`' />\n<parameter name='role' value='`$prop.site.role`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 798.0039482116699,
+ "y": 900.4999747276306,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "4d453124.5225e",
+ "type": "save",
+ "name": "save service relationship in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 797.0038909912109,
+ "y": 947.5000224113464,
+ "z": "5099ec4c.e95b94",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "462de6d9.81f588",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 745.7264213562012,
+ "y": 993.6738653182983,
+ "z": "5099ec4c.e95b94",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json
new file mode 100644
index 00000000..581bad70
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json
@@ -0,0 +1,1066 @@
+[
+ {
+ "id": "5c29a6ba.038668",
+ "type": "method",
+ "name": "method sdwan-vf-operation-site-deactivate",
+ "xml": "<method rpc='sdwan-vf-operation-site-deactivate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 236.00390625,
+ "y": 176.58634185791016,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "c10a5ef9.eb1cc"
+ ]
+ ]
+ },
+ {
+ "id": "7b112072.6efee",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 145.00390625,
+ "y": 20,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "c6cd33c4.247fe"
+ ]
+ ]
+ },
+ {
+ "id": "c6cd33c4.247fe",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 224.28961181640625,
+ "y": 82.23810958862305,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "5c29a6ba.038668"
+ ]
+ ]
+ },
+ {
+ "id": "c10a5ef9.eb1cc",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 222.6705780029297,
+ "y": 361.6667137145996,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "987b6cfb.095a4",
+ "2421aa48.a967a6",
+ "a7501bce.e84ca8",
+ "c42c3129.16bb4",
+ "67b10f8d.c3d57",
+ "7db6c871.1ca638",
+ "5c7d3c9a.2071e4",
+ "7e398340.b85bfc",
+ "27be343.61169cc",
+ "4d4441d6.c778f",
+ "2c4e5cc7.b76554",
+ "f0d9af80.b3024",
+ "1cc606fc.7b90b9"
+ ]
+ ]
+ },
+ {
+ "id": "2421aa48.a967a6",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 568.035270690918,
+ "y": 256.2691411972046,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "f656e0b.31e062"
+ ]
+ ]
+ },
+ {
+ "id": "987b6cfb.095a4",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 573.0039253234863,
+ "y": 195.00001049041748,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "d40e76d0.d5ce48"
+ ]
+ ]
+ },
+ {
+ "id": "d40e76d0.d5ce48",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 753.00390625,
+ "y": 194,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "de4bbf24.9eba4"
+ ]
+ ]
+ },
+ {
+ "id": "de4bbf24.9eba4",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 902.4326324462891,
+ "y": 195.14291763305664,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "f656e0b.31e062",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 791.0039215087891,
+ "y": 257.00000619888306,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "4eea1b40.3a5ae4"
+ ]
+ ]
+ },
+ {
+ "id": "4eea1b40.3a5ae4",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1006.00390625,
+ "y": 255,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "efdee9f.d679018"
+ ]
+ ]
+ },
+ {
+ "id": "efdee9f.d679018",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1170.00390625,
+ "y": 250,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "a7501bce.e84ca8",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 618.0039138793945,
+ "y": 327.99999046325684,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "ad789953.0300c8",
+ "a370bc16.16cab",
+ "be5b6663.110a88"
+ ]
+ ]
+ },
+ {
+ "id": "a370bc16.16cab",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 840.00390625,
+ "y": 362,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "22440a59.760c56"
+ ]
+ ]
+ },
+ {
+ "id": "ad789953.0300c8",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 845.0039024353027,
+ "y": 308.9999990463257,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "22440a59.760c56"
+ ]
+ ]
+ },
+ {
+ "id": "22440a59.760c56",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1003.00390625,
+ "y": 322,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "be5b6663.110a88",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 840.00390625,
+ "y": 423,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "cb5b975f.044798"
+ ]
+ ]
+ },
+ {
+ "id": "da67128d.15fa1",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1194.003921508789,
+ "y": 421.0000139474869,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "cb5b975f.044798",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1001.0039520263672,
+ "y": 419.99999141693115,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "da67128d.15fa1",
+ "8901c130.f196d"
+ ]
+ ]
+ },
+ {
+ "id": "8901c130.f196d",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1213.003890991211,
+ "y": 473.99999046325684,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "332a4ae3.ad50b6"
+ ]
+ ]
+ },
+ {
+ "id": "332a4ae3.ad50b6",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1456.00390625,
+ "y": 469,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "e0471cb4.f94dd"
+ ]
+ ]
+ },
+ {
+ "id": "e0471cb4.f94dd",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1654.0039348602295,
+ "y": 456.0000066757202,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "1ca5dda0.751ea2"
+ ]
+ ]
+ },
+ {
+ "id": "1ca5dda0.751ea2",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1806.00390625,
+ "y": 458,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "3077bb99.f991c4",
+ "96d4f974.763d28",
+ "37f06523.6ef90a"
+ ]
+ ]
+ },
+ {
+ "id": "3077bb99.f991c4",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2028.00390625,
+ "y": 454,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "96d4f974.763d28",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2034.00390625,
+ "y": 503,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "37f06523.6ef90a",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-site-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2062.0041275024414,
+ "y": 551.0000057220459,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "67b10f8d.c3d57",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Provided alloted resource length\"/>\n<parameter name=\"field3\" value=\"'parameters length'\"/>\n<parameter name=\"field4\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 533.0039806365967,
+ "y": 554.0000057220459,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c42c3129.16bb4",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 557.0351257324219,
+ "y": 501.0160732269287,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "288e4f16.fdb24"
+ ]
+ ]
+ },
+ {
+ "id": "288e4f16.fdb24",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 704.4637680053711,
+ "y": 500.5874834060669,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "6d758b04.419134"
+ ]
+ ]
+ },
+ {
+ "id": "6d758b04.419134",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 853.8924942016602,
+ "y": 501.73040103912354,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "7db6c871.1ca638",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 564.0351448059082,
+ "y": 603.0160584449768,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5c7d3c9a.2071e4",
+ "type": "for",
+ "name": "for loop idx - VF-module input parameters",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 604.0039367675781,
+ "y": 678.4548873901367,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "f399c5e.d5b6e38"
+ ]
+ ]
+ },
+ {
+ "id": "f399c5e.d5b6e38",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 857.8997802734375,
+ "y": 675.3768310546875,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "6f7dac79.02cc84",
+ "69380680.bf88e8"
+ ]
+ ]
+ },
+ {
+ "id": "6f7dac79.02cc84",
+ "type": "switchNode",
+ "name": "switch type",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 995.0169830322266,
+ "y": 675.3502712249756,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "8d1befdb.32c39"
+ ]
+ ]
+ },
+ {
+ "id": "8d1befdb.32c39",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1135.016990661621,
+ "y": 676.3502712249756,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "79096937.65ad98"
+ ]
+ ]
+ },
+ {
+ "id": "79096937.65ad98",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1283.5666389465332,
+ "y": 677.3769645690918,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "50251b49.1faa44"
+ ]
+ ]
+ },
+ {
+ "id": "50251b49.1faa44",
+ "type": "set",
+ "name": "set type and sdwan flag",
+ "xml": "<set>\n<parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value=\"true\" />\n",
+ "comments": "",
+ "x": 1498.9000129699707,
+ "y": 677.3769731521606,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "69380680.bf88e8",
+ "type": "switchNode",
+ "name": "switch siteId",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'siteId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 995.0168800354004,
+ "y": 750.3503141403198,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "89a7d161.ebf8a"
+ ]
+ ]
+ },
+ {
+ "id": "89a7d161.ebf8a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1135.016887664795,
+ "y": 751.3503141403198,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "8cbeced8.b613d"
+ ]
+ ]
+ },
+ {
+ "id": "8cbeced8.b613d",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1283.566535949707,
+ "y": 752.377007484436,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "5b3b802.4f9668"
+ ]
+ ]
+ },
+ {
+ "id": "5b3b802.4f9668",
+ "type": "set",
+ "name": "set siteId",
+ "xml": "<set>\n<parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",
+ "comments": "",
+ "x": 1427.8998985290527,
+ "y": 753.3770246505737,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "db911ea5.5cc8d",
+ "type": "comment",
+ "name": "Get siteId to delete",
+ "info": "",
+ "comments": "",
+ "x": 1007.0038642883301,
+ "y": 719.4549703598022,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "7e398340.b85bfc",
+ "type": "switchNode",
+ "name": "switch prop.site.sdwan",
+ "xml": "<switch test=\"`$prop.site.sdwan`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 533.5116882324219,
+ "y": 845.1213359832764,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "c63fd2c7.67fc"
+ ]
+ ]
+ },
+ {
+ "id": "c63fd2c7.67fc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 714.5118217468262,
+ "y": 846.1213626861572,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "653ef686.4a6068"
+ ]
+ ]
+ },
+ {
+ "id": "69850da3.9c7b14",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1419.0118446350098,
+ "y": 814.1214170455933,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "ba061c2b.bf22f"
+ ]
+ ]
+ },
+ {
+ "id": "ba061c2b.bf22f",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1607.5119400024414,
+ "y": 808.1214267015457,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "85b7f6ac.e36598",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1422.5028114318848,
+ "y": 861.6954526901245,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "1b75ce4a.6d0092"
+ ]
+ ]
+ },
+ {
+ "id": "1b75ce4a.6d0092",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1596.0742225646973,
+ "y": 849.9811887741089,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "5b05b37.dea904c",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1414.8358192443848,
+ "y": 903.0287656784058,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "fb9dc1ca.b519e"
+ ]
+ ]
+ },
+ {
+ "id": "fb9dc1ca.b519e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1602.6083755493164,
+ "y": 898.4679584503174,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "31c7dfa0.a2acb",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1152.0117568969727,
+ "y": 862.1214228868484,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "69850da3.9c7b14",
+ "85b7f6ac.e36598",
+ "5b05b37.dea904c"
+ ]
+ ]
+ },
+ {
+ "id": "c256fc10.56b7c",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create SDWAN site",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"site-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 1180.5121002197266,
+ "y": 1060.121494293213,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "626ea124.c2d19",
+ "77fd4a1.6d0b0b4"
+ ]
+ ]
+ },
+ {
+ "id": "6007a527.cdf6fc",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1576.1784210205078,
+ "y": 1040.0103092193604,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "1facc57c.dbee2b",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
+ "comments": "",
+ "x": 1573.6229209899902,
+ "y": 1074.5656490325928,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "2b4696aa.b04baa",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1442.6230182647705,
+ "y": 1076.5657682418823,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "1facc57c.dbee2b"
+ ]
+ ]
+ },
+ {
+ "id": "1fb3f457.93c7fc",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1434.0672721862793,
+ "y": 1039.2324876785278,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "6007a527.cdf6fc"
+ ]
+ ]
+ },
+ {
+ "id": "199f525b.bab65e",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1418.2657356262207,
+ "y": 940.1253787279129,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "e85c3a39.e5bd58"
+ ]
+ ]
+ },
+ {
+ "id": "b6235f60.69d19",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1410.5157356262207,
+ "y": 981.7682620286942,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "429813db.05fa0c"
+ ]
+ ]
+ },
+ {
+ "id": "429813db.05fa0c",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1536.5992317199707,
+ "y": 982.0142947435379,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e85c3a39.e5bd58",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1555.2657356262207,
+ "y": 940.1253787279129,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "cfb510cb.1323d",
+ "type": "comment",
+ "name": "tmp.thirdparty-sdnc-id is hardcoded value?",
+ "info": "",
+ "comments": "",
+ "x": 1147.515609741211,
+ "y": 826.1253840923309,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "653ef686.4a6068",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 875.5117568969727,
+ "y": 846.7878704071045,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "31c7dfa0.a2acb",
+ "d00d4af5.3de678",
+ "f5120e80.4ebea",
+ "c256fc10.56b7c"
+ ]
+ ]
+ },
+ {
+ "id": "d00d4af5.3de678",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1168.654685974121,
+ "y": 963.1213312149048,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "199f525b.bab65e",
+ "b6235f60.69d19"
+ ]
+ ]
+ },
+ {
+ "id": "f5120e80.4ebea",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1128.6546096801758,
+ "y": 1012.1212921142578,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "626ea124.c2d19",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1436.6546096801758,
+ "y": 1137.1212921142578,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "352b1b5f.73bb64"
+ ]
+ ]
+ },
+ {
+ "id": "352b1b5f.73bb64",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1592.6546096801758,
+ "y": 1137.1212921142578,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "77fd4a1.6d0b0b4",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1436.6546096801758,
+ "y": 1186.1212921142578,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ [
+ "a435af2d.1ebe4"
+ ]
+ ]
+ },
+ {
+ "id": "a435af2d.1ebe4",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1614.6546096801758,
+ "y": 1183.1212921142578,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "27be343.61169cc",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 558.4484710693359,
+ "y": 912.5660271644592,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "4d4441d6.c778f",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 542.1151275634766,
+ "y": 953.9827690124512,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "2c4e5cc7.b76554",
+ "type": "set",
+ "name": "set vf-module-oper-status to PendingDelete",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",
+ "comments": "",
+ "x": 597.5952453613281,
+ "y": 1003.5700263977051,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ },
+ {
+ "id": "1cc606fc.7b90b9",
+ "type": "save",
+ "name": "update site instance configuration in AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='PendingDelete' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 586.781982421875,
+ "y": 1052.4551830291748,
+ "z": "1fcdaf2d.f82361",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f0d9af80.b3024",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 507.5597839355469,
+ "y": 1103.8992748260498,
+ "z": "1fcdaf2d.f82361",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json
new file mode 100644
index 00000000..4b4448bb
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json
@@ -0,0 +1,674 @@
+[
+ {
+ "id": "187aa613.a5839a",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 235.00390625,
+ "y": 121.23810815811157,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "582fdd43.f9c334"
+ ]
+ ]
+ },
+ {
+ "id": "582fdd43.f9c334",
+ "type": "method",
+ "name": "method sdwan-vf-operation-site-delete",
+ "xml": "<method rpc='sdwan-vf-operation-site-delete' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 246.71820068359375,
+ "y": 215.58634042739868,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "5b1517bd.e6d538"
+ ]
+ ]
+ },
+ {
+ "id": "dd9a7d3b.c0b22",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 155.71820068359375,
+ "y": 58.999998569488525,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "187aa613.a5839a"
+ ]
+ ]
+ },
+ {
+ "id": "5b1517bd.e6d538",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 263.38490295410156,
+ "y": 449.66671800613403,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "9241d723.4c1768",
+ "583bedbe.114ce4",
+ "530fc00e.364a7",
+ "6080131a.3dc0dc",
+ "e87fa266.b6e36",
+ "809305f5.00af78",
+ "35360c23.e7bca4",
+ "f2c5088e.cdf1f8",
+ "8e537e93.b1e07",
+ "c5084158.dcae4",
+ "a42b62f1.2ca2"
+ ]
+ ]
+ },
+ {
+ "id": "583bedbe.114ce4",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 578.7495651245117,
+ "y": 295.2691397666931,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "54d8e288.9c571c"
+ ]
+ ]
+ },
+ {
+ "id": "9241d723.4c1768",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 583.7182197570801,
+ "y": 234.000009059906,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "deee2c29.49f92"
+ ]
+ ]
+ },
+ {
+ "id": "deee2c29.49f92",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 763.7182006835938,
+ "y": 232.99999856948853,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "c9ce5d0a.f9326"
+ ]
+ ]
+ },
+ {
+ "id": "c9ce5d0a.f9326",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 913.1469268798828,
+ "y": 234.14291620254517,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "54d8e288.9c571c",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 801.7182159423828,
+ "y": 296.0000047683716,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "60ddf1fc.3523e"
+ ]
+ ]
+ },
+ {
+ "id": "60ddf1fc.3523e",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1016.7182006835938,
+ "y": 293.9999985694885,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "3516b602.f2680a"
+ ]
+ ]
+ },
+ {
+ "id": "3516b602.f2680a",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1180.7182006835938,
+ "y": 288.9999985694885,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "530fc00e.364a7",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 649.7182350158691,
+ "y": 372.00002336502075,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "8726f5fa.6a9e18",
+ "28d1ea9e.688d26",
+ "8ffcd1cb.2fcee"
+ ]
+ ]
+ },
+ {
+ "id": "28d1ea9e.688d26",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 871.7182273864746,
+ "y": 406.0000329017639,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "ed85f484.f7f278"
+ ]
+ ]
+ },
+ {
+ "id": "8726f5fa.6a9e18",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 876.7182235717773,
+ "y": 353.0000319480896,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "ed85f484.f7f278"
+ ]
+ ]
+ },
+ {
+ "id": "ed85f484.f7f278",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1034.7182273864746,
+ "y": 366.0000329017639,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "8ffcd1cb.2fcee",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 871.7182273864746,
+ "y": 467.0000329017639,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "340e8678.09189a"
+ ]
+ ]
+ },
+ {
+ "id": "806cc3c4.ab426",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1225.7182426452637,
+ "y": 465.0000468492508,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "340e8678.09189a",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1032.7182731628418,
+ "y": 464.00002431869507,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "806cc3c4.ab426",
+ "f59f2884.04cee8"
+ ]
+ ]
+ },
+ {
+ "id": "f59f2884.04cee8",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1244.7182121276855,
+ "y": 518.0000233650208,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "2f51cfde.50b1e"
+ ]
+ ]
+ },
+ {
+ "id": "2f51cfde.50b1e",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1487.7182273864746,
+ "y": 513.0000329017639,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "b1049a4.b276d68"
+ ]
+ ]
+ },
+ {
+ "id": "b1049a4.b276d68",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1728.718355178833,
+ "y": 506.00003004074097,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "30dc082a.0a5cd8"
+ ]
+ ]
+ },
+ {
+ "id": "30dc082a.0a5cd8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1880.7183265686035,
+ "y": 508.00002336502075,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "68ce9aa6.9cbee4",
+ "6fd91070.2784d",
+ "83965509.802248"
+ ]
+ ]
+ },
+ {
+ "id": "68ce9aa6.9cbee4",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2102.7183265686035,
+ "y": 504.00002336502075,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "6fd91070.2784d",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2108.7183265686035,
+ "y": 553.0000233650208,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "83965509.802248",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-device-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2136.718547821045,
+ "y": 601.0000290870667,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "6080131a.3dc0dc",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 588.7494468688965,
+ "y": 545.0161061286926,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "73f1e922.5bcb58"
+ ]
+ ]
+ },
+ {
+ "id": "73f1e922.5bcb58",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 736.1780891418457,
+ "y": 544.5875163078308,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "a8c19777.b80838"
+ ]
+ ]
+ },
+ {
+ "id": "a8c19777.b80838",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 885.6068153381348,
+ "y": 545.7304339408875,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "e87fa266.b6e36",
+ "type": "switchNode",
+ "name": "switch vf-module-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 633.047607421875,
+ "y": 615.3333115577698,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "f563296b.c51508",
+ "5df5c282.7498ac"
+ ]
+ ]
+ },
+ {
+ "id": "f563296b.c51508",
+ "type": "outcome",
+ "name": "outcome PendingDelete",
+ "xml": "<outcome value='PendingDelete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 923.8808746337891,
+ "y": 619.4444346427917,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "def8fb03.8e15e8"
+ ]
+ ]
+ },
+ {
+ "id": "5df5c282.7498ac",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 890.8810119628906,
+ "y": 671.4444873332977,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "2bb9155.57a22ea"
+ ]
+ ]
+ },
+ {
+ "id": "2bb9155.57a22ea",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
+ "comments": "",
+ "x": 1050.3807792663574,
+ "y": 674.4444863796234,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "def8fb03.8e15e8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1121.1872749328613,
+ "y": 629.7695889472961,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a42b62f1.2ca2",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 611.1588096618652,
+ "y": 994.2221984863281,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "809305f5.00af78",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+ "comments": "",
+ "x": 607.2454776763916,
+ "y": 689.3333535194397,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "35360c23.e7bca4",
+ "type": "for",
+ "name": "for lidx..service-data.vf-modules.vf-module[]",
+ "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 687.2453918457031,
+ "y": 740.3333554267883,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "37a5b897.303c08"
+ ]
+ ]
+ },
+ {
+ "id": "f2c5088e.cdf1f8",
+ "type": "set",
+ "name": "set new vnf length",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+ "comments": "",
+ "x": 611.3467636108398,
+ "y": 793.1375732421875,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "8e537e93.b1e07",
+ "type": "set",
+ "name": "Remove vnf from ServiceData",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",
+ "comments": "",
+ "x": 648.2454376220703,
+ "y": 843.3333582878113,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "37a5b897.303c08",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 947.24538230896,
+ "y": 747.3332152366638,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "28df8155.45a17e"
+ ]
+ ]
+ },
+ {
+ "id": "b54d3819.c1f898",
+ "type": "delete",
+ "name": "delete site vf instance configuration in AAI",
+ "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 693.2457847595215,
+ "y": 941.59490442276,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "28df8155.45a17e",
+ "type": "switchNode",
+ "name": "switch vnf-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1133.245449066162,
+ "y": 747.3333759307861,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "b11e0659.68c598"
+ ]
+ ]
+ },
+ {
+ "id": "b11e0659.68c598",
+ "type": "outcomeFalse",
+ "name": "false",
+ "xml": "<outcome value='false'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1302.2454566955566,
+ "y": 746.3332133293152,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "8c9a4a2b.2a6988"
+ ]
+ ]
+ },
+ {
+ "id": "8c9a4a2b.2a6988",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1456.2452955245972,
+ "y": 738.3332142829895,
+ "z": "e1fdfe1b.e244a",
+ "wires": [
+ [
+ "9c4fcf43.faebd",
+ "f51761cb.90c27"
+ ]
+ ]
+ },
+ {
+ "id": "9c4fcf43.faebd",
+ "type": "set",
+ "name": "set vnf data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 1621.2453908920288,
+ "y": 713.3333697319031,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "f51761cb.90c27",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+ "comments": "",
+ "x": 1643.2453908920288,
+ "y": 769.333333492279,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ },
+ {
+ "id": "c5084158.dcae4",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 635.0476455688477,
+ "y": 888.6666932106018,
+ "z": "e1fdfe1b.e244a",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json
new file mode 100644
index 00000000..b51105eb
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json
@@ -0,0 +1,556 @@
+[
+ {
+ "id": "5781857d.34f10c",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 188.03125,
+ "y": 43.031253814697266,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "34ea5d13.adf2e2"
+ ]
+ ]
+ },
+ {
+ "id": "34ea5d13.adf2e2",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 267.31695556640625,
+ "y": 105.26936340332031,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "7a350033.439ec"
+ ]
+ ]
+ },
+ {
+ "id": "7a350033.439ec",
+ "type": "method",
+ "name": "method sdwan-vf-operation-vpn-activate",
+ "xml": "<method rpc='sdwan-vf-operation-vpn-activate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 279.03125,
+ "y": 199.61759567260742,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "eae20948.900428"
+ ]
+ ]
+ },
+ {
+ "id": "eae20948.900428",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 265.6979217529297,
+ "y": 384.6979675292969,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "94df5008.7b42f",
+ "7ed34394.611e1c",
+ "23e3b0bc.99c9d",
+ "3dc91e9a.3f3102",
+ "f95e37c5.b5e148",
+ "fc6cc049.08c93",
+ "b58620d0.ff986",
+ "b6f2d919.b74fa8",
+ "9597930d.e038d",
+ "ef79430c.f091e",
+ "fc543198.c0c2e",
+ "a41eacc.0c7475",
+ "d46578bf.5e8e58",
+ "21b0010b.c0a22e",
+ "5d9f4d8a.00ca04",
+ "48cf7750.d184d8",
+ "4efe1671.fc4788",
+ "d6a9c738.cde808"
+ ]
+ ]
+ },
+ {
+ "id": "94df5008.7b42f",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 805.6980133056641,
+ "y": 222.03141355514526,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "23e3b0bc.99c9d",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 637.0625152587891,
+ "y": 310.06250381469727,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7ed34394.611e1c",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 601.7603912353516,
+ "y": 266.0624761581421,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7f983045.d243a",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 924.486083984375,
+ "y": 360.04166173934937,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "875bfb0c.99b4c8",
+ "fda7ec02.f4fa3"
+ ]
+ ]
+ },
+ {
+ "id": "875bfb0c.99b4c8",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1108.4861907958984,
+ "y": 322.0416889190674,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "2605efbe.66ab7"
+ ]
+ ]
+ },
+ {
+ "id": "2605efbe.66ab7",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1282.4863166809082,
+ "y": 322.04169273376465,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "dadb2cf7.2ff69"
+ ]
+ ]
+ },
+ {
+ "id": "dadb2cf7.2ff69",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1445.4862022399902,
+ "y": 321.6416873931885,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "fda7ec02.f4fa3",
+ "type": "switchNode",
+ "name": "switch topology",
+ "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1118.9026908874512,
+ "y": 369.70831775665283,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "3ae5ca3b.f74cc6"
+ ]
+ ]
+ },
+ {
+ "id": "3ae5ca3b.f74cc6",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1292.902816772461,
+ "y": 369.7083215713501,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "4b92911a.56168"
+ ]
+ ]
+ },
+ {
+ "id": "4b92911a.56168",
+ "type": "set",
+ "name": "set topology",
+ "xml": "<set>\n<parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1455.902702331543,
+ "y": 369.3083162307739,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "3dc91e9a.3f3102",
+ "type": "for",
+ "name": "for each network-input-parameters",
+ "xml": "<for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 672.6526527404785,
+ "y": 369.708309173584,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "7f983045.d243a"
+ ]
+ ]
+ },
+ {
+ "id": "4efe1671.fc4788",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 669.4862022399902,
+ "y": 496.04168128967285,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "46f8b46c.58115c",
+ "a1d7d554.010ed8",
+ "21d4ff8e.d6051"
+ ]
+ ]
+ },
+ {
+ "id": "46f8b46c.58115c",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 931.486083984375,
+ "y": 449.04166159033775,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "df26ddf3.952"
+ ]
+ ]
+ },
+ {
+ "id": "a1d7d554.010ed8",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 934.97705078125,
+ "y": 496.615697234869,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "c96d1e93.137b6"
+ ]
+ ]
+ },
+ {
+ "id": "21d4ff8e.d6051",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 930.31005859375,
+ "y": 537.9490102231503,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "29af3383.039eac"
+ ]
+ ]
+ },
+ {
+ "id": "c96d1e93.137b6",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1111.5484619140625,
+ "y": 484.9014333188534,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "29af3383.039eac",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1118.0826148986816,
+ "y": 533.3882029950619,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "48cf7750.d184d8",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 689.4861221313477,
+ "y": 615.0416851043701,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "47bd8a4e.743ee4",
+ "5c5772a6.eeb8ac"
+ ]
+ ]
+ },
+ {
+ "id": "47bd8a4e.743ee4",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 933.486156463623,
+ "y": 592.0416917800903,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "91c9ef14.b46a4"
+ ]
+ ]
+ },
+ {
+ "id": "5c5772a6.eeb8ac",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 925.736156463623,
+ "y": 645.6845750808716,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ [
+ "b75502f5.e09e5"
+ ]
+ ]
+ },
+ {
+ "id": "91c9ef14.b46a4",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1083.486083984375,
+ "y": 593.0416603088379,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "b75502f5.e09e5",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 1078.486156463623,
+ "y": 645.4346361160278,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "df26ddf3.952",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1128.9861450195312,
+ "y": 437.04166159033775,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "5d9f4d8a.00ca04",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create vpn",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-create.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 695.2254638671875,
+ "y": 728.721978187561,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f95e37c5.b5e148",
+ "type": "set",
+ "name": "set prop.vpn-id and prop.vpn1Id",
+ "xml": "<set>\n<parameter name='prop.vpn-id' value='`$vpn-result.success[0].id`' />\n<parameter name='prop.vpn1Id' value='`$vpn-result.success[0].id`' />\n",
+ "comments": "",
+ "x": 680.2256622314453,
+ "y": 782.7221002578735,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "21b0010b.c0a22e",
+ "type": "execute",
+ "name": "execute RestApiCallNode Create vpn topology",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology-create.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 728.7254638671875,
+ "y": 825.7219481468201,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "fc6cc049.08c93",
+ "type": "set",
+ "name": "set tenant-id to service-data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='tenant-id' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.tenant-id`' />\n",
+ "comments": "",
+ "x": 670.7255401611328,
+ "y": 877.4720306396484,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "b58620d0.ff986",
+ "type": "set",
+ "name": "set vpn-id to service-data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='vpn-id' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.vpn-id`' />\n",
+ "comments": "",
+ "x": 660.9754791259766,
+ "y": 976.2218685150146,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "b6f2d919.b74fa8",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 618.0352668762207,
+ "y": 1336.5354351997375,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "d6a9c738.cde808",
+ "type": "update",
+ "name": "update SDWAN VPN status to AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='Active' />\n<parameter name='tenanat-id' value='`$prop.tenant-id`' />\n<parameter name='vpn-id' value='`$prop.vpn-id`' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 687.3649978637695,
+ "y": 1230.905207157135,
+ "z": "22c1b0cd.01617",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "fc543198.c0c2e",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 684.0000152587891,
+ "y": 1174.0000378815457,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "ef79430c.f091e",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 718.0000152587891,
+ "y": 1125.5000369278714,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "9597930d.e038d",
+ "type": "set",
+ "name": "copy input data in service-data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 681.9999694824219,
+ "y": 1077.7499914169312,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "a41eacc.0c7475",
+ "type": "set",
+ "name": "set param-length + 1",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />",
+ "comments": "",
+ "x": 657.0000476837158,
+ "y": 1026.0000734329224,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ },
+ {
+ "id": "d46578bf.5e8e58",
+ "type": "set",
+ "name": "set param length + 1",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",
+ "comments": "",
+ "x": 652.0000152587891,
+ "y": 922.0000267028809,
+ "z": "22c1b0cd.01617",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json
new file mode 100644
index 00000000..e8db0bf8
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json
@@ -0,0 +1,654 @@
+[
+ {
+ "id": "5892697a.9c21d8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 482.03125,
+ "y": 382.00000220537186,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "3419ca3e.28a196",
+ "18fb5a27.0012c6",
+ "987ea69b.4f3758",
+ "6b48247.18bfcdc",
+ "12914a5f.e6b036",
+ "5fd7b0fa.16e31",
+ "623a4487.e99e9c",
+ "4156b8b2.c36818",
+ "9723e968.8650b8",
+ "7be42a51.991f94",
+ "4a04380d.9f4fa8",
+ "ea1ae816.a77cc8",
+ "43b512b5.67ddbc",
+ "64fa1f85.6660d",
+ "37949d89.629082"
+ ]
+ ]
+ },
+ {
+ "id": "309bc096.5fac7",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 324.03126525878906,
+ "y": 165.999993622303,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "1f3522ef.5a48ed"
+ ]
+ ]
+ },
+ {
+ "id": "1f3522ef.5a48ed",
+ "type": "method",
+ "name": "sdwan-vf-operation-vpn-create",
+ "xml": "<method rpc='sdwan-vf-operation-vpn-create' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 323.03126525878906,
+ "y": 265.999993622303,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "5892697a.9c21d8"
+ ]
+ ]
+ },
+ {
+ "id": "3582a035.23289",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 153.53126525878906,
+ "y": 77.00000125169754,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "309bc096.5fac7"
+ ]
+ ]
+ },
+ {
+ "id": "3419ca3e.28a196",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 782.3606719970703,
+ "y": 273.49612647295,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "e71de9cd.25e818"
+ ]
+ ]
+ },
+ {
+ "id": "e71de9cd.25e818",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1034.3607635498047,
+ "y": 272.1627896428108,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "637c1185.e9ab2"
+ ]
+ ]
+ },
+ {
+ "id": "46c73b2c.401b84",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n\n",
+ "comments": "",
+ "x": 1406.0272521972656,
+ "y": 274.16279250383377,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "637c1185.e9ab2",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1252.6940803527832,
+ "y": 274.1627715229988,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "46c73b2c.401b84"
+ ]
+ ]
+ },
+ {
+ "id": "6b48247.18bfcdc",
+ "type": "for",
+ "name": "for loop idx - VF input parameters",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 856.2814559936523,
+ "y": 495.6666596531868,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "de525177.578e5"
+ ]
+ ]
+ },
+ {
+ "id": "de525177.578e5",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1071.059799194336,
+ "y": 493.2222436070442,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "f754a25f.6ce5b",
+ "a4e3fb1c.255518"
+ ]
+ ]
+ },
+ {
+ "id": "f754a25f.6ce5b",
+ "type": "execute",
+ "name": "execute split parameterName",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1267.3160018920898,
+ "y": 470.9703820347786,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a4e3fb1c.255518",
+ "type": "set",
+ "name": "set parameterName",
+ "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+ "comments": "",
+ "x": 1236.7604293823242,
+ "y": 507.9704983830452,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "af1423f9.97927",
+ "type": "comment",
+ "name": "Take the parameter names by removing prefix",
+ "info": "",
+ "comments": "",
+ "x": 1240.2816581726074,
+ "y": 430.3333280682564,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "18fb5a27.0012c6",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 796.7812652587891,
+ "y": 228.99999552965164,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "f110968e.0e58a8"
+ ]
+ ]
+ },
+ {
+ "id": "f110968e.0e58a8",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 983.4479446411133,
+ "y": 228.33329325914383,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "241d819c.c8566e"
+ ]
+ ]
+ },
+ {
+ "id": "241d819c.c8566e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1165.1145706176758,
+ "y": 228.33329325914383,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "987ea69b.4f3758",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 838.0312547683716,
+ "y": 348.99999648332596,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "f6ea0a95.1bfcf8",
+ "7969b2ec.a074ec"
+ ]
+ ]
+ },
+ {
+ "id": "f6ea0a95.1bfcf8",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1069.031265258789,
+ "y": 324.999993622303,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "95e71927.be46c8"
+ ]
+ ]
+ },
+ {
+ "id": "7969b2ec.a074ec",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1069.031265258789,
+ "y": 364.999993622303,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "53dfed7f.4e81b4"
+ ]
+ ]
+ },
+ {
+ "id": "95e71927.be46c8",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='0' />\n",
+ "comments": "",
+ "x": 1211.531265258789,
+ "y": 324.999993622303,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "53dfed7f.4e81b4",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1213.3883094787598,
+ "y": 364.9365056157112,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "bd7a9ede.140ae",
+ "804dd88d.6a51d8"
+ ]
+ ]
+ },
+ {
+ "id": "804dd88d.6a51d8",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1366.086784362793,
+ "y": 334.55560430837795,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "bd7a9ede.140ae",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1422.5152893066406,
+ "y": 387.77773410081863,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "549e64ff.4f02fc"
+ ]
+ ]
+ },
+ {
+ "id": "96b53f57.6e1a2",
+ "type": "comment",
+ "name": "make sure this network doesn't exist already",
+ "info": "",
+ "comments": "",
+ "x": 1646.1660194396973,
+ "y": 346.0317915081978,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "549e64ff.4f02fc",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1697.801010131836,
+ "y": 387.3492367863655,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "789deb75.f505c4"
+ ]
+ ]
+ },
+ {
+ "id": "789deb75.f505c4",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1598.53120803833,
+ "y": 445.92066794633865,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "60c9009a.34691"
+ ]
+ ]
+ },
+ {
+ "id": "60c9009a.34691",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",
+ "comments": "",
+ "x": 1746.2813110351562,
+ "y": 445.77786001516506,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "4156b8b2.c36818",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.vpn-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n\n",
+ "comments": "",
+ "x": 851.8844451904297,
+ "y": 798.4962475895882,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "623a4487.e99e9c",
+ "type": "execute",
+ "name": "execute generate-vf-module-index",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vpn-vf-index\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 863.218017578125,
+ "y": 751.162949860096,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5fd7b0fa.16e31",
+ "type": "set",
+ "name": "set new vf-module_length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",
+ "comments": "",
+ "x": 835.2180786132812,
+ "y": 702.162949860096,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "12914a5f.e6b036",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",
+ "comments": "",
+ "x": 835.2176055908203,
+ "y": 648.1542380452156,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "9723e968.8650b8",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 845.5314331054688,
+ "y": 896.0000686645508,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "64fa1f85.6660d",
+ "type": "save",
+ "name": "save sdwan vpn resource in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n key='sdwan-vpn.sdwan-vpn-id = $prop.vpn-vf-index' >\n<parameter name='sdwan-vpn-id' value='`$prop.vpn-vf-index`' />\n<parameter name='sdwan-vpn-name' value='`$prop.name`' />\n<parameter name='topology' value='`$prop.topology`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.vpn-vf-index + '/vf-module-data/'` \" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 852.0312938690186,
+ "y": 941.5000165104866,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "37949d89.629082",
+ "type": "save",
+ "name": "save service relationship in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.vpn-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vpn-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 849.0312213897705,
+ "y": 987.500047981739,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7be42a51.991f94",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 799.7537670135498,
+ "y": 1034.6739071011543,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "4a04380d.9f4fa8",
+ "type": "for",
+ "name": "for loop i - Network input parameters",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 863.2851715087891,
+ "y": 584.5039075016975,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "b830a75.ba7e858"
+ ]
+ ]
+ },
+ {
+ "id": "b830a75.ba7e858",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1150.5080490112305,
+ "y": 584.726221382618,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "e85749e.f646cb8",
+ "44026e82.c4236"
+ ]
+ ]
+ },
+ {
+ "id": "e85749e.f646cb8",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1338.729892730713,
+ "y": 567.0595255494118,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "b01f15f5.803658"
+ ]
+ ]
+ },
+ {
+ "id": "44026e82.c4236",
+ "type": "switchNode",
+ "name": "switch topology",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">",
+ "comments": "",
+ "outputs": 1,
+ "x": 1349.5695533752441,
+ "y": 607.0595236420631,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "9f894ed7.8915b"
+ ]
+ ]
+ },
+ {
+ "id": "b01f15f5.803658",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1525.729892730713,
+ "y": 563.0595255494118,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "e28f739a.4fef3"
+ ]
+ ]
+ },
+ {
+ "id": "9f894ed7.8915b",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1519.5695533752441,
+ "y": 603.0595236420631,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ [
+ "3dd20fe.b268ef"
+ ]
+ ]
+ },
+ {
+ "id": "e28f739a.4fef3",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",
+ "comments": "",
+ "x": 1675.73002243042,
+ "y": 561.6595321297646,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "3dd20fe.b268ef",
+ "type": "set",
+ "name": "set topology",
+ "xml": "<set>\n<parameter name='prop.topology' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1706.9029941558838,
+ "y": 601.5206804871559,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ },
+ {
+ "id": "ea1ae816.a77cc8",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 964.5351715087891,
+ "y": 174.00390750169754,
+ "z": "c6a9f1ad.d0abe",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "43b512b5.67ddbc",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.vpn-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 837.5313110351562,
+ "y": 847.0312881469727,
+ "z": "c6a9f1ad.d0abe",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json
new file mode 100644
index 00000000..14263832
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json
@@ -0,0 +1,599 @@
+[
+ {
+ "id": "702b97b3.8ee378",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 767.03125,
+ "y": 208.03125,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "32955a69.c89b66",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 149.36448669433594,
+ "y": 29.031090259552002,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "6d10fa5f.ef1ca4"
+ ]
+ ]
+ },
+ {
+ "id": "6d10fa5f.ef1ca4",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 228.6501922607422,
+ "y": 91.26919984817505,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "90ef259f.4465b8"
+ ]
+ ]
+ },
+ {
+ "id": "90ef259f.4465b8",
+ "type": "method",
+ "name": "method sdwan-vf-operation-vpn-deactivate",
+ "xml": "<method rpc='sdwan-vf-operation-vpn-deactivate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 240.36448669433594,
+ "y": 185.61743211746216,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "36593f98.16e3d"
+ ]
+ ]
+ },
+ {
+ "id": "36593f98.16e3d",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 227.03115844726562,
+ "y": 370.6978039741516,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "702b97b3.8ee378",
+ "2f3304e5.d7fd4c",
+ "6be98d9b.539ff4",
+ "a0c4b3e9.994a9",
+ "b323d31c.acd57",
+ "5f46d882.04a158",
+ "621066a9.944e88",
+ "e3e4d1bd.80fd7",
+ "b9de2d65.c5979",
+ "7f24be05.1cd31",
+ "c30bc7b4.1dd508",
+ "5edb2470.30880c",
+ "c2f4c0be.85e67",
+ "637b40e9.05bd1"
+ ]
+ ]
+ },
+ {
+ "id": "6be98d9b.539ff4",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 598.395751953125,
+ "y": 296.062340259552,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "2f3304e5.d7fd4c",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 563.0936279296875,
+ "y": 252.06231260299683,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d5ced122.5325a",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 874.8193664550781,
+ "y": 379.04149866104126,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "3739b39c.50fc6c",
+ "ac6efceb.fbae4",
+ "f4c9064c.3cb418",
+ "6663d5f5.4132fc"
+ ]
+ ]
+ },
+ {
+ "id": "3739b39c.50fc6c",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1069.8194274902344,
+ "y": 308.0415253639221,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "5651b769.f6f788"
+ ]
+ ]
+ },
+ {
+ "id": "5651b769.f6f788",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1243.8195533752441,
+ "y": 308.0415291786194,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "8feb29dd.764fe8"
+ ]
+ ]
+ },
+ {
+ "id": "8feb29dd.764fe8",
+ "type": "set",
+ "name": "set name",
+ "xml": "<set>\n<parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1406.8194389343262,
+ "y": 307.6415238380432,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "ac6efceb.fbae4",
+ "type": "switchNode",
+ "name": "switch topology",
+ "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1080.235927581787,
+ "y": 355.70815420150757,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "fffcbfb8.f2fa"
+ ]
+ ]
+ },
+ {
+ "id": "fffcbfb8.f2fa",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1254.2360534667969,
+ "y": 355.70815801620483,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "aba521f0.c2f18"
+ ]
+ ]
+ },
+ {
+ "id": "aba521f0.c2f18",
+ "type": "set",
+ "name": "set topology",
+ "xml": "<set>\n<parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1417.235939025879,
+ "y": 355.30815267562866,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "a0c4b3e9.994a9",
+ "type": "for",
+ "name": "for each network-input-parameters",
+ "xml": "<for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 635.9858703613281,
+ "y": 381.70817041397095,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "d5ced122.5325a"
+ ]
+ ]
+ },
+ {
+ "id": "b9de2d65.c5979",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 649.8194122314453,
+ "y": 619.0415069162846,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "962e611e.d3b8",
+ "d1b437fc.b72478",
+ "76cb6a63.2b7384"
+ ]
+ ]
+ },
+ {
+ "id": "962e611e.d3b8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 894.8194122314453,
+ "y": 565.0415081977844,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "61f20284.b32c7c"
+ ]
+ ]
+ },
+ {
+ "id": "d1b437fc.b72478",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 898.3103790283203,
+ "y": 612.6155438423157,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "d289f55.a1fa308"
+ ]
+ ]
+ },
+ {
+ "id": "76cb6a63.2b7384",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 893.6433868408203,
+ "y": 653.9488568305969,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "7041e417.d417bc"
+ ]
+ ]
+ },
+ {
+ "id": "d289f55.a1fa308",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1074.8817901611328,
+ "y": 600.9012799263,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "7041e417.d417bc",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1081.415943145752,
+ "y": 649.3880496025085,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "7f24be05.1cd31",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 657.8194122314453,
+ "y": 730.0415069162846,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "4afad198.25387",
+ "f3670767.c4d1d8"
+ ]
+ ]
+ },
+ {
+ "id": "4afad198.25387",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 896.8194847106934,
+ "y": 708.041538387537,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "7f06af8d.b7446"
+ ]
+ ]
+ },
+ {
+ "id": "f3670767.c4d1d8",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 889.0694847106934,
+ "y": 761.6844216883183,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "5cfe33a1.e2bc8c"
+ ]
+ ]
+ },
+ {
+ "id": "7f06af8d.b7446",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1046.8194122314453,
+ "y": 709.0415069162846,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "5cfe33a1.e2bc8c",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 1041.8194847106934,
+ "y": 761.4344827234745,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "61f20284.b32c7c",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1092.3194732666016,
+ "y": 553.0415081977844,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "b323d31c.acd57",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 592.3685722351074,
+ "y": 1226.5350461006165,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "f4c9064c.3cb418",
+ "type": "switchNode",
+ "name": "switch vpn-id",
+ "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vpn-id'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1077.368392944336,
+ "y": 405.284996509552,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "7073b26f.c2162c"
+ ]
+ ]
+ },
+ {
+ "id": "7073b26f.c2162c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1259.3684253692627,
+ "y": 405.2849953174591,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "ec43e2d2.05e58"
+ ]
+ ]
+ },
+ {
+ "id": "ec43e2d2.05e58",
+ "type": "set",
+ "name": "set prop.vpn-id",
+ "xml": "<set>\n<parameter name='prop.vpn-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1424.3683586120605,
+ "y": 407.88499689102173,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "6663d5f5.4132fc",
+ "type": "switchNode",
+ "name": "switch tenant-id",
+ "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'tenant-id'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1088.1182556152344,
+ "y": 449.284996509552,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "b0ecdc75.e86fd"
+ ]
+ ]
+ },
+ {
+ "id": "b0ecdc75.e86fd",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1257.1184558868408,
+ "y": 448.28499841690063,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ [
+ "aa1766f9.85f0b8"
+ ]
+ ]
+ },
+ {
+ "id": "aa1766f9.85f0b8",
+ "type": "set",
+ "name": "set prop.tenant-id",
+ "xml": "<set>\n<parameter name='prop.tenant-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",
+ "comments": "",
+ "x": 1420.1183414459229,
+ "y": 447.88499307632446,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "c30bc7b4.1dd508",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 626.3644866943359,
+ "y": 816.031090259552,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5edb2470.30880c",
+ "type": "execute",
+ "name": "execute RestApiCallNode delete vpn topology",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 685.364501953125,
+ "y": 874.6978039741516,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c2f4c0be.85e67",
+ "type": "execute",
+ "name": "execute RestApiCallNode delete vpn",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-delete.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 662.8645172119141,
+ "y": 931.6980247497559,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "637b40e9.05bd1",
+ "type": "update",
+ "name": "update SDWAN VPN status to AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='PendingDelete' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 658.5832214355469,
+ "y": 1156.734342098236,
+ "z": "e3dba753.67e0f8",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5f46d882.04a158",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 645,
+ "y": 998,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "621066a9.944e88",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 628.6666564941406,
+ "y": 1039.416741847992,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ },
+ {
+ "id": "e3e4d1bd.80fd7",
+ "type": "set",
+ "name": "set vf-module-oper-status to PendingDelete",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",
+ "comments": "",
+ "x": 684.1467742919922,
+ "y": 1089.0039992332458,
+ "z": "e3dba753.67e0f8",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json
new file mode 100644
index 00000000..eb287749
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json
@@ -0,0 +1,159 @@
+[
+ {
+ "id": "dbaa41e6.046bf",
+ "type": "method",
+ "name": "method sdwan-vf-operation-vpn-delete",
+ "xml": "<method rpc='sdwan-vf-operation-vpn-delete' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 347.03125,
+ "y": 269.99999737739563,
+ "z": "4a211eac.9076a",
+ "wires": [
+ [
+ "2654c2fb.11dfbe"
+ ]
+ ]
+ },
+ {
+ "id": "8578b02a.61d67",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 147.0311279296875,
+ "y": 109.99999737739563,
+ "z": "4a211eac.9076a",
+ "wires": [
+ [
+ "de304501.e706b8"
+ ]
+ ]
+ },
+ {
+ "id": "de304501.e706b8",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 359.03113174438477,
+ "y": 182.00001454353333,
+ "z": "4a211eac.9076a",
+ "wires": [
+ [
+ "dbaa41e6.046bf"
+ ]
+ ]
+ },
+ {
+ "id": "2654c2fb.11dfbe",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 517.4755821228027,
+ "y": 332.4444534778595,
+ "z": "4a211eac.9076a",
+ "wires": [
+ [
+ "d773525e.57dfe",
+ "7dccf11a.58654",
+ "f366cb35.f14868",
+ "1458597e.bb0697",
+ "38c53cd1.7984d4",
+ "6bc9b9bd.b7c0e8",
+ "a3fafa89.e43bc8"
+ ]
+ ]
+ },
+ {
+ "id": "d773525e.57dfe",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-vf-module-operation-delete\"/>\n<parameter name=\"field3\" value=\"SDWAN-Delete\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 792.8088531494141,
+ "y": 193.3333694934845,
+ "z": "4a211eac.9076a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7dccf11a.58654",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 806.586784362793,
+ "y": 504.9796769618988,
+ "z": "4a211eac.9076a",
+ "wires": []
+ },
+ {
+ "id": "1458597e.bb0697",
+ "type": "set",
+ "name": "set new vpn-vf length",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`\"/>\n",
+ "comments": "",
+ "x": 836.1082077026367,
+ "y": 318.89519906044006,
+ "z": "4a211eac.9076a",
+ "wires": []
+ },
+ {
+ "id": "f366cb35.f14868",
+ "type": "set",
+ "name": "Remove networks from ServiceData",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].\" value=\"\"/>\n\n",
+ "comments": "",
+ "x": 876.732364654541,
+ "y": 366.8631408214569,
+ "z": "4a211eac.9076a",
+ "wires": []
+ },
+ {
+ "id": "a3fafa89.e43bc8",
+ "type": "delete",
+ "name": "delete SDWAN VPNInstance connectivity in AAI",
+ "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='sdwan-vpn' \n key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 914.6637077331543,
+ "y": 260.00628304481506,
+ "z": "4a211eac.9076a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "38c53cd1.7984d4",
+ "type": "call",
+ "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 997.0312805175781,
+ "y": 131.99999928474426,
+ "z": "4a211eac.9076a",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "6bc9b9bd.b7c0e8",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 845.0000305175781,
+ "y": 431.00001335144043,
+ "z": "4a211eac.9076a",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json
new file mode 100644
index 00000000..bf765d8f
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json
@@ -0,0 +1,2281 @@
+[
+ {
+ "id": "aa1b72bf.43103",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 394.03125,
+ "y": 423.0742139816284,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7552c12f.99edc",
+ "298f83f7.59d8fc",
+ "c6091bc8.bb5b78",
+ "6d78088c.cbfc88",
+ "e1a9bec.bd0de4",
+ "a2c6a4a4.2e00b8",
+ "c63182d3.fbcc4",
+ "409701be.1a03c",
+ "9e802733.d722c8",
+ "7362e1fa.b1592",
+ "46743c8f.b3fd84",
+ "8679bf14.4ac1",
+ "7f799175.fb047",
+ "131a2ffd.3a8e5",
+ "92451c4e.ffaad",
+ "a7fe1093.6d40a",
+ "e9b4c90b.c4ce98",
+ "7c031fb.d5948e",
+ "e28c61da.26a12",
+ "555b730f.2ad3ec",
+ "103790c7.a4e84f",
+ "726be50f.6f16fc",
+ "e2c4dac5.6f39e8",
+ "675842c8.f4343c",
+ "86ffb9d1.271bf8",
+ "7a2f98d7.5ecea8",
+ "83739943.858e68",
+ "93891afe.aeea78",
+ "bc9fd33d.1cf95"
+ ]
+ ]
+ },
+ {
+ "id": "5ef2c8ad.bc5ff8",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 118.50391006469727,
+ "y": 72,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "988b9fb.b96a56"
+ ]
+ ]
+ },
+ {
+ "id": "988b9fb.b96a56",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 249.78960037231445,
+ "y": 121.23810863494873,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "db46e718.9e34f8"
+ ]
+ ]
+ },
+ {
+ "id": "db46e718.9e34f8",
+ "type": "method",
+ "name": "method sdwan-vf-operation-wanport-activate",
+ "xml": "<method rpc='sdwan-vf-operation-wanport-activate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 252.9325294494629,
+ "y": 206.00003242492676,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "aa1b72bf.43103"
+ ]
+ ]
+ },
+ {
+ "id": "298f83f7.59d8fc",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 823.0351600646973,
+ "y": 221.07811641693115,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "d5c2444e.40f148"
+ ]
+ ]
+ },
+ {
+ "id": "d5c2444e.40f148",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1075.0352516174316,
+ "y": 219.744779586792,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "2d2f666f.01836a"
+ ]
+ ]
+ },
+ {
+ "id": "cffa7667.9fa518",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1446.7017402648926,
+ "y": 221.74478244781494,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "2d2f666f.01836a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1293.3685684204102,
+ "y": 221.74476146697998,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "cffa7667.9fa518"
+ ]
+ ]
+ },
+ {
+ "id": "7552c12f.99edc",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 837.455753326416,
+ "y": 176.5819854736328,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "3a4ab2c5.34288e"
+ ]
+ ]
+ },
+ {
+ "id": "3a4ab2c5.34288e",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1024.1224327087402,
+ "y": 175.915283203125,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "9c32c1a6.b8f8d"
+ ]
+ ]
+ },
+ {
+ "id": "9c32c1a6.b8f8d",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1205.7890586853027,
+ "y": 175.915283203125,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "90dd0a6d.b97718",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1476.0351676940918,
+ "y": 391.0781068508513,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "6395826d.fca69c"
+ ]
+ ]
+ },
+ {
+ "id": "9272b53d.a87e88",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1984.3210220336914,
+ "y": 358.64962673187256,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "e056b855.39d1d8"
+ ]
+ ]
+ },
+ {
+ "id": "7e4a72fa.4d4f3c",
+ "type": "set",
+ "name": "set vf-module-length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1462.6067924499512,
+ "y": 354.855993270874,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "f8dd3a29.d23a98",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1266.908187866211,
+ "y": 368.2368783657439,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "90dd0a6d.b97718",
+ "7e4a72fa.4d4f3c",
+ "e9fcde91.f8ee4",
+ "15ae932b.8eaafd"
+ ]
+ ]
+ },
+ {
+ "id": "da9482b8.2c7db",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1122.5511436462402,
+ "y": 368.3003663723357,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "f8dd3a29.d23a98"
+ ]
+ ]
+ },
+ {
+ "id": "c6091bc8.bb5b78",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 886.5511255264282,
+ "y": 295.3003787994385,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "da9482b8.2c7db",
+ "75404cd4.467764",
+ "b9120614.fcff58"
+ ]
+ ]
+ },
+ {
+ "id": "75404cd4.467764",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1128.035161972046,
+ "y": 267.0781078338623,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "73c9cf7f.c3fda"
+ ]
+ ]
+ },
+ {
+ "id": "b9120614.fcff58",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1130.0663509368896,
+ "y": 304.10941886901855,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "73c9cf7f.c3fda"
+ ]
+ ]
+ },
+ {
+ "id": "73c9cf7f.c3fda",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-operation-input.vf-module-request-input.vf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1287.8438663482666,
+ "y": 284.9983673095703,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "e056b855.39d1d8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2188.0352630615234,
+ "y": 357.07813313556835,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "3493694e.e41bb6"
+ ]
+ ]
+ },
+ {
+ "id": "3493694e.e41bb6",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2358.378559112549,
+ "y": 361.164268522989,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "8b2508c0.364288",
+ "1dfeb945.730fd7",
+ "fe377f26.34769"
+ ]
+ ]
+ },
+ {
+ "id": "8b2508c0.364288",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2609.2652130126953,
+ "y": 331.50668144226074,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "1dfeb945.730fd7",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2603.71150970459,
+ "y": 376.16432145191357,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "33f87d4b.131732",
+ "type": "switchNode",
+ "name": "switch ActivateSDWANDeviceInstance",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n ",
+ "comments": "",
+ "outputs": 1,
+ "x": 1783.5352668762207,
+ "y": 457.07813835144043,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "19b41c70.4beab4"
+ ]
+ ]
+ },
+ {
+ "id": "19b41c70.4beab4",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2012.5350151062012,
+ "y": 456.07811546325684,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "1a6abe61.332a02"
+ ]
+ ]
+ },
+ {
+ "id": "1a6abe61.332a02",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1967.9479293823242,
+ "y": 518.0742564201355,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "4f4f0899.d407e8"
+ ]
+ ]
+ },
+ {
+ "id": "4f4f0899.d407e8",
+ "type": "for",
+ "name": "for loop didx - Get deviceId from servicedata",
+ "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">",
+ "comments": "",
+ "outputs": 1,
+ "x": 2249.2816829681396,
+ "y": 528.0742769241333,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "3ef068c9.f46d98"
+ ]
+ ]
+ },
+ {
+ "id": "6395826d.fca69c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1777.5352249145508,
+ "y": 362.0781407649629,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "9272b53d.a87e88"
+ ]
+ ]
+ },
+ {
+ "id": "c29879dc.c33238",
+ "type": "comment",
+ "name": "Get devices",
+ "info": "",
+ "comments": "",
+ "x": 1775.5351600646973,
+ "y": 427.07811641693115,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "e9fcde91.f8ee4",
+ "type": "set",
+ "name": "set prop.site.deviceId_length",
+ "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",
+ "comments": "",
+ "x": 1489.0351600646973,
+ "y": 319.07811641693115,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "6d78088c.cbfc88",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 838.0352058410645,
+ "y": 384.07812309265137,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "58514bba.536ea4",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 2548.281505584717,
+ "y": 522.0744781494141,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "6a60b8bf.296158"
+ ]
+ ]
+ },
+ {
+ "id": "6a60b8bf.296158",
+ "type": "switchNode",
+ "name": "switch deviceId",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n ",
+ "comments": "",
+ "outputs": 1,
+ "x": 2708.2817611694336,
+ "y": 524.0743312835693,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "6bb682b3.a31adc"
+ ]
+ ]
+ },
+ {
+ "id": "6bb682b3.a31adc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2860.2819328308105,
+ "y": 523.0743312835693,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "6989c0f.96b544"
+ ]
+ ]
+ },
+ {
+ "id": "6989c0f.96b544",
+ "type": "set",
+ "name": "set deviceId",
+ "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",
+ "comments": "",
+ "x": 3000.281936645508,
+ "y": 522.6742858886719,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "fe377f26.34769",
+ "type": "call",
+ "name": "call sdwan-get-wan-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2595.0079612731934,
+ "y": 423.00392010761425,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "48f81161.66243",
+ "type": "switchNode",
+ "name": "switch ActivateSiteInstance",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`\">\n ",
+ "comments": "",
+ "outputs": 1,
+ "x": 1763.507797241211,
+ "y": 565.7539291381836,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "c8d462fc.6ddb3"
+ ]
+ ]
+ },
+ {
+ "id": "c8d462fc.6ddb3",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2005.5076446533203,
+ "y": 596.75390625,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "92bd8825.90b9a8"
+ ]
+ ]
+ },
+ {
+ "id": "92bd8825.90b9a8",
+ "type": "set",
+ "name": "set tmp.siteVidx",
+ "xml": "<set>\n<parameter name='tmp.siteVidx' value='`$idx`' />\n<parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].`' />\n",
+ "comments": "",
+ "x": 2228.237594604492,
+ "y": 624.1824264526367,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "3ef068c9.f46d98",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2451.7578125,
+ "y": 617.0039043426514,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "a2711e1c.d6e09",
+ "113b21af.23a45e"
+ ]
+ ]
+ },
+ {
+ "id": "a2711e1c.d6e09",
+ "type": "switchNode",
+ "name": "switch name (DeviceName)",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name == 'name'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2677.425521850586,
+ "y": 618.3374032974243,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "661373f5.be831c"
+ ]
+ ]
+ },
+ {
+ "id": "661373f5.be831c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2879.426013946533,
+ "y": 612.3374633789062,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "e8b03259.bbcb"
+ ]
+ ]
+ },
+ {
+ "id": "e8b03259.bbcb",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2697.7590560913086,
+ "y": 695.3374328613281,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "4554c798.aa2dd8",
+ "bf88a576.7aa2c8"
+ ]
+ ]
+ },
+ {
+ "id": "4554c798.aa2dd8",
+ "type": "switchNode",
+ "name": "switch deviceName match",
+ "xml": "<switch test=\"`$prop.wan.deviceName == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2903.42578125,
+ "y": 696.3374967575073,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "8f8b4c45.50538"
+ ]
+ ]
+ },
+ {
+ "id": "8f8b4c45.50538",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 3086.7597618103027,
+ "y": 698.3375577926636,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "b9108ee7.e5b06"
+ ]
+ ]
+ },
+ {
+ "id": "b9108ee7.e5b06",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2986.0917205810547,
+ "y": 770.3373403549194,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "4d1bca38.4b9934",
+ "ad38b737.99a528",
+ "d2df96f9.05ab08"
+ ]
+ ]
+ },
+ {
+ "id": "ad38b737.99a528",
+ "type": "set",
+ "name": "set tmp.devicevidx",
+ "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$idx`' />\n\n",
+ "comments": "",
+ "x": 3236.84765625,
+ "y": 891.0104351043701,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "26e95066.5bddc",
+ "type": "switchNode",
+ "name": "switch deviceId",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 3535.515853881836,
+ "y": 831.677375793457,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "1f6de92a.592947"
+ ]
+ ]
+ },
+ {
+ "id": "1f6de92a.592947",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 3688.5162239074707,
+ "y": 832.6774530410767,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "49ba52e1.34347c"
+ ]
+ ]
+ },
+ {
+ "id": "49ba52e1.34347c",
+ "type": "set",
+ "name": "set prop.wan.deviceId",
+ "xml": "<set>\n<parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n",
+ "comments": "",
+ "x": 3857.516830444336,
+ "y": 831.2774877548218,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "4d1bca38.4b9934",
+ "type": "for",
+ "name": "for loop deviceidx - Get deviceId from servicedata",
+ "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n \n \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 3279.045753479004,
+ "y": 766.0417041778564,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "9729ab27.7939b8"
+ ]
+ ]
+ },
+ {
+ "id": "9729ab27.7939b8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 3356.046485900879,
+ "y": 830.0418033599854,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "26e95066.5bddc"
+ ]
+ ]
+ },
+ {
+ "id": "6cd6d96e.5cd3a8",
+ "type": "comment",
+ "name": "Get siteId from site resource created for this service",
+ "info": "",
+ "comments": "",
+ "x": 936.7578377723694,
+ "y": 440.0039186477661,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "e1a9bec.bd0de4",
+ "type": "for",
+ "name": "for loop sidx - Get siteId from servicedata",
+ "xml": "<for index=\"sidx\" start=\"0\" end=\"`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n \n \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 899.7578353881836,
+ "y": 478.6705856323242,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "d8025975.c452c8"
+ ]
+ ]
+ },
+ {
+ "id": "d8025975.c452c8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1161.7680282592773,
+ "y": 479.34741020202637,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7ae7755a.84d27c"
+ ]
+ ]
+ },
+ {
+ "id": "7ae7755a.84d27c",
+ "type": "switchNode",
+ "name": "switch siteId",
+ "xml": "<switch test=\"`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].name == 'siteId'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1330.7581634521484,
+ "y": 479.67071628570557,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "6e34759a.33dd3c"
+ ]
+ ]
+ },
+ {
+ "id": "6e34759a.33dd3c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1264.7586250305176,
+ "y": 546.6707553863525,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "4cc37cb0.d42884"
+ ]
+ ]
+ },
+ {
+ "id": "4cc37cb0.d42884",
+ "type": "set",
+ "name": "set prop.wan.siteId",
+ "xml": "<set>\n<parameter name='prop.wan.siteId' value='`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].value`' />\n\n\n",
+ "comments": "",
+ "x": 1438.7585945129395,
+ "y": 543.2706317901611,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "83739943.858e68",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 807.7578125,
+ "y": 654.7539043426514,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "a8fa84ce.eb12f8",
+ "d18bc7f4.341358",
+ "3bf2ecab.90fcb4"
+ ]
+ ]
+ },
+ {
+ "id": "a8fa84ce.eb12f8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1039.7578964233398,
+ "y": 618.753927230835,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "9b3d8e62.faaef"
+ ]
+ ]
+ },
+ {
+ "id": "d18bc7f4.341358",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1042.248779296875,
+ "y": 654.3279638290405,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7795db23.93cf44"
+ ]
+ ]
+ },
+ {
+ "id": "3bf2ecab.90fcb4",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1037.581787109375,
+ "y": 690.661322593689,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "dde2f622.170a38"
+ ]
+ ]
+ },
+ {
+ "id": "dde2f622.170a38",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1191.3542785644531,
+ "y": 688.1004095077515,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7795db23.93cf44",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1187.8201751708984,
+ "y": 652.6136512756348,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "9b3d8e62.faaef",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1195.2580108642578,
+ "y": 617.7538194656372,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "93891afe.aeea78",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 822.2679443359375,
+ "y": 742.4309062957764,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "5c43c4aa.9264cc",
+ "33df2014.cd50d"
+ ]
+ ]
+ },
+ {
+ "id": "5c43c4aa.9264cc",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1057.2680702209473,
+ "y": 728.4308948516846,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "28f385cf.49854a"
+ ]
+ ]
+ },
+ {
+ "id": "28f385cf.49854a",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1199.2680778503418,
+ "y": 727.4308958053589,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "112c2ecc.277fc1",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 1205.2680778503418,
+ "y": 764.8238840103149,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "33df2014.cd50d",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1056.5180702209473,
+ "y": 764.0738019943237,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "112c2ecc.277fc1"
+ ]
+ ]
+ },
+ {
+ "id": "bc9fd33d.1cf95",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 797.2676391601562,
+ "y": 797.7639751434326,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "addc3c45.8b358",
+ "type": "comment",
+ "name": "Create port",
+ "info": "",
+ "comments": "",
+ "x": 1084.7578392028809,
+ "y": 826.2539043426514,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7a2f98d7.5ecea8",
+ "type": "execute",
+ "name": "execute RestApiCallNode device port create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 856.0918731689453,
+ "y": 883.8098802566528,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "fd994a2a.92c728",
+ "92fe968a.87b558"
+ ]
+ ]
+ },
+ {
+ "id": "92fe968a.87b558",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1105.091932296753,
+ "y": 859.8099217414856,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "3a8360ac.8e93a"
+ ]
+ ]
+ },
+ {
+ "id": "fd994a2a.92c728",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1153.0919361114502,
+ "y": 897.8100881576538,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "c9adde1d.a5805"
+ ]
+ ]
+ },
+ {
+ "id": "3a8360ac.8e93a",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
+ "comments": "",
+ "x": 1249.0922660827637,
+ "y": 858.8099212646484,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "c9adde1d.a5805",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1300.091947555542,
+ "y": 898.8099269866943,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a2c6a4a4.2e00b8",
+ "type": "for",
+ "name": "for loop idx - VF-module input parameters",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 861.4032020568848,
+ "y": 1001.4548950195312,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "925ea7f2.d972f8"
+ ]
+ ]
+ },
+ {
+ "id": "925ea7f2.d972f8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1105.2991561889648,
+ "y": 1000.3768668174744,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "47d44aef.50cf54"
+ ]
+ ]
+ },
+ {
+ "id": "47d44aef.50cf54",
+ "type": "switchNode",
+ "name": "switch IPMode",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1253.4164009094238,
+ "y": 1002.3503503799438,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "14cc8583.77380a"
+ ]
+ ]
+ },
+ {
+ "id": "14cc8583.77380a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1401.4163856506348,
+ "y": 999.3503150939941,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "1dbcdc9e.2ab813"
+ ]
+ ]
+ },
+ {
+ "id": "1dbcdc9e.2ab813",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1562.4032516479492,
+ "y": 1001.2326736450195,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "193e5621.82d8aa",
+ "c01114ca.b0a928"
+ ]
+ ]
+ },
+ {
+ "id": "193e5621.82d8aa",
+ "type": "switchNode",
+ "name": "switch portType GE match",
+ "xml": "<switch test=\"`GE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1764.0699272155762,
+ "y": 1002.2327299118042,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "bc174d71.6f73c"
+ ]
+ ]
+ },
+ {
+ "id": "bc174d71.6f73c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1949.4041366577148,
+ "y": 993.2328510284424,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "b0b3b2d7.c3aed"
+ ]
+ ]
+ },
+ {
+ "id": "c01114ca.b0a928",
+ "type": "switchNode",
+ "name": "switch portType LTE match",
+ "xml": "<switch test=\"`LTE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1763.4032936096191,
+ "y": 1064.232717514038,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "acc83fa1.efe81"
+ ]
+ ]
+ },
+ {
+ "id": "acc83fa1.efe81",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1964.4033832550049,
+ "y": 1068.2326908111572,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "30dfd74d.405928"
+ ]
+ ]
+ },
+ {
+ "id": "e31d4c6.c361fb",
+ "type": "comment",
+ "name": "set linkType as Ethernet",
+ "info": "",
+ "comments": "",
+ "x": 2189.4034156799316,
+ "y": 946.2327260971069,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "60995785.6141d8",
+ "type": "comment",
+ "name": "set linkType as Cellular",
+ "info": "",
+ "comments": "",
+ "x": 2200.625476837158,
+ "y": 1033.2326751947403,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "86ffb9d1.271bf8",
+ "type": "execute",
+ "name": "execute RestApiCallNode device port create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 877.5149421691895,
+ "y": 1130.7885818481445,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "fa0604ac.0f5bc8",
+ "2afd5b9a.0c9054"
+ ]
+ ]
+ },
+ {
+ "id": "2afd5b9a.0c9054",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1126.515001296997,
+ "y": 1106.7886233329773,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "fd5d5c5b.4f78f"
+ ]
+ ]
+ },
+ {
+ "id": "fa0604ac.0f5bc8",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1126.515001296997,
+ "y": 1144.7887878417969,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "2654b242.f97d8e"
+ ]
+ ]
+ },
+ {
+ "id": "fd5d5c5b.4f78f",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",
+ "comments": "",
+ "x": 1270.5153350830078,
+ "y": 1105.7886228561401,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "2654b242.f97d8e",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1273.5150127410889,
+ "y": 1145.7886266708374,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b0b3b2d7.c3aed",
+ "type": "set",
+ "name": "set prop.wan.linkType Ethernet",
+ "xml": "<set>\n<parameter name='prop.wan.linkType' value=\"Ethernet\" />\n\n",
+ "comments": "",
+ "x": 2176.1807975769043,
+ "y": 986.6770839691162,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "30dfd74d.405928",
+ "type": "set",
+ "name": "set prop.wan.linkType Cellular",
+ "xml": "<set>\n<parameter name='prop.wan.linkType' value=\"Cellular\" />",
+ "comments": "",
+ "x": 2186.1808433532715,
+ "y": 1066.6770544052124,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "e2c4dac5.6f39e8",
+ "type": "execute",
+ "name": "execute RestApiCallNode get transport network info",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"get\"/>\n<parameter name=\"responsePrefix\" value=\"transportNetworksResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 908.5352516174316,
+ "y": 1220.0782823562622,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7a45df8a.7903b",
+ "36ac3856.141338"
+ ]
+ ]
+ },
+ {
+ "id": "555b730f.2ad3ec",
+ "type": "execute",
+ "name": "execute RestApiCallNode wan port create",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"wanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 881.5354232788086,
+ "y": 1604.078293800354,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "3f91502c.081fa",
+ "6ca447f7.7cb2c8"
+ ]
+ ]
+ },
+ {
+ "id": "cb6170fa.31a46",
+ "type": "set",
+ "name": "set prop.wan.transportNetworkId",
+ "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\n",
+ "comments": "",
+ "x": 1776.5262603759766,
+ "y": 1335.0683436393738,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "409701be.1a03c",
+ "type": "execute",
+ "name": "execute split ip and mask",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.wan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 828.5250358581543,
+ "y": 1396.4012417793274,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "33b19903.96b096",
+ "f243f0f3.7944c"
+ ]
+ ]
+ },
+ {
+ "id": "f243f0f3.7944c",
+ "type": "failure",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1029.5250549316406,
+ "y": 1374.4012331962585,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "f9bdce70.a5d11"
+ ]
+ ]
+ },
+ {
+ "id": "33b19903.96b096",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1029.525058746338,
+ "y": 1415.4012370109558,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7b17ef62.bca26"
+ ]
+ ]
+ },
+ {
+ "id": "f9bdce70.a5d11",
+ "type": "set",
+ "name": "set ipAddress prefixLength",
+ "xml": "<set>\n<parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />",
+ "comments": "",
+ "x": 1226.525074005127,
+ "y": 1372.4012331962585,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7b17ef62.bca26",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",
+ "comments": "",
+ "x": 1184.5250663757324,
+ "y": 1412.4012360572815,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "5dfad1bf.4368f",
+ "type": "switchNode",
+ "name": "switch transportNetworkName same",
+ "xml": "<switch test=\"`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1364.5359382629395,
+ "y": 1287.7447051107883,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "2b9a741b.c318cc"
+ ]
+ ]
+ },
+ {
+ "id": "2b9a741b.c318cc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1611.5355377197266,
+ "y": 1286.744643688202,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "cb6170fa.31a46"
+ ]
+ ]
+ },
+ {
+ "id": "844b5fe4.d3379",
+ "type": "set",
+ "name": "set prop.wan.wanPortId",
+ "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />\n",
+ "comments": "",
+ "x": 1538.859546661377,
+ "y": 1622.735113143921,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "c63182d3.fbcc4",
+ "type": "set",
+ "name": "set prop.wan.devicePortId",
+ "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />\n",
+ "comments": "",
+ "x": 823.526050567627,
+ "y": 1176.0681076049805,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "d1467d26.a7bbb",
+ "type": "comment",
+ "name": "Get network id",
+ "info": "",
+ "comments": "",
+ "x": 1016.5349006652832,
+ "y": 1185.411289215088,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "4696daa4.7bc6d4",
+ "type": "comment",
+ "name": "Create wan port",
+ "info": "",
+ "comments": "",
+ "x": 812.5349235534668,
+ "y": 1361.411374092102,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "6ca447f7.7cb2c8",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1153.5351524353027,
+ "y": 1578.077886581421,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "6062b706.984518"
+ ]
+ ]
+ },
+ {
+ "id": "3f91502c.081fa",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1151.5350723266602,
+ "y": 1625.078049659729,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "9419758e.c47e08"
+ ]
+ ]
+ },
+ {
+ "id": "9419758e.c47e08",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1320.5350799560547,
+ "y": 1625.0778864622116,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "844b5fe4.d3379"
+ ]
+ ]
+ },
+ {
+ "id": "88101c47.a8c7e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create wan port rest api\" />\n",
+ "comments": "",
+ "x": 1492.535488128662,
+ "y": 1579.0778856277466,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "36ac3856.141338",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1210.534755706787,
+ "y": 1199.0777764320374,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "b8093d9a.685ef"
+ ]
+ ]
+ },
+ {
+ "id": "7a45df8a.7903b",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1210.5347518920898,
+ "y": 1239.077941417694,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "f5cec88.5afd738"
+ ]
+ ]
+ },
+ {
+ "id": "f5cec88.5afd738",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1354.534767150879,
+ "y": 1238.077778339386,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b8093d9a.685ef",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Get transport network info rest api\" />\n",
+ "comments": "",
+ "x": 1352.5350875854492,
+ "y": 1198.0777764320374,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "86b35264.46fea",
+ "type": "comment",
+ "name": "TODO: split ip/mask",
+ "info": "",
+ "comments": "",
+ "x": 1225.5347061157227,
+ "y": 1334.5815052986145,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "85c6d777.738908",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1114.5355415344238,
+ "y": 1286.411331653595,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "5dfad1bf.4368f"
+ ]
+ ]
+ },
+ {
+ "id": "675842c8.f4343c",
+ "type": "for",
+ "name": "for loop tidx - Get transportNetwork ID",
+ "xml": "<for index=\"tidx\" start=\"0\" end=\"`$transportNetworksResp.data.transportNetworks_length`\">\n \n \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 870.5352210998535,
+ "y": 1289.411153793335,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "85c6d777.738908"
+ ]
+ ]
+ },
+ {
+ "id": "6062b706.984518",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1313.5389022827148,
+ "y": 1576.5816287994385,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9e802733.d722c8",
+ "type": "for",
+ "name": "for loop idx - VF-module input parameters",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 871.8372230529785,
+ "y": 1481.6666259765625,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7d8af107.52b1d"
+ ]
+ ]
+ },
+ {
+ "id": "7d8af107.52b1d",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1115.7331771850586,
+ "y": 1480.5885977745056,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "58ac9d77.f3c914"
+ ]
+ ]
+ },
+ {
+ "id": "58ac9d77.f3c914",
+ "type": "switchNode",
+ "name": "switch IPMode",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1263.8504219055176,
+ "y": 1482.562081336975,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "463d34c6.f0572c"
+ ]
+ ]
+ },
+ {
+ "id": "463d34c6.f0572c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1411.8504066467285,
+ "y": 1479.5620460510254,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "f6e7d7b8.9804f8"
+ ]
+ ]
+ },
+ {
+ "id": "f6e7d7b8.9804f8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1568.8372230529785,
+ "y": 1481.4443969726562,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "7986250.a52d3dc",
+ "80947f3.e50c28"
+ ]
+ ]
+ },
+ {
+ "id": "7986250.a52d3dc",
+ "type": "switchNode",
+ "name": "switch IPMode Static match",
+ "xml": "<switch test=\"`Static == $prop.wan.IPMode`\">\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1774.50394821167,
+ "y": 1482.4444608688354,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "c5b82352.18946"
+ ]
+ ]
+ },
+ {
+ "id": "80947f3.e50c28",
+ "type": "switchNode",
+ "name": "switch IPMode DHCP match",
+ "xml": "<switch test=\"`DHCP == $prop.wan.IPMode`\">\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1773.837314605713,
+ "y": 1544.4444484710693,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "ca30d3ba.e4aa5"
+ ]
+ ]
+ },
+ {
+ "id": "8679bf14.4ac1",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 798.4032974243164,
+ "y": 2124.5665798187256,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7362e1fa.b1592",
+ "type": "set",
+ "name": "set device PortId to service data",
+ "xml": "<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\n",
+ "comments": "",
+ "x": 858.0597534179688,
+ "y": 1779.222749710083,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "726be50f.6f16fc",
+ "type": "update",
+ "name": "update SDWAN wan port instance configuration in AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n key='wan-port-config.wan-port-config-id = $vf-module-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"wan-port-config-id\" value=\"`$vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='Active' />\n<parameter name='device-port-id' value='`$prop.wan.devicePortId`' />\n<parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 925.7223663330078,
+ "y": 2090.3707427978516,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "46743c8f.b3fd84",
+ "type": "set",
+ "name": "set wan portId to service data",
+ "xml": "<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='wanPortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />\n",
+ "comments": "",
+ "x": 864.0687103271484,
+ "y": 1869.4818668365479,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "35191a02.d89a16",
+ "type": "set",
+ "name": "set ipAddress prefixLength",
+ "xml": "<set>\n<parameter name='prop.wan.ip-address' value=\"\" />\n<parameter name='prop.wan.prefixLength' value=\"\" />\n<parameter name='prop.wan.providerIpAddress' value=\"\" />\n<parameter name='prop.wan.IpMode' value=\"static\" />\n<parameter name='prop.route.nextHopType' value=\"ip-address\" />\n<parameter name='prop.route.ipAddress' value=\"`$prop.wan.ipAddress`\" />\n\n",
+ "comments": "",
+ "x": 2158.292377471924,
+ "y": 1476.8992538452148,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "103790c7.a4e84f",
+ "type": "execute",
+ "name": "execute RestApiCallNode underlay route",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-underlay.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"underlayspokeResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 894.6254920959473,
+ "y": 1719.8992919921875,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "cb65e9dc.cb7d28",
+ "509b7bd.b23cb84"
+ ]
+ ]
+ },
+ {
+ "id": "cb65e9dc.cb7d28",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1144.6253185272217,
+ "y": 1704.8995790481567,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "aae088c9.6e82a8"
+ ]
+ ]
+ },
+ {
+ "id": "509b7bd.b23cb84",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1146.625638961792,
+ "y": 1748.8995885849,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "537341f9.e0df6"
+ ]
+ ]
+ },
+ {
+ "id": "aae088c9.6e82a8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1290.209774017334,
+ "y": 1694.2653658390045,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "537341f9.e0df6",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1291.2095317840576,
+ "y": 1741.2653667926788,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d38fbe54.6487b",
+ "type": "set",
+ "name": "set ipAddress prefixLength",
+ "xml": "<set>\n<parameter name='prop.route.nextHopType' value=\"outbound-interface\" />\n<parameter name='prop.wan.IpMode' value=\"DHCP\" />\n<parameter name='prop.route.ipAddress' value=\"\" />\n",
+ "comments": "",
+ "x": 2161.7539710998535,
+ "y": 1548.0000038146973,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "15ae932b.8eaafd",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1469.5039100646973,
+ "y": 430,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "33f87d4b.131732",
+ "48f81161.66243"
+ ]
+ ]
+ },
+ {
+ "id": "113b21af.23a45e",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic-device-param.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name'\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name`'/>\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2628.8371620178223,
+ "y": 578,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "bf88a576.7aa2c8",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic-device-name.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'prop.wan.deviceName'\"/>\n<parameter name=\"field3\" value='`$prop.wan.deviceName`'/>\n<parameter name=\"field4\" value=\"'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value'\"/>\n<parameter name=\"field5\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`'/>\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2880.8371620178223,
+ "y": 661,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d2df96f9.05ab08",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic-last.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'tmp.devicevidx'\"/>\n<parameter name=\"field3\" value='`$tmp.devicevidx`'/>\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 3216.8371620178223,
+ "y": 930,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c5b82352.18946",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1973.5039100646973,
+ "y": 1476.6666259765625,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "35191a02.d89a16"
+ ]
+ ]
+ },
+ {
+ "id": "ca30d3ba.e4aa5",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1970.5039100646973,
+ "y": 1554.6666259765625,
+ "z": "81e8e679.1e5f48",
+ "wires": [
+ [
+ "d38fbe54.6487b"
+ ]
+ ]
+ },
+ {
+ "id": "92451c4e.ffaad",
+ "type": "set",
+ "name": "hardcode device port resp",
+ "xml": "<set>\n<parameter name='portResp.success[0].id' value=\"12345\" />\n",
+ "comments": "",
+ "x": 806.5352172851562,
+ "y": 945.5313758850098,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7f799175.fb047",
+ "type": "set",
+ "name": "increment wan-port param length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",
+ "comments": "",
+ "x": 866.5351791381836,
+ "y": 1824.0313453674316,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "131a2ffd.3a8e5",
+ "type": "set",
+ "name": "increment wan-port param length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",
+ "comments": "",
+ "x": 874.5351791381836,
+ "y": 1909.0313472747803,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "e9b4c90b.c4ce98",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 894.0352058410645,
+ "y": 2003.0313870636746,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7c031fb.d5948e",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 860.0352058410645,
+ "y": 2051.531388017349,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "a7fe1093.6d40a",
+ "type": "set",
+ "name": "copy input data in service-data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 858.0351600646973,
+ "y": 1955.2813415527344,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7b8751b7.f6ba8",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 2064.0351600646973,
+ "y": 2255.03125,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "5ef5bb05.ba3244",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 2098.3383598327637,
+ "y": 2298.8343591690063,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "7b8dfcbe.827b44",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 2065.338394165039,
+ "y": 2337.8344264030457,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ },
+ {
+ "id": "e28c61da.26a12",
+ "type": "set",
+ "name": "hardcode port resp",
+ "xml": "<set>\n<parameter name='portResp.success[0].id' value=\"12345\" />\n",
+ "comments": "",
+ "x": 779.5039901733398,
+ "y": 842.3333721160889,
+ "z": "81e8e679.1e5f48",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json
new file mode 100644
index 00000000..f862a2d3
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json
@@ -0,0 +1,533 @@
+[
+ {
+ "id": "bc28da2b.7303d8",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 323.0104064941406,
+ "y": 132.99999237060547,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "dad83918.445348"
+ ]
+ ]
+ },
+ {
+ "id": "dad83918.445348",
+ "type": "method",
+ "name": "sdwan-vf-operation-wanport-create",
+ "xml": "<method rpc='sdwan-vf-operation-wanport-create' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 322.0104064941406,
+ "y": 232.99999237060547,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "ffb1ada3.8a76c"
+ ]
+ ]
+ },
+ {
+ "id": "55cf0e90.e3564",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 179.51040267944336,
+ "y": 42,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "bc28da2b.7303d8"
+ ]
+ ]
+ },
+ {
+ "id": "ffb1ada3.8a76c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 481.01039123535156,
+ "y": 349.0000009536743,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "470949db.a87688",
+ "1946860c.52d49a",
+ "986d9d2e.d652e",
+ "176bae50.e7ba42",
+ "1c96aac1.62b6a5",
+ "d12731ca.f4e9a",
+ "ad8e03c8.3f99",
+ "99ca206c.689c4",
+ "45a27310.e17b0c",
+ "98b0c583.6fb0e8",
+ "f3463186.010ce",
+ "4efead29.a28254",
+ "187c318b.c5572e",
+ "29c03152.ef4a3e"
+ ]
+ ]
+ },
+ {
+ "id": "470949db.a87688",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 781.3398132324219,
+ "y": 240.49612522125244,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "4bf0f7e7.44aea8"
+ ]
+ ]
+ },
+ {
+ "id": "4bf0f7e7.44aea8",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1033.3399047851562,
+ "y": 239.16278839111328,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "3d05a6f7.8cda9a"
+ ]
+ ]
+ },
+ {
+ "id": "d918203.c2e31e",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1405.0063934326172,
+ "y": 241.16279125213623,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "3d05a6f7.8cda9a",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1251.6732215881348,
+ "y": 241.16277027130127,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "d918203.c2e31e"
+ ]
+ ]
+ },
+ {
+ "id": "176bae50.e7ba42",
+ "type": "for",
+ "name": "for loop idx - VF input parameters",
+ "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 855.2605972290039,
+ "y": 462.66665840148926,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "18c22866.3fa9a8"
+ ]
+ ]
+ },
+ {
+ "id": "18c22866.3fa9a8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1070.0389404296875,
+ "y": 460.2222423553467,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "f7311df1.3a06f",
+ "eb8b9c09.06311"
+ ]
+ ]
+ },
+ {
+ "id": "f7311df1.3a06f",
+ "type": "execute",
+ "name": "execute split parameterName",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1266.2951431274414,
+ "y": 437.97038078308105,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "eb8b9c09.06311",
+ "type": "set",
+ "name": "set parameterName",
+ "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+ "comments": "",
+ "x": 1235.7395706176758,
+ "y": 474.97049713134766,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "f77b19d7.8bb178",
+ "type": "comment",
+ "name": "Take the parameter names by removing prefix",
+ "info": "",
+ "comments": "",
+ "x": 1239.260799407959,
+ "y": 397.33332681655884,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "1946860c.52d49a",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 795.7604064941406,
+ "y": 195.9999942779541,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "89c152d0.6fb2c"
+ ]
+ ]
+ },
+ {
+ "id": "89c152d0.6fb2c",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 982.4270858764648,
+ "y": 195.3332920074463,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "869ba82c.b1cd68"
+ ]
+ ]
+ },
+ {
+ "id": "869ba82c.b1cd68",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1164.0937118530273,
+ "y": 195.3332920074463,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "986d9d2e.d652e",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 837.0103960037231,
+ "y": 315.9999952316284,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "6d96cae7.544aa4",
+ "7b4aef1d.e8397"
+ ]
+ ]
+ },
+ {
+ "id": "6d96cae7.544aa4",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1068.0104064941406,
+ "y": 291.99999237060547,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "8b1de33b.f87d8"
+ ]
+ ]
+ },
+ {
+ "id": "7b4aef1d.e8397",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1068.0104064941406,
+ "y": 331.99999237060547,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "e6620c2c.848df"
+ ]
+ ]
+ },
+ {
+ "id": "8b1de33b.f87d8",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='0' />\n",
+ "comments": "",
+ "x": 1210.5104064941406,
+ "y": 291.99999237060547,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "e6620c2c.848df",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1212.3674507141113,
+ "y": 331.9365043640137,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "9a648de3.1f16d",
+ "8d5a09c0.be4698"
+ ]
+ ]
+ },
+ {
+ "id": "8d5a09c0.be4698",
+ "type": "set",
+ "name": "set vf-index",
+ "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1365.0659255981445,
+ "y": 301.5556030566804,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "9a648de3.1f16d",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1421.4944305419922,
+ "y": 354.7777328491211,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "35f2967d.f1236a"
+ ]
+ ]
+ },
+ {
+ "id": "9105950c.e52f88",
+ "type": "comment",
+ "name": "make sure this network doesn't exist already",
+ "info": "",
+ "comments": "",
+ "x": 1645.1451606750488,
+ "y": 313.03179025650024,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "35f2967d.f1236a",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1696.7801513671875,
+ "y": 354.34923553466797,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "7879d3b9.a48b9c"
+ ]
+ ]
+ },
+ {
+ "id": "7879d3b9.a48b9c",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1597.5103492736816,
+ "y": 412.9206666946411,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ [
+ "d7b29734.9c35b8"
+ ]
+ ]
+ },
+ {
+ "id": "d7b29734.9c35b8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",
+ "comments": "",
+ "x": 1745.2604522705078,
+ "y": 412.7778587634675,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "99ca206c.689c4",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n",
+ "comments": "",
+ "x": 849.8635559082031,
+ "y": 742.4961910247803,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "ad8e03c8.3f99",
+ "type": "execute",
+ "name": "execute generate-vf-module-index",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.wan-port-vf-index\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 862.1971206665039,
+ "y": 688.1629104614258,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "d12731ca.f4e9a",
+ "type": "set",
+ "name": "set new vf-module_length",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",
+ "comments": "",
+ "x": 834.1970672607422,
+ "y": 635.1628475189209,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "1c96aac1.62b6a5",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",
+ "comments": "",
+ "x": 846.1967353820801,
+ "y": 525.1542224884033,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "45a27310.e17b0c",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.wan-port-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 838.0104808807373,
+ "y": 794.0000371932983,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "98b0c583.6fb0e8",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 852.5105400085449,
+ "y": 843.9999303817749,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "187c318b.c5572e",
+ "type": "save",
+ "name": "save sdwan vpn resource in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n key='wan-port-config.wan-port-config-id = $prop.vnf-index' >\n<parameter name=\"wan-port-config-id\" value=\"`$prop.vnf-index`\" />\n<parameter name=\"wan-port-config-name\" value=\"`$prop.wan.name`\" />\n<parameter name=\"device-id\" value=\"`$prop.wan.deviceName`\" />\n<parameter name='vlan-id' value=\"`$prop.wan.vlanId`\" />\n<parameter name=\"ip-address\" value=\"`$prop.wan.ipAddress`\" />\n<parameter name=\"provider-ip-address\" value=\"`$prop.wan.providerIpAddress`\" />\n<parameter name=\"input-bandwidth\" value=\"`$prop.wan.inputBandwidth`\" />\n<parameter name=\"output-bandwidth\" value=\"`$prop.wan.outputBandwidth`\" />\n<parameter name=\"description\" value=\"`$prop.wan.description`\" />\n<parameter name=\"port-type\" value=\"`$prop.wan.portType`\" />\n<parameter name=\"port-number\" value=\"`$prop.wan.portNumber`\" />\n<parameter name=\"transport-network-name\" value=\"`$prop.wan.transportNetworkName`\" />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 856.0104484558105,
+ "y": 887.4999761581421,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "29c03152.ef4a3e",
+ "type": "save",
+ "name": "save service relationship in AAI",
+ "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 853.0103759765625,
+ "y": 933.5000076293945,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "f3463186.010ce",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 803.7329216003418,
+ "y": 980.6738667488098,
+ "z": "eaff5db6.7dde1",
+ "wires": []
+ },
+ {
+ "id": "4efead29.a28254",
+ "type": "call",
+ "name": "call sdwan-get-wan-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 845.8992767333984,
+ "y": 587.8888759613037,
+ "z": "eaff5db6.7dde1",
+ "wires": [
+ []
+ ]
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json
new file mode 100644
index 00000000..04265aad
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json
@@ -0,0 +1,834 @@
+[
+ {
+ "id": "e69423a5.584ae",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 849.5312957763672,
+ "y": 366.07812881469727,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "a2e25c17.8e9c",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 130,
+ "y": 54.0000057220459,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "3fa8aef8.7e3df2"
+ ]
+ ]
+ },
+ {
+ "id": "3fa8aef8.7e3df2",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 261.2856903076172,
+ "y": 103.23811435699463,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "2162b779.2eb3a8"
+ ]
+ ]
+ },
+ {
+ "id": "2162b779.2eb3a8",
+ "type": "method",
+ "name": "method sdwan-vf-operation-wanport-deactivate",
+ "xml": "<method rpc='sdwan-vf-operation-wanport-deactivate' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 264.4286193847656,
+ "y": 188.00003814697266,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "832591c7.4ef99"
+ ]
+ ]
+ },
+ {
+ "id": "7df3c0c6.f5b88",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 834.53125,
+ "y": 203.07812213897705,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "112ac69c.661419"
+ ]
+ ]
+ },
+ {
+ "id": "112ac69c.661419",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1086.5313415527344,
+ "y": 201.7447853088379,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "9fb48502.518d68"
+ ]
+ ]
+ },
+ {
+ "id": "e66ecc6.7152f3",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1458.1978302001953,
+ "y": 203.74478816986084,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "9fb48502.518d68",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1304.864658355713,
+ "y": 203.74476718902588,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "e66ecc6.7152f3"
+ ]
+ ]
+ },
+ {
+ "id": "ff28f3d.3169d1",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 848.9518432617188,
+ "y": 158.5819911956787,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "a6a2da6e.228e08"
+ ]
+ ]
+ },
+ {
+ "id": "a6a2da6e.228e08",
+ "type": "other",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1035.618522644043,
+ "y": 157.9152889251709,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "c0d198d3.426068"
+ ]
+ ]
+ },
+ {
+ "id": "c0d198d3.426068",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",
+ "comments": "",
+ "x": 1217.2851486206055,
+ "y": 157.9152889251709,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "61f42e0f.accb4",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1487.5312576293945,
+ "y": 373.0781125728972,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "ce0facb9.acf8f"
+ ]
+ ]
+ },
+ {
+ "id": "d0cbbcf7.18e0c",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1906.8170928955078,
+ "y": 375.6496305465698,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "ada2f692.ece248"
+ ]
+ ]
+ },
+ {
+ "id": "bd278e04.68d68",
+ "type": "set",
+ "name": "set vf-module-length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",
+ "comments": "",
+ "x": 1474.102882385254,
+ "y": 336.8559989929199,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "4efb1646.df29b8",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1278.4042778015137,
+ "y": 350.2368840877898,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "61f42e0f.accb4",
+ "bd278e04.68d68",
+ "49047f5d.3dde6"
+ ]
+ ]
+ },
+ {
+ "id": "1c241e5.3b7e6e2",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1134.047233581543,
+ "y": 350.3003720943816,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "4efb1646.df29b8"
+ ]
+ ]
+ },
+ {
+ "id": "8e428583.69a8e8",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 898.047215461731,
+ "y": 277.3003845214844,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "1c241e5.3b7e6e2",
+ "45b16795.1e16b8",
+ "5c72c52f.a612dc"
+ ]
+ ]
+ },
+ {
+ "id": "45b16795.1e16b8",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1139.5312519073486,
+ "y": 249.0781135559082,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "b89d0343.04bd1"
+ ]
+ ]
+ },
+ {
+ "id": "5c72c52f.a612dc",
+ "type": "other",
+ "name": "Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1141.5624408721924,
+ "y": 286.10942459106445,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "b89d0343.04bd1"
+ ]
+ ]
+ },
+ {
+ "id": "b89d0343.04bd1",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-operation-input.vf-module-request-input.vf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1299.3399562835693,
+ "y": 266.9983730316162,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "ada2f692.ece248",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2110.53133392334,
+ "y": 374.0781369502656,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "8cb3d733.8b9cc8"
+ ]
+ ]
+ },
+ {
+ "id": "8cb3d733.8b9cc8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1872.8745422363281,
+ "y": 476.16428661346436,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "e9572390.a2ce1",
+ "7be5423c.87235c",
+ "39502de7.a9fc62"
+ ]
+ ]
+ },
+ {
+ "id": "e9572390.a2ce1",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2114.7612342834473,
+ "y": 446.50670051574707,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "7be5423c.87235c",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2118.207492828369,
+ "y": 491.1643395423889,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "ce0facb9.acf8f",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1695.0313034057617,
+ "y": 373.07812118530273,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "d0cbbcf7.18e0c"
+ ]
+ ]
+ },
+ {
+ "id": "2948d13a.1b821e",
+ "type": "comment",
+ "name": "Get devices",
+ "info": "",
+ "comments": "",
+ "x": 848.0315361022949,
+ "y": 494.0781602859497,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "49047f5d.3dde6",
+ "type": "set",
+ "name": "set prop.site.deviceId_length",
+ "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",
+ "comments": "",
+ "x": 1500.53125,
+ "y": 301.07812213897705,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "832591c7.4ef99",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 405.52733993530273,
+ "y": 405.0742197036743,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "ff28f3d.3169d1",
+ "7df3c0c6.f5b88",
+ "8e428583.69a8e8",
+ "e69423a5.584ae",
+ "ce0e4f49.1217b",
+ "16f0a729.f1f5a9",
+ "d2d93614.7c8ad8",
+ "2604b323.ea5f4c",
+ "9139c857.0718b8",
+ "c9d5923c.c3e6a",
+ "4a67f6d4.3597f8",
+ "7c127312.19825c",
+ "1954d3bb.e0ec6c"
+ ]
+ ]
+ },
+ {
+ "id": "39502de7.a9fc62",
+ "type": "call",
+ "name": "call sdwan-get-wan-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2109.5039443969727,
+ "y": 538.0039381980896,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9139c857.0718b8",
+ "type": "get-resource",
+ "name": "get-resource esr-thirdparty-sdnc",
+ "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t depth = '1'\"\n pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 893.2539443969727,
+ "y": 444.75391960144043,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "679a2fa0.7fa24",
+ "db810e5a.69a4a",
+ "b796d6f.b8abb28"
+ ]
+ ]
+ },
+ {
+ "id": "679a2fa0.7fa24",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1125.2540283203125,
+ "y": 408.753942489624,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "e1a99634.deb268"
+ ]
+ ]
+ },
+ {
+ "id": "db810e5a.69a4a",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1127.7449111938477,
+ "y": 444.3279790878296,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "363ab1e2.2b5cce"
+ ]
+ ]
+ },
+ {
+ "id": "b796d6f.b8abb28",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1123.0779190063477,
+ "y": 480.661337852478,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "cdf3743a.490b68"
+ ]
+ ]
+ },
+ {
+ "id": "cdf3743a.490b68",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1276.8504104614258,
+ "y": 478.1004247665405,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "363ab1e2.2b5cce",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",
+ "comments": "",
+ "x": 1273.316307067871,
+ "y": 442.6136665344238,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "e1a99634.deb268",
+ "type": "set",
+ "name": "set controller data",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",
+ "comments": "",
+ "x": 1280.7541427612305,
+ "y": 407.75383472442627,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "c9d5923c.c3e6a",
+ "type": "execute",
+ "name": "execute RestApiCallNode Get token",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 907.7640762329102,
+ "y": 532.4309215545654,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "80be9352.04481",
+ "fdeb2c27.d10b4"
+ ]
+ ]
+ },
+ {
+ "id": "80be9352.04481",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1142.76420211792,
+ "y": 518.4309101104736,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "303f14f3.7822fc"
+ ]
+ ]
+ },
+ {
+ "id": "303f14f3.7822fc",
+ "type": "set",
+ "name": "set token-id",
+ "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+ "comments": "",
+ "x": 1284.7642097473145,
+ "y": 517.430911064148,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "de3334dd.87a328",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",
+ "comments": "",
+ "x": 1290.7642097473145,
+ "y": 554.823899269104,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "fdeb2c27.d10b4",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1142.01420211792,
+ "y": 554.0738172531128,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "de3334dd.87a328"
+ ]
+ ]
+ },
+ {
+ "id": "4a67f6d4.3597f8",
+ "type": "call",
+ "name": "call sdwan-get-tenant-auth",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 884.7638244628906,
+ "y": 585.7639970779419,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "2604b323.ea5f4c",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 849.8993644714355,
+ "y": 1030.5663061141968,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "4c7ada40.e6d834",
+ "type": "update",
+ "name": "update SDWAN wan port instance configuration in AAI",
+ "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n key='wan-port-config.wan-port-config-id = $vf-module-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"wan-port-config-id\" value=\"`$vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 969.2184829711914,
+ "y": 990.3698863983154,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "ce0e4f49.1217b",
+ "type": "set",
+ "name": "copy input data to service data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",
+ "comments": "",
+ "x": 903.59619140625,
+ "y": 864.7630681991577,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "16f0a729.f1f5a9",
+ "type": "set",
+ "name": "set vf-module-id and vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 937.8993911743164,
+ "y": 908.5661773681641,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "d2d93614.7c8ad8",
+ "type": "set",
+ "name": "set vf-module-level-oper-status",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",
+ "comments": "",
+ "x": 904.8993911743164,
+ "y": 944.5661773681641,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "1954d3bb.e0ec6c",
+ "type": "execute",
+ "name": "execute RestApiCallNode device port delete",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 952.03125,
+ "y": 770.078145980835,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "5763133a.85c38c",
+ "e2a71559.3f3e88"
+ ]
+ ]
+ },
+ {
+ "id": "5763133a.85c38c",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1198.031234741211,
+ "y": 808.0782346725464,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "c730322d.384d7"
+ ]
+ ]
+ },
+ {
+ "id": "e2a71559.3f3e88",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1194.0313148498535,
+ "y": 762.0781497955322,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "33e8f10d.25726e"
+ ]
+ ]
+ },
+ {
+ "id": "33e8f10d.25726e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
+ "comments": "",
+ "x": 1335.031406402588,
+ "y": 762.0781507492065,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "c730322d.384d7",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1342.0311012268066,
+ "y": 806.0781536102295,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "7c127312.19825c",
+ "type": "execute",
+ "name": "execute RestApiCallNode wan port delete",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",
+ "comments": "",
+ "outputs": 1,
+ "x": 947.0314178466797,
+ "y": 664.0781440734863,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "e0828ab7.60a978",
+ "3d0c4f43.fce4d"
+ ]
+ ]
+ },
+ {
+ "id": "e0828ab7.60a978",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1235.0315132141113,
+ "y": 696.0781135559082,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "aca8b9c6.d1fb58"
+ ]
+ ]
+ },
+ {
+ "id": "3d0c4f43.fce4d",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1239.031593322754,
+ "y": 632.0781917572021,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ [
+ "729b835e.b7b53c"
+ ]
+ ]
+ },
+ {
+ "id": "729b835e.b7b53c",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",
+ "comments": "",
+ "x": 1384.0317649841309,
+ "y": 634.0781917572021,
+ "z": "4fee9402.f5c9bc",
+ "wires": []
+ },
+ {
+ "id": "aca8b9c6.d1fb58",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 1391.0313568115234,
+ "y": 694.0781135559082,
+ "z": "4fee9402.f5c9bc",
+ "wires": [
+ []
+ ]
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json
new file mode 100644
index 00000000..d290e8e7
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json
@@ -0,0 +1,663 @@
+[
+ {
+ "id": "4c9b7636.16d1a8",
+ "type": "method",
+ "name": "method sdwan-vf-operation-wanport-delete",
+ "xml": "<method rpc='sdwan-vf-operation-wanport-delete' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 227.01040649414062,
+ "y": 192.58634161949158,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "ef9a78fa.b0f5b8"
+ ]
+ ]
+ },
+ {
+ "id": "ae863831.900868",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 215.29611206054688,
+ "y": 98.23810935020447,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "4c9b7636.16d1a8"
+ ]
+ ]
+ },
+ {
+ "id": "3c4c41bd.66b0ee",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 136.01040649414062,
+ "y": 35.99999976158142,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "ae863831.900868"
+ ]
+ ]
+ },
+ {
+ "id": "ef9a78fa.b0f5b8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 246.67710876464844,
+ "y": 459.66673517227173,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "73502c25.0501b4",
+ "8ef64cba.b142",
+ "e7c6e1f4.291c4",
+ "5b7d49e0.41f2f8",
+ "8b01c2d1.84cd3",
+ "27503470.8bf84c",
+ "dce00f39.1d9f7",
+ "9d21b2cd.86c73",
+ "827a72ac.9aabf",
+ "67cd24d6.a0f83c",
+ "a35824b0.8bb6e8"
+ ]
+ ]
+ },
+ {
+ "id": "8ef64cba.b142",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 559.0417709350586,
+ "y": 272.269140958786,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "11c14e91.a941a1"
+ ]
+ ]
+ },
+ {
+ "id": "73502c25.0501b4",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 564.010425567627,
+ "y": 211.0000102519989,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "45acbb70.cf9d84"
+ ]
+ ]
+ },
+ {
+ "id": "45acbb70.cf9d84",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 744.0104064941406,
+ "y": 209.99999976158142,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "1c305856.7d7878"
+ ]
+ ]
+ },
+ {
+ "id": "1c305856.7d7878",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 893.4391326904297,
+ "y": 211.14291739463806,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "11c14e91.a941a1",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 782.0104217529297,
+ "y": 273.0000059604645,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "4a09a290.a75bbc"
+ ]
+ ]
+ },
+ {
+ "id": "4a09a290.a75bbc",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 997.0104064941406,
+ "y": 270.9999997615814,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "57c73c18.c834a4"
+ ]
+ ]
+ },
+ {
+ "id": "57c73c18.c834a4",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1161.0104064941406,
+ "y": 265.9999997615814,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "e7c6e1f4.291c4",
+ "type": "switchNode",
+ "name": "switch vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 630.010440826416,
+ "y": 349.00002455711365,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "8cdd0772.dbdbf8",
+ "d22fa0c4.8a1a8",
+ "b6f26649.6b92a8"
+ ]
+ ]
+ },
+ {
+ "id": "d22fa0c4.8a1a8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 852.0104331970215,
+ "y": 383.0000340938568,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "1ebe6a81.7b0665"
+ ]
+ ]
+ },
+ {
+ "id": "8cdd0772.dbdbf8",
+ "type": "outcome",
+ "name": "0",
+ "xml": "<outcome value='0'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 857.0104293823242,
+ "y": 330.0000331401825,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "1ebe6a81.7b0665"
+ ]
+ ]
+ },
+ {
+ "id": "1ebe6a81.7b0665",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1015.0104331970215,
+ "y": 343.0000340938568,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "b6f26649.6b92a8",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 852.0104331970215,
+ "y": 444.0000340938568,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "5d0462e8.482a9c"
+ ]
+ ]
+ },
+ {
+ "id": "98248461.3994b8",
+ "type": "set",
+ "name": "set vf-module_length",
+ "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",
+ "comments": "",
+ "x": 1206.0104484558105,
+ "y": 442.0000480413437,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "5d0462e8.482a9c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1013.0104789733887,
+ "y": 441.00002551078796,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "98248461.3994b8",
+ "bb5716e5.5eb1d8"
+ ]
+ ]
+ },
+ {
+ "id": "bb5716e5.5eb1d8",
+ "type": "for",
+ "name": "for each existing vf-index",
+ "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1225.0104179382324,
+ "y": 495.00002455711365,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "56d74cea.fe48b4"
+ ]
+ ]
+ },
+ {
+ "id": "56d74cea.fe48b4",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1468.0104331970215,
+ "y": 490.0000340938568,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "2f21e786.1474c8"
+ ]
+ ]
+ },
+ {
+ "id": "2f21e786.1474c8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1709.0105609893799,
+ "y": 483.00003123283386,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "935557d5.b42b38"
+ ]
+ ]
+ },
+ {
+ "id": "935557d5.b42b38",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1861.0105323791504,
+ "y": 485.00002455711365,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "b801dc09.3262a",
+ "fd33c1ac.d18c2",
+ "49806a1a.1b29c4"
+ ]
+ ]
+ },
+ {
+ "id": "b801dc09.3262a",
+ "type": "set",
+ "name": "set tmp.vidx and ctx.vnf-data",
+ "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 2083.0105323791504,
+ "y": 481.00002455711365,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "fd33c1ac.d18c2",
+ "type": "set",
+ "name": "set vf-module-request-input.",
+ "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",
+ "comments": "",
+ "x": 2089.0105323791504,
+ "y": 530.0000245571136,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "49806a1a.1b29c4",
+ "type": "call",
+ "name": "call sdwan-get-vf-module-device-param",
+ "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2117.010753631592,
+ "y": 578.0000302791595,
+ "z": "fa825249.678d7",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "5b7d49e0.41f2f8",
+ "type": "switchNode",
+ "name": "switch tmp.vidx ",
+ "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 569.0416526794434,
+ "y": 522.0161073207855,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "93788503.77e6c8"
+ ]
+ ]
+ },
+ {
+ "id": "93788503.77e6c8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 716.4702949523926,
+ "y": 521.5875174999237,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "70fed172.85f44"
+ ]
+ ]
+ },
+ {
+ "id": "70fed172.85f44",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 865.8990211486816,
+ "y": 522.7304351329803,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "8b01c2d1.84cd3",
+ "type": "switchNode",
+ "name": "switch vf-module-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 613.3398132324219,
+ "y": 592.3333127498627,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "223c17b4.64b778",
+ "e9d52081.e76dc"
+ ]
+ ]
+ },
+ {
+ "id": "223c17b4.64b778",
+ "type": "outcome",
+ "name": "outcome PendingDelete",
+ "xml": "<outcome value='PendingDelete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 904.1730804443359,
+ "y": 596.4444358348846,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "814b2c34.1fd7f"
+ ]
+ ]
+ },
+ {
+ "id": "e9d52081.e76dc",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 871.1732177734375,
+ "y": 648.4444885253906,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "714ed175.ddb84"
+ ]
+ ]
+ },
+ {
+ "id": "714ed175.ddb84",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
+ "comments": "",
+ "x": 1030.6729850769043,
+ "y": 651.4444875717163,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "814b2c34.1fd7f",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1101.4794807434082,
+ "y": 606.769590139389,
+ "z": "fa825249.678d7",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "67cd24d6.a0f83c",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",
+ "comments": "",
+ "x": 562.031307220459,
+ "y": 966.0313129425049,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "27503470.8bf84c",
+ "type": "for",
+ "name": "for lidx..service-data.vf-modules.vf-module[]",
+ "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 644.1178894042969,
+ "y": 712.1424579620361,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "666e6c4f.f97484"
+ ]
+ ]
+ },
+ {
+ "id": "dce00f39.1d9f7",
+ "type": "set",
+ "name": "set new vnf length",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+ "comments": "",
+ "x": 568.2192611694336,
+ "y": 764.9466757774353,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "9d21b2cd.86c73",
+ "type": "set",
+ "name": "Remove vnf from ServiceData",
+ "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",
+ "comments": "",
+ "x": 605.1179351806641,
+ "y": 815.1424608230591,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "666e6c4f.f97484",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 904.1178798675537,
+ "y": 719.1423177719116,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "46998b08.18a904"
+ ]
+ ]
+ },
+ {
+ "id": "a35824b0.8bb6e8",
+ "type": "delete",
+ "name": "delete wanport vf instance configuration in AAI",
+ "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 654.1183090209961,
+ "y": 906.4041156768799,
+ "z": "fa825249.678d7",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "46998b08.18a904",
+ "type": "switchNode",
+ "name": "switch vnf-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1090.1179466247559,
+ "y": 719.1424784660339,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "52431b6f.b34934"
+ ]
+ ]
+ },
+ {
+ "id": "52431b6f.b34934",
+ "type": "outcomeFalse",
+ "name": "false",
+ "xml": "<outcome value='false'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1259.1179542541504,
+ "y": 718.142315864563,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "2b619a80.4a9f36"
+ ]
+ ]
+ },
+ {
+ "id": "2b619a80.4a9f36",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1413.117793083191,
+ "y": 710.1423168182373,
+ "z": "fa825249.678d7",
+ "wires": [
+ [
+ "466caa7f.55c334",
+ "921821fe.9836b"
+ ]
+ ]
+ },
+ {
+ "id": "466caa7f.55c334",
+ "type": "set",
+ "name": "set vnf data",
+ "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 1578.1178884506226,
+ "y": 685.1424722671509,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "921821fe.9836b",
+ "type": "set",
+ "name": "set prop.vnfNewidx",
+ "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+ "comments": "",
+ "x": 1600.1178884506226,
+ "y": 741.1424360275269,
+ "z": "fa825249.678d7",
+ "wires": []
+ },
+ {
+ "id": "827a72ac.9aabf",
+ "type": "set",
+ "name": "set vf-module-object-path",
+ "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",
+ "comments": "",
+ "x": 591.9201431274414,
+ "y": 860.4757957458496,
+ "z": "fa825249.678d7",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json
new file mode 100644
index 00000000..8a5d8f9e
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json
@@ -0,0 +1,1305 @@
+[
+ {
+ "id": "3eca748a.ef817c",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 123,
+ "y": 75,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "350fb0d5.88723"
+ ]
+ ]
+ },
+ {
+ "id": "350fb0d5.88723",
+ "type": "service-logic",
+ "name": "GENERIC-RESOURCE-API ${project.version}",
+ "module": "GENERIC-RESOURCE-API",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>",
+ "outputs": 1,
+ "x": 368.2857131958008,
+ "y": 74.23807907104492,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "7fecfee8.d291b"
+ ]
+ ]
+ },
+ {
+ "id": "7fecfee8.d291b",
+ "type": "method",
+ "name": "validate-sdwan-vf-vpn-input-parameters",
+ "xml": "<method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 451.9166946411133,
+ "y": 209.25301837921143,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "8f6f1f8b.897a9"
+ ]
+ ]
+ },
+ {
+ "id": "8f6f1f8b.897a9",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 735.9167022705078,
+ "y": 197.25304317474365,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "634b7128.2e84d",
+ "adb8eda0.ca986",
+ "bc20a4d8.66ea78",
+ "376a189c.5eea28"
+ ]
+ ]
+ },
+ {
+ "id": "634b7128.2e84d",
+ "type": "switchNode",
+ "name": "switch svc-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 995.916633605957,
+ "y": 45.25303936004639,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "183ac3e9.257bcc"
+ ]
+ ]
+ },
+ {
+ "id": "183ac3e9.257bcc",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1186.6309356689453,
+ "y": 46.2530403137207,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "65be383e.39b058"
+ ]
+ ]
+ },
+ {
+ "id": "65be383e.39b058",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"sdnc-request-header.svc-request-id is a required input\" />\n",
+ "comments": "",
+ "x": 1361.0594863891602,
+ "y": 45.25303268432617,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "adb8eda0.ca986",
+ "type": "switchNode",
+ "name": "switch svc-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 332.9166564941406,
+ "y": 468.2530336380005,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "83c4de98.01196",
+ "ce7e74f7.3c86c8",
+ "147fd5d9.68de3a",
+ "1561519f.abda0e",
+ "d7c5bf00.510dc"
+ ]
+ ]
+ },
+ {
+ "id": "83c4de98.01196",
+ "type": "outcome",
+ "name": "create",
+ "xml": "<outcome value='create'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 526.5000228881836,
+ "y": 297.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "363f7231.506cbe"
+ ]
+ ]
+ },
+ {
+ "id": "363f7231.506cbe",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 687.5000228881836,
+ "y": 297.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "46be34f.5b2c7cc"
+ ]
+ ]
+ },
+ {
+ "id": "ce7e74f7.3c86c8",
+ "type": "outcome",
+ "name": "deactivate",
+ "xml": "<outcome value='deactivate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 499.4920120239258,
+ "y": 906.428539276123,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "aec7db3f.798358"
+ ]
+ ]
+ },
+ {
+ "id": "147fd5d9.68de3a",
+ "type": "outcome",
+ "name": "delete",
+ "xml": "<outcome value='delete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 503.20639419555664,
+ "y": 1077.1430969238281,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c7708172.24701"
+ ]
+ ]
+ },
+ {
+ "id": "1561519f.abda0e",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 502.9682846069336,
+ "y": 1250.571382522583,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b6252f6e.c1321"
+ ]
+ ]
+ },
+ {
+ "id": "b6252f6e.c1321",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+ "comments": "",
+ "x": 686.5398178100586,
+ "y": 1251.190523147583,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "46be34f.5b2c7cc",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 888,
+ "y": 295.6666797399521,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3528f63.34e230a",
+ "82048a2c.348118"
+ ]
+ ]
+ },
+ {
+ "id": "3528f63.34e230a",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1073.4999923706055,
+ "y": 323.66667652130127,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3198409.3ebdec"
+ ]
+ ]
+ },
+ {
+ "id": "3198409.3ebdec",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create\" />\n",
+ "comments": "",
+ "x": 1224.0000228881836,
+ "y": 317.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "ee1459dc.d090c8",
+ "type": "other",
+ "name": "DeleteSDWANVpnInstance",
+ "xml": "<outcome value='DeleteSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 945.0634384155273,
+ "y": 1073.698395729065,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "773b0668.3dfda8"
+ ]
+ ]
+ },
+ {
+ "id": "640b4312.a9c5ac",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 860.6189804077148,
+ "y": 1149.920636177063,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "20eafb56.ca5e14"
+ ]
+ ]
+ },
+ {
+ "id": "20eafb56.ca5e14",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete\" />\n",
+ "comments": "",
+ "x": 1020.9524002075195,
+ "y": 1152.0317735671997,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "773b0668.3dfda8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1168.9523086547852,
+ "y": 1079.9206190109253,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "30507c3b.465aa4",
+ "b4bebf6c.2b4fa",
+ "b3df3a7b.216bd8",
+ "eb92e3d.8a6ff2"
+ ]
+ ]
+ },
+ {
+ "id": "d7c5bf00.510dc",
+ "type": "outcome",
+ "name": "activate",
+ "xml": "<outcome value='activate'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 520.4285774230957,
+ "y": 560.7143135070801,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "aa89a015.4408d"
+ ]
+ ]
+ },
+ {
+ "id": "aa89a015.4408d",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 703.2857437133789,
+ "y": 557.8571634292603,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c1f6d379.b3eef",
+ "89075fc5.672ae"
+ ]
+ ]
+ },
+ {
+ "id": "c1f6d379.b3eef",
+ "type": "other",
+ "name": "ActivateSDWANVpnInstance",
+ "xml": "<outcome value='ActivateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 956.5000228881836,
+ "y": 537.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "ce665d03.3901d"
+ ]
+ ]
+ },
+ {
+ "id": "89075fc5.672ae",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 886.5000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c6e2911c.5f916"
+ ]
+ ]
+ },
+ {
+ "id": "c6e2911c.5f916",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate\" />\n",
+ "comments": "",
+ "x": 1044.0000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "ce665d03.3901d",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1187.5000228881836,
+ "y": 537.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b3df3a7b.216bd8",
+ "30507c3b.465aa4",
+ "b4bebf6c.2b4fa",
+ "57bd5824.2497c8"
+ ]
+ ]
+ },
+ {
+ "id": "c598159a.7423c8",
+ "type": "other",
+ "name": "DeactivateSDWANVpnInstance",
+ "xml": "<outcome value='DeactivateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 942.9206390380859,
+ "y": 908.1429328918457,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "50af0272.e02a9c"
+ ]
+ ]
+ },
+ {
+ "id": "e01173d7.fe6b9",
+ "type": "other",
+ "name": "Other",
+ "xml": "<outcome value='Other'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 857.9206314086914,
+ "y": 977.1429405212402,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d14295e9.c68018"
+ ]
+ ]
+ },
+ {
+ "id": "d14295e9.c68018",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate\" />\n",
+ "comments": "",
+ "x": 1038.9206466674805,
+ "y": 978.1429405212402,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "aec7db3f.798358",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 679.7776947021484,
+ "y": 910.6188039779663,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "c598159a.7423c8",
+ "e01173d7.fe6b9"
+ ]
+ ]
+ },
+ {
+ "id": "c7708172.24701",
+ "type": "switchNode",
+ "name": "switch request-action",
+ "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 683.5554962158203,
+ "y": 1076.9523208141327,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "ee1459dc.d090c8",
+ "640b4312.a9c5ac"
+ ]
+ ]
+ },
+ {
+ "id": "50af0272.e02a9c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1202.888786315918,
+ "y": 910.9523277282715,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "30507c3b.465aa4",
+ "b4bebf6c.2b4fa",
+ "b3df3a7b.216bd8",
+ "c2db488a.b105a8"
+ ]
+ ]
+ },
+ {
+ "id": "82048a2c.348118",
+ "type": "other",
+ "name": "CreateSDWANVpnInstance",
+ "xml": "<outcome value='CreateSDWANVpnInstance'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1172.499984741211,
+ "y": 276.6666679382324,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "7a0b5551.c75d9c"
+ ]
+ ]
+ },
+ {
+ "id": "7a0b5551.c75d9c",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1407.49995803833,
+ "y": 275.6666679382324,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3f52a78f.7ab728"
+ ]
+ ]
+ },
+ {
+ "id": "3f52a78f.7ab728",
+ "type": "for",
+ "name": "for loop i - vpn vf input parameters",
+ "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1638.000015258789,
+ "y": 276.6666679382324,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d37b6b2c.71fb38"
+ ]
+ ]
+ },
+ {
+ "id": "d37b6b2c.71fb38",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1846.5000228881836,
+ "y": 277.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "9ec108e6.32a3b8",
+ "a16aa1da.005f3",
+ "3a20c40b.dcc4cc"
+ ]
+ ]
+ },
+ {
+ "id": "9ec108e6.32a3b8",
+ "type": "set",
+ "name": "clear tmp-data",
+ "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+ "comments": "",
+ "x": 2029.5000228881836,
+ "y": 237.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "a16aa1da.005f3",
+ "type": "set",
+ "name": "set tmp-data",
+ "xml": "<set>\n<parameter name='tmp.name' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`\"/>\n",
+ "comments": "",
+ "x": 2024.0000228881836,
+ "y": 277.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "3a20c40b.dcc4cc",
+ "type": "switchNode",
+ "name": "switch name",
+ "xml": "<switch test=\"`$tmp.name`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2024.0000228881836,
+ "y": 317.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3280408b.66ab3",
+ "63ad3611.30c718",
+ "2eab978e.1492a8"
+ ]
+ ]
+ },
+ {
+ "id": "d22ab892.eef718",
+ "type": "switchNode",
+ "name": "switch value",
+ "xml": "<switch test=\"`$tmp.value`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2484.0001907348633,
+ "y": 269.66669142246246,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b07f67fa.6ab208"
+ ]
+ ]
+ },
+ {
+ "id": "2eab978e.1492a8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2243.500358581543,
+ "y": 335.66667902469635,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "5967794c.72e8b8"
+ ]
+ ]
+ },
+ {
+ "id": "5967794c.72e8b8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+ "comments": "",
+ "x": 2418.5003623962402,
+ "y": 334.66667902469635,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "3280408b.66ab3",
+ "type": "other",
+ "name": "name",
+ "xml": "<outcome value='name'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2243.500358581543,
+ "y": 219.66667330265045,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d22ab892.eef718"
+ ]
+ ]
+ },
+ {
+ "id": "63ad3611.30c718",
+ "type": "other",
+ "name": "topology",
+ "xml": "<outcome value='topology'>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2255.500114440918,
+ "y": 273.333335518837,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d22ab892.eef718"
+ ]
+ ]
+ },
+ {
+ "id": "b07f67fa.6ab208",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 2627.5001907348633,
+ "y": 269.66669142246246,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "3ecabf5c.8d652"
+ ]
+ ]
+ },
+ {
+ "id": "3ecabf5c.8d652",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`\" />\n",
+ "comments": "",
+ "x": 2785.5001907348633,
+ "y": 269.66669142246246,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "b3df3a7b.216bd8",
+ "type": "switchNode",
+ "name": "switch service-data.vf-modules.vf-module_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1479.3889541625977,
+ "y": 576.9999761581421,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "37913775.d258a8",
+ "8c9e338f.0d83c"
+ ]
+ ]
+ },
+ {
+ "id": "37913775.d258a8",
+ "type": "other",
+ "name": "outcome Null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1748.0000228881836,
+ "y": 556.666711807251,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "7c4231f0.9cbb7"
+ ]
+ ]
+ },
+ {
+ "id": "7c4231f0.9cbb7",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 1924.0000228881836,
+ "y": 557.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "8c9e338f.0d83c",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1726.5000228881836,
+ "y": 597.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b6f61e8c.9dd35"
+ ]
+ ]
+ },
+ {
+ "id": "b6f61e8c.9dd35",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1887.5000228881836,
+ "y": 597.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "9317c153.6ccad",
+ "bdedbaa4.65e588"
+ ]
+ ]
+ },
+ {
+ "id": "9317c153.6ccad",
+ "type": "for",
+ "name": "for nidx..service-data.vf-modules.vf-module[]",
+ "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2150.0000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "1fade275.78b10e"
+ ]
+ ]
+ },
+ {
+ "id": "1fade275.78b10e",
+ "type": "switchNode",
+ "name": "switch vf-module-id found",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n \n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2436.0000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "99a1d82a.9dd8c8"
+ ]
+ ]
+ },
+ {
+ "id": "99a1d82a.9dd8c8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2606.5000228881836,
+ "y": 577.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "39ae6a67.1c8296"
+ ]
+ ]
+ },
+ {
+ "id": "70e3cfee.6e895",
+ "type": "set",
+ "name": "set tmp.nidx and ctx.network-data",
+ "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\n",
+ "comments": "",
+ "x": 3007.50008392334,
+ "y": 574.6667140722275,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "1412cffb.8d463",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",
+ "comments": "",
+ "x": 2364.0000228881836,
+ "y": 617.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "fbeeeb3e.43c3b8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2226.5000228881836,
+ "y": 617.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "1412cffb.8d463"
+ ]
+ ]
+ },
+ {
+ "id": "bdedbaa4.65e588",
+ "type": "switchNode",
+ "name": "switch tmp.nidx ",
+ "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 2072.5000228881836,
+ "y": 617.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "fbeeeb3e.43c3b8"
+ ]
+ ]
+ },
+ {
+ "id": "57bd5824.2497c8",
+ "type": "switchNode",
+ "name": "switch network-level-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1451.6667098999023,
+ "y": 656.5555486679077,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "719dd138.28ef4",
+ "2dca8a18.a65586"
+ ]
+ ]
+ },
+ {
+ "id": "719dd138.28ef4",
+ "type": "outcome",
+ "name": "outcome Created",
+ "xml": "<outcome value='Created'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1748.5001258850098,
+ "y": 656.5555467605591,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "94e9cf1a.6c399"
+ ]
+ ]
+ },
+ {
+ "id": "2dca8a18.a65586",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1716.5001258850098,
+ "y": 696.5555467605591,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "2c8432e2.7a0b8e"
+ ]
+ ]
+ },
+ {
+ "id": "2c8432e2.7a0b8e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",
+ "comments": "",
+ "x": 1874.0001258850098,
+ "y": 696.5555467605591,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "b4bebf6c.2b4fa",
+ "type": "switchNode",
+ "name": "switch vf-module-id",
+ "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1398.5000228881836,
+ "y": 517.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "9ad9b806.2c19b8"
+ ]
+ ]
+ },
+ {
+ "id": "9ad9b806.2c19b8",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1626.5000228881836,
+ "y": 517.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "b7b28733.f37c08"
+ ]
+ ]
+ },
+ {
+ "id": "b7b28733.f37c08",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"network-request-input.network-input-parameters.name is a required input\" />\n",
+ "comments": "",
+ "x": 1764.0000228881836,
+ "y": 517.6666707992554,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "30507c3b.465aa4",
+ "type": "execute",
+ "name": "execute requiredParameters",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vf-module-topology-operation-input.vf-module-information.vf-module-id\" value=\"$vf-module-topology-operation-input.vf-module-information.vf-module-id\"/>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1433.0000228881836,
+ "y": 477.66667079925537,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c2db488a.b105a8",
+ "type": "switchNode",
+ "name": "switch network-level-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1479.8332748413086,
+ "y": 906.5555257797241,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "cf4b307b.b1b04",
+ "acc49742.fd0df8"
+ ]
+ ]
+ },
+ {
+ "id": "cf4b307b.b1b04",
+ "type": "outcome",
+ "name": "outcome Active",
+ "xml": "<outcome value='Active'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1753.166648864746,
+ "y": 880.9999837875366,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "e31a54a2.3ff1f8"
+ ]
+ ]
+ },
+ {
+ "id": "acc49742.fd0df8",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1723.166648864746,
+ "y": 920.9999837875366,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "bc3125bf.c135a8"
+ ]
+ ]
+ },
+ {
+ "id": "bc3125bf.c135a8",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n ",
+ "comments": "",
+ "x": 1889.166648864746,
+ "y": 922.9999837875366,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "eb92e3d.8a6ff2",
+ "type": "switchNode",
+ "name": "switch network-level-oper-status",
+ "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1468.7221908569336,
+ "y": 1077.6666097640991,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "4005e1e5.db606",
+ "3f0b16e4.30f1ca"
+ ]
+ ]
+ },
+ {
+ "id": "4005e1e5.db606",
+ "type": "outcome",
+ "name": "outcome PendingDelete",
+ "xml": "<outcome value='PendingDelete'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1768.7222518920898,
+ "y": 1045.444405555725,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "e99f233c.ef676"
+ ]
+ ]
+ },
+ {
+ "id": "3f0b16e4.30f1ca",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1712.055564880371,
+ "y": 1092.1110677719116,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "26e244b4.b2362c"
+ ]
+ ]
+ },
+ {
+ "id": "26e244b4.b2362c",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",
+ "comments": "",
+ "x": 1878.055564880371,
+ "y": 1094.1110677719116,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "94e9cf1a.6c399",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1940.5001029968262,
+ "y": 657.6666488647461,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e31a54a2.3ff1f8",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1953.1665267944336,
+ "y": 879.1481161117554,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "e99f233c.ef676",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 1984.277732849121,
+ "y": 1045.8147420883179,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "39ae6a67.1c8296",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic=\"true\">",
+ "atomic": "true",
+ "outputs": 1,
+ "x": 2756.666534423828,
+ "y": 574.0000190734863,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "70e3cfee.6e895"
+ ]
+ ]
+ },
+ {
+ "id": "bc20a4d8.66ea78",
+ "type": "switchNode",
+ "name": "switch vnf_length",
+ "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 971.0065307617188,
+ "y": 121.24849605560303,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "ae64d058.26533"
+ ]
+ ]
+ },
+ {
+ "id": "ae64d058.26533",
+ "type": "outcome",
+ "name": "NULL",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1151.0065116882324,
+ "y": 120.24848556518555,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "d4c5df8d.2e7e3"
+ ]
+ ]
+ },
+ {
+ "id": "d4c5df8d.2e7e3",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"vnf entry not found in service-data\" />\n",
+ "comments": "",
+ "x": 1300.4352378845215,
+ "y": 121.39140319824219,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ },
+ {
+ "id": "376a189c.5eea28",
+ "type": "for",
+ "name": "for each vnf",
+ "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 951.0379104614258,
+ "y": 183.51763439178467,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "891fced5.d7d06"
+ ]
+ ]
+ },
+ {
+ "id": "891fced5.d7d06",
+ "type": "switchNode",
+ "name": "switch this vnf-id == input vnf-id",
+ "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1189.0065269470215,
+ "y": 183.2484917640686,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "2828372d.9354b8"
+ ]
+ ]
+ },
+ {
+ "id": "2828372d.9354b8",
+ "type": "outcomeTrue",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1404.0065116882324,
+ "y": 181.24848556518555,
+ "z": "619b2b0c.b0ac74",
+ "wires": [
+ [
+ "56c573f0.8eef8c"
+ ]
+ ]
+ },
+ {
+ "id": "56c573f0.8eef8c",
+ "type": "set",
+ "name": "set vnf-index",
+ "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",
+ "comments": "",
+ "x": 1568.0065116882324,
+ "y": 176.24848556518555,
+ "z": "619b2b0c.b0ac74",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/resources/graph.versions b/platform-logic/generic-resource-api/src/main/resources/graph.versions
index 83427b5b..a049e64e 100755
--- a/platform-logic/generic-resource-api/src/main/resources/graph.versions
+++ b/platform-logic/generic-resource-api/src/main/resources/graph.versions
@@ -109,6 +109,7 @@ GENERIC-RESOURCE-API security-zone-topology-operation-unassign ${project.version
GENERIC-RESOURCE-API security-zone-topology-operation ${project.version} sync
GENERIC-RESOURCE-API self-serve-aai-vf-module-put ${project.version} sync
GENERIC-RESOURCE-API self-serve-aai-vnf-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-aai-pnf-put ${project.version} sync
GENERIC-RESOURCE-API self-serve-capability-param-resolution ${project.version} sync
GENERIC-RESOURCE-API self-serve-pnf-generate-name ${project.version} sync
GENERIC-RESOURCE-API self-serve-vnf-generate-name ${project.version} sync
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml
new file mode 100644
index 00000000..6631d89e
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml
@@ -0,0 +1,156 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='self-serve-aai-pnf-put' mode='sync'>
+ <block atomic="true">
+ <switch test='`$ss.capability-name`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-name is null" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$ss.capability-action`'>
+ <outcome value=''>
+ <return status="failure">
+ <parameter name="ack-final" value="Y" />
+ <parameter name="error-code" value="500"/>
+ <parameter name="error-message" value="ss.capability-action is null" />
+ </return>
+ </outcome>
+ <outcome value='assign'>
+ <block atomic='true'>
+ <for silentFailure='true' index="aidx" start="0" end="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`">
+ <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].name`'>
+ <outcome value='pnf-name'>
+ <set>
+ <parameter name='ss.param.pnf-name' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.pnf-name-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='pnf-name2'>
+ <set>
+ <parameter name='ss.param.pnf-name2' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.pnf-name2-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='pnf-id'>
+ <set>
+ <parameter name='ss.param.pnf-id' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.pnf-id-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='aai-pnf-put'>
+ <set>
+ <parameter name='ss.param.aai-pnf-put-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv4-oam-address'>
+ <set>
+ <parameter name='ss.param.ipv4-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.ipv4-oam-address-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ <outcome value='ipv6-oam-address'>
+ <set>
+ <parameter name='ss.param.ipv6-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />
+ <parameter name='ss.param.ipv6-oam-address-index' value='`$aidx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="pnf"
+ key="pnf.pnf-name = $ss.param.pnf-name "
+ pfx="tmp.aai.pnf" >
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Encountered error to get pnf with pnf-name=' + $ss.param.pnf-name + ' from AnAI'`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'pnf with pnf-name=' + $ss.param.pnf-name + ' not found in AAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </get-resource>
+ <set>
+ <parameter name="ss.selflink"
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' +
+ $service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id +
+ '/service-data/pnfs/pnf/' +
+ $ss.param.pnf-id +
+ '/pnf-data/pnf-topology/'`" />
+ </set>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="pnf"
+ key="pnf.pnf-name = $ss.param.pnf-name " >
+ <parameter name="pnf-name2" value="`$ss.param.pnf-name2`" />
+ <parameter name="prov-status" value="PREPROV" />
+ <parameter name="selflink" value="`$ss.selflink`" />
+ <parameter name="ipaddress-v4-oam" value="`$ss.param.ipv4-oam-address`" />
+ <parameter name="ipaddress-v6-oam" value="`$ss.param.ipv6-oam-address`" />
+ <parameter name="model-customization-id"
+ value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-customization-uuid`" />
+ <parameter name="model-invariant-id"
+ value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-invariant-uuid`" />
+ <parameter name="model-version-id"
+ value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-uuid`" />
+ <outcome value='failure'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'Failed to update pnf.pnf-name in AnAI with pnf-name=' + $ss.param.pnf-name`" />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='not-found'>
+ <block atomic='true'>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='FAILED' />
+ </set>
+ <return status='failure'>
+ <parameter name='error-code' value='500' />
+ <parameter name='error-message' value="`'pnf with pnf-name =' + $ss.param.pnf-name + ' is not found in AAI'`" />
+ </return>
+ </block>
+ </outcome>
+ </update>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status'
+ value='SUCCESS' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].value'
+ value='SUCCESS' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
+ <parameter name='filename' value='/var/tmp/ss-aai-pnf-put.log' />
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
index 557afd5d..eab88b48 100755..100644
--- a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
+++ b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
@@ -8,18 +8,117 @@
<outcome value='assign'>
<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign' mode='sync' ></call>
</outcome>
- <outcome value='activate'>
- <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' ></call>
- </outcome>
- <outcome value='deactivate'>
- <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' ></call>
- </outcome>
<outcome value='unassign'>
<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' ></call>
</outcome>
<outcome value='changeassign'>
<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' ></call>
</outcome>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='CreateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-create' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='ActivateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-activate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='deactivate'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeactivateSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-deactivate' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='delete'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSDWANVpnInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANLanPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSiteInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANDeviceInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='DeleteSDWANPortInstance'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-delete' mode='sync' ></call>
+ </outcome>
+ <outcome value='Other'>
+ <block></block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='update'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='SdwanBandwidthChange'>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-bandwidth-policy-change' mode='sync' ></call>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
<outcome value='Other'>
<return status='failure'>
<parameter name='ack-final' value='Y'/>
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
index 7fffebd5..2fc01cf8 100644
--- a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
@@ -5,8 +5,8 @@
<block atomic="true">
<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
resource="service-subscription"
- key= 'service-subscription.service-type = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.subscription-service-type
- AND customer.global-customer-id = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.global-customer-id'
+ key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type
+ AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'
force="true" pfx="tmp.AnAI-data-tenant">
<outcome value='success'>
<switch test='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`'>
@@ -48,4 +48,4 @@
</execute>
</block>
</method>
-</service-logic>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml
new file mode 100644
index 00000000..ddafa01b
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml
@@ -0,0 +1,87 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-get-vf-module-device-param' mode='sync'>
+ <block atomic="true">
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'esn'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.esn' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'class'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.class' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.deviceModel' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'version'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.version' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'systemIp'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.systemIP' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vendor'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.vendor' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.deviceId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'sdncCreate'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.device.sdncCreate' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml
new file mode 100644
index 00000000..21f05ed5
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml
@@ -0,0 +1,80 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-get-vf-module-lanport-param' mode='sync'>
+ <block atomic="true">
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portSwitch'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.portSwitch' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'lanPortId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.lanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml
new file mode 100644
index 00000000..3317c6c1
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml
@@ -0,0 +1,147 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-get-vf-module-site-param' mode='sync'>
+ <block atomic="true">
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic2.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="'vf-module-site-params'"/>
+ <parameter name="field3" value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>
+ </record>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'location-name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.location-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'address'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.location-address' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'postcode'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.location-postcode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'latitude'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.location-latitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'longitude'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.location-longitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'emails'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.site.emails' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$prop.site.emails`'/>
+ <parameter name="regex" value=","/>
+ <parameter name="ctx_memory_result_key" value="prop.site.email"/>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`">
+ <outcome value='true'>
+ <block>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`">
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <set>
+ <parameter name='prop.site.type' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ <parameter name='prop.site.sdwan' value='true' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'role'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.site.role' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$prop.site.role`'/>
+ <parameter name="regex" value=","/>
+ <parameter name="ctx_memory_result_key" value="prop.site.roles"/>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'controlPoint'`">
+ <outcome value='true'>
+ <block>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`">
+ <outcome value=''>
+ <block></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.site.controlPoint' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$prop.site.controlPoint`'/>
+ <parameter name="regex" value=","/>
+ <parameter name="ctx_memory_result_key" value="prop.site.controlpoints"/>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </for>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
index 68980ec4..e42b3bda 100644
--- a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
@@ -3,103 +3,124 @@
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
<method rpc='sdwan-get-wan-param' mode='sync'>
<block atomic="true">
- <for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
<block>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'id'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'id'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.id' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'deviceName'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.deviceName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portType'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.portType' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portNumber'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'apn'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.portNumber' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.apn-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'ipAddress'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.ipAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'providerIpAddress'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.providerIpAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'vlanId'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'providerIpAddress'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.vlanId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.providerIpAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'transportNetworkName'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.transportNetworkName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'inputBandwidth'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'transportNetworkName'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.inputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.transportNetworkName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'outputBandwidth'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'inputBandwidth'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.outputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.inputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'devicePortId'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'outputBandwidth'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.devicePortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.outputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
- <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'wanPortId'`">
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`">
<outcome value='true'>
<set>
- <parameter name='prop.wan.wanPortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+ <parameter name='prop.wan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'wanPortId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.wanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'publicIP'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.publicIP' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.IPMode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
</set>
</outcome>
</switch>
@@ -112,4 +133,4 @@
</for>
</block>
</method>
-</service-logic>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml
new file mode 100644
index 00000000..3e57bbcf
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml
@@ -0,0 +1,316 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-device-activate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic1.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="vf-module-id-input"/>
+ <parameter name="field3" value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`'/>
+ </record>
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="Provided alloted resource length"/>
+ <parameter name="field3" value="'parameters length'"/>
+ <parameter name="field4" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-subscription"
+ key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type
+ AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'
+ force="true" pfx="tmp.AnAI-data">
+ <outcome value='success'>
+ <switch test='`$tmp.AnAI-data.temp-ub-sub-account-id`'>
+ <outcome value=''>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.customer-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >
+ <parameter name="source" value='`$prop.customer-id`'/>
+ <parameter name="outputPath" value="tmp.userAccountEmail"/>
+ <parameter name="target" value="@test.com"/>
+ </execute>
+ <set>
+ <parameter name='prop.userAccount' value='`$tmp.userAccountEmail`' />
+ <parameter name='prop.userEmail' value='`$tmp.userAccountEmail`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-tenant.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="tenant-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="service-subscription"
+ key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type
+ AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'>
+ <parameter name='temp-ub-sub-account-id' value='`$tenant-result.data.tenantId`' />
+ <!--parameter name='temp-ub-sub-account-id' value='`$prop.customer-id`' /-->
+ </update>
+ <set>
+ <parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="tenant-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.tenant-id' value='`$tmp.AnAI-data.temp-ub-sub-account-id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="tenant-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </get-resource>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="orchestration-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ </block>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="deviceResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Activate Device rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value="deviceId" />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml
new file mode 100644
index 00000000..eed2f5fb
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml
@@ -0,0 +1,113 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-device-create' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-index`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>
+ <parameter name="regex" value="_"/>
+ <parameter name="ctx_memory_result_key" value="param-prefix"/>
+ </execute>
+ <set>
+ <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+ <parameter name="ctx-destination" value="prop.device-vf-index"/>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.device-vf-index`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ <!--parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' /-->
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $prop.device-vf-index
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml
new file mode 100644
index 00000000..5a1bc3da
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml
@@ -0,0 +1,196 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-device-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <set>
+ <parameter name='prop.devices_length' value='1' />
+ </set>
+ <set>
+ <parameter name='prop.devices[0]' value='`$prop.device.deviceId`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device-del.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="delete"/>
+ <parameter name="responsePrefix" value="deviceResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device'
+ key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->
+ <parameter name='operational-status' value='PendingDelete' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml
new file mode 100644
index 00000000..995ecff8
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml
@@ -0,0 +1,142 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-device-delete' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='PendingDelete'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`0`' />
+ </set>
+ <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <switch test="`$prop.device.sdncCreate`">
+ <outcome value='true'>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='device'
+ key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>
+ </outcome>
+ </switch>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml
new file mode 100644
index 00000000..15f1e537
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml
@@ -0,0 +1,425 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-lanport-activate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`">
+ <outcome value='true'>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ <set>
+ <parameter name='prop.siteAttachements_length' value='0' />
+ <parameter name='prop.siteIds_length' value='0' />
+ </set>
+ <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic24.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="request-action"/>
+ <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>
+ </record>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`">
+ <outcome value='true'>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic23.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="param-name"/>
+ <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>
+ </record>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic22.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="set spoke role"/>
+ </record>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.role' value="spoke" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.role' value="hub" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />
+ </set>
+ <set>
+ <parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />
+ <parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />
+ </set>
+ <set>
+ <parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />
+ <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />
+ <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />
+ <parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic21.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="prop.attach.siteId"/>
+ <parameter name="field3" value='`$prop.attach.siteId`'/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`">
+ <outcome value='true'>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-port.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="portResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create device port rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='prop.lan.devicePortId' value='`$portResp.success[0].id`' />
+ </set>
+ <switch test="`$prop.lan.portSwitch == 'layer2-port'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="bridgeDomainResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create bridge domain rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$prop.lan.ipAddress`'/>
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ipandMask"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />
+ <parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-ip-subnets.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="lanPortResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create device port rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn failed" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn topology failed" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.devicePortId`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='lanPortId' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.lanPortId`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config'
+ key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='operational-status' value='Active' />
+ <parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml
new file mode 100644
index 00000000..607a19f6
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml
@@ -0,0 +1,136 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-lanport-create' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-index`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>
+ <parameter name="regex" value="_"/>
+ <parameter name="ctx_memory_result_key" value="param-prefix"/>
+ </execute>
+ <set>
+ <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>
+ </set>
+ </block>
+ </for>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' ></call>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+ <parameter name="ctx-destination" value="prop.lan-vf-index"/>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.lan-vf-index`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config'
+ key='lan-port-config.lan-port-config-id = $prop.lan-vf-index' >
+ <parameter name="lan-port-config-id" value="`$prop.vnf-index`" />
+ <parameter name="device-id" value="`$prop.lan.deviceName`" />
+ <parameter name="port-switch" value="`$prop.lan.portSwitch`" />
+ <parameter name="port-type" value="`$prop.lan.portType`" />
+ <parameter name="port-number" value="`$prop.lan.portnumber`" />
+ <parameter name="ipv4-address" value="`$prop.lan.ipAddress`" />
+ <parameter name='vlan-tag' value="`$prop.lan.vlanId`" />
+ <parameter name='operational-status' value='Created' />
+ <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />
+ <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />
+ <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` " />
+ </save>
+ <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list'
+ key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id'
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="sdwan-vpn" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-vpns/sdwan-vpn/' + $prop.lan-vf-index`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="lan-port-config-id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.lan-vf-index`" />
+ </save>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml
new file mode 100644
index 00000000..77575c2f
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml
@@ -0,0 +1,413 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-lanport-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.vnf-id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-id`' />
+ </set>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </for>
+ </for>
+ <set>
+ <parameter name='prop.siteAttachements_length' value='0' />
+ <parameter name='prop.siteIds_length' value='0' />
+ </set>
+ <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-id == $prop.vnf-id`">
+ <outcome value='false'>
+ <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >
+ <block>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic24.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="request-action"/>
+ <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>
+ </record>
+ <!--switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`"-->
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`">
+ <outcome value='true'>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic23.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="param-name"/>
+ <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>
+ </record>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.role' value="spoke" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.role' value="hub" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />
+ </set>
+ <set>
+ <parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />
+ <parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />
+ </set>
+ <set>
+ <parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />
+ <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />
+ <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />
+ <parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`">
+ <outcome value='true'>
+ <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </outcome>
+ </switch>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-port-del.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="portResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create device port rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <switch test="`$prop.lan.portSwitch == 'layer2-port'`">
+ <outcome value='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="bridgeDomainResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create bridge domain rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$prop.lan.ipAddress`'/>
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ipandMask"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />
+ <parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-ip-subnets-del.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="lanPortResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create device port rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn failed" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="put"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn topology failed" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config'
+ key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='operational-status' value='PendingDelete' />
+ <parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml
new file mode 100644
index 00000000..5fb67357
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml
@@ -0,0 +1,138 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-lanport-delete' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lan-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='PendingDelete'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`0`' />
+ </set>
+ <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='lan-port-config'
+ key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml
new file mode 100644
index 00000000..8ac59719
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml
@@ -0,0 +1,260 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-site-activate' mode='sync'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.site.sdwan' value="false" />
+ </set>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='prop.site.deviceId_length' value='0' />
+ </set>
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />
+ <parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <switch test="`$prop.site.sdwan`">
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test="`$prop.site.controlPoint`">
+ <outcome value=''>
+ <block>
+ <set>
+ <parameter name='template.site.role' value="hub" />
+ </set>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='template.site.role' value="spoke" />
+ </set>
+ <for index='cpidx' start='0' end='`$prop.site.controlpoints_length`' >
+ <block atomic="true">
+ <set>
+ <parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="site-resource"
+ key="site-resource.site-resource-name = $prop.controlPtId AND
+ depth = '1'"
+ pfx='tmp.aai.controlPoints' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.site.controlpoints[$cpidx]' value='`$tmp.aai.controlPoints.generated-site-id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ </get-resource>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='prop.site.siteId' value="" />
+ </set>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site-' + $template.site.role + '.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="site-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn rest api" />
+ </return>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='siteId' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$site-result.success[0].id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource'
+ key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='site-resource-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='generated-site-id' value='`$site-result.success[0].id`' />
+ <parameter name='operational-status' value='Active' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml
new file mode 100644
index 00000000..d13f6809
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml
@@ -0,0 +1,114 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-site-create' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-index`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>
+ <parameter name="regex" value="_"/>
+ <parameter name="ctx_memory_result_key" value="param-prefix"/>
+ </execute>
+ <set>
+ <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' ></call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+ <parameter name="ctx-destination" value="prop.site-vf-index"/>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />
+ </set>
+ <set>
+ <parameter name='vf-module-id' value='`$prop.site-vf-index`' />
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $prop.site-vf-index
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml
new file mode 100644
index 00000000..1fcddf64
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml
@@ -0,0 +1,222 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-site-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="Provided alloted resource length"/>
+ <parameter name="field3" value="'parameters length'"/>
+ <parameter name="field4" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>
+ <block>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ <parameter name='prop.site.sdwan' value="true" />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'siteId'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <switch test="`$prop.site.sdwan`">
+ <outcome value='true'>
+ <block atomic="true">
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site-del.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="site-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ </block>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device'
+ key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->
+ <parameter name='operational-status' value='PendingDelete' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml
new file mode 100644
index 00000000..0c728d4b
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml
@@ -0,0 +1,136 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-site-delete' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='PendingDelete'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`0`' />
+ </set>
+ <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml
new file mode 100644
index 00000000..8e93f1a5
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml
@@ -0,0 +1,175 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-vpn-activate' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="sdwan-network-topology-operation-activate"/>
+ <parameter name="field3" value="SDWAN-Activate"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <block>
+ <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-create.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ <set>
+ <parameter name='prop.vpn-id' value='`$vpn-result.success[0].id`' />
+ <parameter name='prop.vpn1Id' value='`$vpn-result.success[0].id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology-create.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='tenant-id' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.tenant-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='vpn-id' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.vpn-id`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn'
+ key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='operational-status' value='Active' />
+ <parameter name='tenanat-id' value='`$prop.tenant-id`' />
+ <parameter name='vpn-id' value='`$prop.vpn-id`' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml
new file mode 100644
index 00000000..f352d1d3
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml
@@ -0,0 +1,154 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-vpn-create' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-index`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>
+ <parameter name="regex" value="_"/>
+ <parameter name="ctx_memory_result_key" value="param-prefix"/>
+ </execute>
+ <set>
+ <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>
+ </set>
+ </block>
+ </for>
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.topology' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+ <parameter name="ctx-destination" value="prop.vpn-vf-index"/>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.vpn-vf-index`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />
+ </set>
+ <set>
+ <parameter name='vf-module-id' value='`$prop.site-vf-index`' />
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $prop.vpn-vf-index
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn'
+ key='sdwan-vpn.sdwan-vpn-id = $prop.vpn-vf-index' >
+ <parameter name='sdwan-vpn-id' value='`$prop.vpn-vf-index`' />
+ <parameter name='sdwan-vpn-name' value='`$prop.name`' />
+ <parameter name='topology' value='`$prop.topology`' />
+ <parameter name='operational-status' value='Created' />
+ <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />
+ <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />
+ <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.vpn-vf-index + '/vf-module-data/'` " />
+ </save>
+ <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list'
+ key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id'
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="sdwan-vpn" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-vpns/sdwan-vpn/' + $prop.vpn-vf-index`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vpn-vf-index`" />
+ <!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list'
+ key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id'
+ force="true" pfx="tmp.AnAI-data"><parameter name="relationship-list.relationship[0].related-to" value="sdwan-site" /><parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.site-vf-index`" /-->
+ </save>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml
new file mode 100644
index 00000000..f28d9c23
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml
@@ -0,0 +1,169 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-vpn-deactivate' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="sdwan-network-topology-operation-activate"/>
+ <parameter name="field3" value="SDWAN-Activate"/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >
+ <block>
+ <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vpn-id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.vpn-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'tenant-id'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.tenant-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="delete"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-delete.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="vpn-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn'
+ key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >
+ <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />
+ <parameter name='operational-status' value='PendingDelete' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml
new file mode 100644
index 00000000..8b95c4cc
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml
@@ -0,0 +1,47 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-vpn-delete' mode='sync'>
+ <block atomic="true">
+ <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="sdwan-vf-module-operation-delete"/>
+ <parameter name="field3" value="SDWAN-Delete"/>
+ </record>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='sdwan-vpn'
+ key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`"/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx]." value=""/>
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml
new file mode 100644
index 00000000..95f83691
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml
@@ -0,0 +1,468 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-wanport-activate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='prop.site.deviceId_length' value='0' />
+ </set>
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <for index="didx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic-device-param.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name'"/>
+ <parameter name="field3" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name`'/>
+ </record>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name == 'name'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic-device-name.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="'prop.wan.deviceName'"/>
+ <parameter name="field3" value='`$prop.wan.deviceName`'/>
+ <parameter name="field4" value="'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value'"/>
+ <parameter name="field5" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`'/>
+ </record>
+ <switch test="`$prop.wan.deviceName == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`">
+ <outcome value='true'>
+ <block atomic="true">
+ <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name='tmp.devicevidx' value='`$idx`' />
+ </set>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+ <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic-last.log"/>
+ <parameter name="field1" value="__TIMESTAMP__"/>
+ <parameter name="field2" value="'tmp.devicevidx'"/>
+ <parameter name="field3" value='`$tmp.devicevidx`'/>
+ </record>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='tmp.siteVidx' value='`$idx`' />
+ <parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <for index="sidx" start="0" end="`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block atomic="true">
+ <switch test="`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].name == 'siteId'`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.siteId' value='`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].value`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <set>
+ <parameter name='portResp.success[0].id' value="12345" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="portResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create device port rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='portResp.success[0].id' value="12345" />
+ </set>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>
+ <block>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test="`GE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.linkType' value="Ethernet" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`LTE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.linkType' value="Cellular" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="portResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create device port rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="get"/>
+ <parameter name="responsePrefix" value="transportNetworksResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Get transport network info rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <for index="tidx" start="0" end="`$transportNetworksResp.data.transportNetworks_length`">
+ <block>
+ <switch test="`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$prop.wan.ipAddress`'/>
+ <parameter name="regex" value="/"/>
+ <parameter name="ctx_memory_result_key" value="ipandMask"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />
+ <parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='error-code' value='' />
+ <parameter name='error-message' value="An error occured while splitting sna1_route" />
+ </return>
+ </outcome>
+ </execute>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>
+ <block>
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`">
+ <outcome value='true'>
+ <block atomic="true">
+ <switch test="`Static == $prop.wan.IPMode`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.wan.ip-address' value="" />
+ <parameter name='prop.wan.prefixLength' value="" />
+ <parameter name='prop.wan.providerIpAddress' value="" />
+ <parameter name='prop.wan.IpMode' value="static" />
+ <parameter name='prop.route.nextHopType' value="ip-address" />
+ <parameter name='prop.route.ipAddress' value="`$prop.wan.ipAddress`" />
+ </set>
+ </outcome>
+ </switch>
+ <switch test="`DHCP == $prop.wan.IPMode`">
+ <outcome value='true'>
+ <set>
+ <parameter name='prop.route.nextHopType' value="outbound-interface" />
+ <parameter name='prop.wan.IpMode' value="DHCP" />
+ <parameter name='prop.route.ipAddress' value="" />
+ </set>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="wanPortResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true">
+ <set>
+ <parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />
+ </set>
+ </block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-underlay.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="underlayspokeResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <block></block>
+ </outcome>
+ <outcome value='success'>
+ <block></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />
+ </set>
+ <set>
+ <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='wanPortId' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='Active' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config'
+ key='wan-port-config.wan-port-config-id = $vf-module-topology-operation-input.vnf-information.vnf-id' >
+ <parameter name="wan-port-config-id" value="`$vf-module-topology-operation-input.vnf-information.vnf-id`" />
+ <parameter name='operational-status' value='Active' />
+ <parameter name='device-port-id' value='`$prop.wan.devicePortId`' />
+ <parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />
+ <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
+ <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
+ <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
+ </update>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml
new file mode 100644
index 00000000..c8494499
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml
@@ -0,0 +1,144 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-wanport-create' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <set>
+ <parameter name='vf-index' value='0' />
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-index`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+ <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>
+ <parameter name="regex" value="_"/>
+ <parameter name="ctx_memory_result_key" value="param-prefix"/>
+ </execute>
+ <set>
+ <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>
+ </set>
+ </block>
+ </for>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+ <parameter name="ctx-destination" value="prop.wan-port-vf-index"/>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $prop.wan-port-vf-index
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config'
+ key='wan-port-config.wan-port-config-id = $prop.vnf-index' >
+ <parameter name="wan-port-config-id" value="`$prop.vnf-index`" />
+ <parameter name="wan-port-config-name" value="`$prop.wan.name`" />
+ <parameter name="device-id" value="`$prop.wan.deviceName`" />
+ <parameter name='vlan-id' value="`$prop.wan.vlanId`" />
+ <parameter name="ip-address" value="`$prop.wan.ipAddress`" />
+ <parameter name="provider-ip-address" value="`$prop.wan.providerIpAddress`" />
+ <parameter name="input-bandwidth" value="`$prop.wan.inputBandwidth`" />
+ <parameter name="output-bandwidth" value="`$prop.wan.outputBandwidth`" />
+ <parameter name="description" value="`$prop.wan.description`" />
+ <parameter name="port-type" value="`$prop.wan.portType`" />
+ <parameter name="port-number" value="`$prop.wan.portNumber`" />
+ <parameter name="transport-network-name" value="`$prop.wan.transportNetworkName`" />
+ <parameter name='operational-status' value='Created' />
+ <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />
+ <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />
+ <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />
+ <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` " />
+ </save>
+ <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list'
+ key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id'
+ force="true" pfx="tmp.AnAI-data">
+ <parameter name="relationship-list.relationship[0].related-to" value="sdwan-vpn" />
+ <parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" />
+ <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.site-vf-index`" />
+ <!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list'
+ key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id'
+ force="true" pfx="tmp.AnAI-data"><parameter name="relationship-list.relationship[0].related-to" value="sdwan-site" /><parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.site-vf-index`" /-->
+ </save>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml
new file mode 100644
index 00000000..ab5d5b06
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml
@@ -0,0 +1,208 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-wanport-deactivate' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="404" />
+ <parameter name="error-message" value="There are no VNFs in MD-SAL" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <set>
+ <parameter name='prop.site.deviceId_length' value='0' />
+ </set>
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+ resource="esr-thirdparty-sdnc"
+ key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND
+ depth = '1'"
+ pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
+ <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
+ </set>
+ </outcome>
+ <outcome value='not-found'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
+ </return>
+ </outcome>
+ </get-resource>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="token-result"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <outcome value='success'>
+ <set>
+ <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
+ </set>
+ </outcome>
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing get token rest api" />
+ </return>
+ </outcome>
+ </execute>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-del.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="portResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`" />
+ <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`" />
+ <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
+ <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
+ <parameter name="format" value="json"/>
+ <parameter name="httpMethod" value="post"/>
+ <parameter name="responsePrefix" value="portResp"/>
+ <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>
+ <parameter name="trustStorePassword" value="adminadmin"/>
+ <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
+ <parameter name="keyStorePassword" value="adminadmin"/>
+ <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
+ <outcome value='failure'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="Error executing Create vpn rest api" />
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <block atomic="true"></block>
+ </outcome>
+ </execute>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status' value='PendingDelete' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />
+ </set>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml
new file mode 100644
index 00000000..587f6cc0
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml
@@ -0,0 +1,135 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='sdwan-vf-operation-wanport-delete' mode='sync'>
+ <block atomic="true">
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value='0'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <set>
+ <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />
+ </set>
+ <for index='idx' start='0' end='`$vf-module-length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.vidx' value='`$idx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />
+ </set>
+ <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ </block>
+ </outcome>
+ </switch>
+ <switch test="`$tmp.vidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='PendingDelete'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <block atomic="true">
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='false'>
+ <block atomic="true">
+ <set>
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />
+ </set>
+ <set>
+ <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>
+ </set>
+ <set>
+ <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>
+ </set>
+ <set>
+ <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vf-modules/vf-module/'
+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id
+ + '/vf-module-data/vf-module-topology/'`"/>
+ <parameter name='vnf-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/vnfs/vnf/'
+ + $service-data.vnfs.vnf[$vnf-index].vnf-id
+ + '/vnf-data/vnf-topology/'`"/>
+ <parameter name='service-object-path'
+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vf-module-topology-operation-input.service-information.service-instance-id
+ + '/service-data/service-topology/'`"/>
+ </set>
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='site-resource'
+ key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>
+ <return status='success'>
+ <parameter name="ack-final-indicator" value="Y" />
+ <parameter name="error-code" value="200" />
+ <parameter name="error-message" value="`$error-message`" />
+ </return>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml
new file mode 100644
index 00000000..de558b80
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml
@@ -0,0 +1,323 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
+ <method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vnf entry not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >
+ <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">
+ <outcome value='true'>
+ <set>
+ <parameter name='vnf-index' value='`$idx`' />
+ </set>
+ </outcome>
+ </switch>
+ </for>
+ <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>
+ <outcome value='create'>
+ <block atomic="true">
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='CreateSDWANVpnInstance'>
+ <block atomic="true">
+ <for index="i" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">
+ <block>
+ <set>
+ <parameter name='tmp.name' value='' />
+ <parameter name='tmp.value' value='' />
+ </set>
+ <set>
+ <parameter name='tmp.name' value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`"/>
+ <parameter name='tmp.value' value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`"/>
+ </set>
+ <switch test="`$tmp.name`">
+ <outcome value='name'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='topology'>
+ <switch test="`$tmp.value`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </for>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='activate'>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='ActivateSDWANVpnInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>
+ </execute>
+ <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='Created'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='deactivate'>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeactivateSDWANVpnInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>
+ </execute>
+ <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='Active'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='delete'>
+ <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>
+ <outcome value='DeleteSDWANVpnInstance'>
+ <block atomic="true">
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+ <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>
+ </execute>
+ <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
+ </return>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />
+ </return>
+ </outcome>
+ <outcome value='Other'>
+ <block atomic="true">
+ <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >
+ <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">
+ <outcome value='true'>
+ <block atomic="true">
+ <set>
+ <parameter name='tmp.nidx' value='`$nidx`' />
+ <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />
+ </set>
+ </block>
+ </outcome>
+ </switch>
+ </for>
+ <switch test="`$tmp.nidx`">
+ <outcome value=''>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>
+ <outcome value='PendingDelete'>
+ <block atomic="true"></block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete" />
+ </return>
+ </outcome>
+ </switch>
+ </outcome>
+ <outcome value='Other'>
+ <return status='failure'>
+ <parameter name='ack-final' value='Y'/>
+ <parameter name="error-code" value="500" />
+ <parameter name="error-message" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+ </return>
+ </outcome>
+ </switch>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/lcm/src/main/json/LCM_rollback.json b/platform-logic/lcm/src/main/json/LCM_rollback.json
new file mode 100644
index 00000000..96adf3f4
--- /dev/null
+++ b/platform-logic/lcm/src/main/json/LCM_rollback.json
@@ -0,0 +1,702 @@
+[
+ {
+ "id": "367cac6c.e28ad4",
+ "type": "method",
+ "name": "rollback",
+ "xml": "<method rpc='rollback' mode='sync'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 606,
+ "y": 73,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "397a12a.10f34ee"
+ ]
+ ]
+ },
+ {
+ "id": "b7a7c5dd.d286a8",
+ "type": "service-logic",
+ "name": "LCM ${project.version}",
+ "module": "LCM",
+ "version": "${project.version}",
+ "comments": "",
+ "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='LCM' version='${project.version}'>",
+ "outputs": 1,
+ "x": 393.99993896484375,
+ "y": 74,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "367cac6c.e28ad4"
+ ]
+ ]
+ },
+ {
+ "id": "2749994d.fe16d6",
+ "type": "execute",
+ "name": "execute AnsibleA.reqExec",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExec' >\n<parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\n<parameter name='User' value='`$prop.ansible.user`'/>\n<parameter name='Password' value='`$prop.ansible.password`'/>\n<parameter name='LocalParameters' value='`$prop.ansible.lcm.localparameters`'/>\n<parameter name='EnvParameters' value='`$rollback-input.payload`'/>\n<parameter name='NodeList' value=\"`$nodelist`\"/>\n<parameter name='Timeout' value='`$prop.ansible.timeout`'/>\n<parameter name='Version' value='`$prop.ansible.version`'/>\n<parameter name='Id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 461.00001525878906,
+ "y": 681,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "d80c72ca.e0d3b",
+ "3b639a7b.0ca876",
+ "f4b3d5c4.d9b698"
+ ]
+ ]
+ },
+ {
+ "id": "3f74fb5f.f66a64",
+ "type": "switchNode",
+ "name": "switch",
+ "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 860.9999389648438,
+ "y": 789.0000305175781,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "5e7ae3c.af98c1c",
+ "80745976.4dae58",
+ "2d735711.50c158"
+ ]
+ ]
+ },
+ {
+ "id": "5e7ae3c.af98c1c",
+ "type": "other",
+ "name": "outcome 500",
+ "xml": "<outcome value='500'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1005.9999389648438,
+ "y": 787.0000381469727,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "c157f020.8fa16"
+ ]
+ ]
+ },
+ {
+ "id": "80745976.4dae58",
+ "type": "other",
+ "name": "outcome 100",
+ "xml": "<outcome value='100'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1002.9999389648438,
+ "y": 844.0000305175781,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "8633c607.bab378"
+ ]
+ ]
+ },
+ {
+ "id": "8633c607.bab378",
+ "type": "execute",
+ "name": "execute reqExecResult",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExecResult' >\n <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\n\t<parameter name='User' value='`$prop.ansible.user`'/>\n\t<parameter name='Password' value='`$prop.ansible.password`'/>\n\t<parameter name='Id' value='`$org.onap.appc.adapter.ansible.Id`'/>\n\t<parameter name='PlaybookName' value='`$playbookname`'/>\n\t\n\n\n\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1190.9999389648438,
+ "y": 843.0000305175781,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "7d406d3c.e2a7a4",
+ "c98b9933.a78a78"
+ ]
+ ]
+ },
+ {
+ "id": "3b639a7b.0ca876",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 719.9999389648438,
+ "y": 702.0000915527344,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "c157f020.8fa16"
+ ]
+ ]
+ },
+ {
+ "id": "d80c72ca.e0d3b",
+ "type": "other",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 721.9999389648438,
+ "y": 754.0000610351562,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "3f74fb5f.f66a64"
+ ]
+ ]
+ },
+ {
+ "id": "7d406d3c.e2a7a4",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1359.9999389648438,
+ "y": 801.0000381469727,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "c157f020.8fa16"
+ ]
+ ]
+ },
+ {
+ "id": "2d735711.50c158",
+ "type": "other",
+ "name": "outcome 101",
+ "xml": "<outcome value='101'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1002.9999389648438,
+ "y": 745.0000686645508,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "c157f020.8fa16"
+ ]
+ ]
+ },
+ {
+ "id": "c98b9933.a78a78",
+ "type": "success",
+ "name": "success",
+ "xml": "<outcome value='success'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1367.9998779296875,
+ "y": 849.0001220703125,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "5b424098.08bd5"
+ ]
+ ]
+ },
+ {
+ "id": "4e1d4556.7dd52c",
+ "type": "returnSuccess",
+ "name": "return success",
+ "xml": "<return status='success'>\n<parameter name='status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`'/>",
+ "comments": "",
+ "x": 1661.9998779296875,
+ "y": 906.0000610351562,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "d900eabd.53e918",
+ "type": "dgstart",
+ "name": "DGSTART",
+ "outputs": 1,
+ "x": 209,
+ "y": 73,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "b7a7c5dd.d286a8"
+ ]
+ ]
+ },
+ {
+ "id": "397a12a.10f34ee",
+ "type": "block",
+ "name": "block : atomic",
+ "xml": "<block atomic='true'>",
+ "atomic": "true",
+ "comments": "",
+ "outputs": 1,
+ "x": 206.9166259765625,
+ "y": 165.08331298828125,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "2749994d.fe16d6",
+ "73725554.5774bc",
+ "8603ce63.b7c47",
+ "9a79bc82.279ce",
+ "cc7baeb9.6a3dc",
+ "b9b832a7.ed87d",
+ "16e37417.d2c8bc",
+ "763cfac9.48a8a4"
+ ]
+ ]
+ },
+ {
+ "id": "73725554.5774bc",
+ "type": "execute",
+ "name": "execute Properties",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n <parameter name='fileName' value='%SDNC_CONFIG_DIR%/lcm-dg.properties' />\n <parameter name='contextPrefix' value='prop' />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 505.0000305175781,
+ "y": 198.08334350585938,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "c9d7b572.9b1b08",
+ "type": "execute",
+ "name": "execute DmaapMsg",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`\" />\n <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\n <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\n <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\n <parameter name='format' value='json' />\n <parameter name='httpMethod' value='POST' />\n <parameter name='contentType' value='application/json' />\n <parameter name=\"responsePrefix\" value=\"lcm\" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1671.9998779296875,
+ "y": 651.0834045410156,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "18a85145.032faf"
+ ]
+ ]
+ },
+ {
+ "id": "18a85145.032faf",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1841.9998168945312,
+ "y": 650.0834045410156,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "1f387472.1096ac"
+ ]
+ ]
+ },
+ {
+ "id": "c157f020.8fa16",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1474.9998168945312,
+ "y": 675.0834045410156,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "c9d7b572.9b1b08",
+ "b8d2a948.9f6268",
+ "9c77e950.a59098"
+ ]
+ ]
+ },
+ {
+ "id": "246949fc.089f56",
+ "type": "execute",
+ "name": "execute DmaapMsg",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`\" />\n <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\n <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\n <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\n <parameter name='format' value='json' />\n <parameter name='httpMethod' value='POST' />\n <parameter name='contentType' value='application/json' />\n <parameter name=\"responsePrefix\" value=\"lcm\" />\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1672.4998779296875,
+ "y": 856.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "3c6c9ce.ec3e364"
+ ]
+ ]
+ },
+ {
+ "id": "3c6c9ce.ec3e364",
+ "type": "failure",
+ "name": "failure",
+ "xml": "<outcome value='failure'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 1840.4998779296875,
+ "y": 856.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "8c845e57.511d"
+ ]
+ ]
+ },
+ {
+ "id": "1f387472.1096ac",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='Failed to Publish to DMaap'/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1961.9998779296875,
+ "y": 649.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b8d2a948.9f6268",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n",
+ "comments": "",
+ "x": 1653.91650390625,
+ "y": 702.0834045410156,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "8c845e57.511d",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='Failed to Publish to DMaap'/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 1968.9166259765625,
+ "y": 856.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "9c77e950.a59098",
+ "type": "set",
+ "name": "set DmaapReq",
+ "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`\"/>\n<parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\n<parameter name='lcm-dmaap.rpc-name' value='rollback'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\n",
+ "comments": "",
+ "x": 1658.9998779296875,
+ "y": 598.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "5b424098.08bd5",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 1495.9998779296875,
+ "y": 850.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "246949fc.089f56",
+ "4d96ab15.f92c04",
+ "4e1d4556.7dd52c"
+ ]
+ ]
+ },
+ {
+ "id": "4d96ab15.f92c04",
+ "type": "set",
+ "name": "set DmaapReq",
+ "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`\"/>\n<parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\n<parameter name='lcm-dmaap.rpc-name' value='rollback'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\n",
+ "comments": "",
+ "x": 1662.1666259765625,
+ "y": 801.0833740234375,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "f4b3d5c4.d9b698",
+ "type": "not-found",
+ "name": "not-found",
+ "xml": "<outcome value='not-found'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 728.9999389648438,
+ "y": 654.0000610351562,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "9b946286.c1fc1"
+ ]
+ ]
+ },
+ {
+ "id": "2c09132b.2c598c",
+ "type": "set",
+ "name": "set Defaults",
+ "xml": "<set>\n<parameter name='org.onap.appc.adapter.ansible.result.code' value='401'/>\n<parameter name='org.onap.appc.adapter.ansible.message' value='Ansible Adapter was not found'/>\n",
+ "comments": "",
+ "x": 1019.9999389648438,
+ "y": 613,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "9b946286.c1fc1",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 865.9999389648438,
+ "y": 648.0000610351562,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "2c09132b.2c598c",
+ "c157f020.8fa16"
+ ]
+ ]
+ },
+ {
+ "id": "8603ce63.b7c47",
+ "type": "set",
+ "name": "set default values",
+ "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n<parameter name='quote' value=\"'\" />\n",
+ "comments": "",
+ "x": 498,
+ "y": 245,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "16e37417.d2c8bc",
+ "type": "record",
+ "name": "record",
+ "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='`$playbookname`'/>\n\t<parameter name=\"field2\" value='`$nodelist`'/>",
+ "comments": "",
+ "outputs": 1,
+ "x": 426.9998779296875,
+ "y": 609,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "cc7baeb9.6a3dc",
+ "type": "switchNode",
+ "name": "switch pnf-flag",
+ "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 480,
+ "y": 346,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "b515ebb.9b7de18",
+ "ea8f46f7.654968"
+ ]
+ ]
+ },
+ {
+ "id": "9a79bc82.279ce",
+ "type": "execute",
+ "name": "execute jsonStringToCtx",
+ "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='rollback-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",
+ "comments": "",
+ "outputs": 1,
+ "x": 512,
+ "y": 292,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ []
+ ]
+ },
+ {
+ "id": "b515ebb.9b7de18",
+ "type": "outcome",
+ "name": "true",
+ "xml": "<outcome value='true'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 677,
+ "y": 325,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "d8920a01.f108b8"
+ ]
+ ]
+ },
+ {
+ "id": "ea8f46f7.654968",
+ "type": "outcome",
+ "name": "other",
+ "xml": "<outcome value='Other'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 677,
+ "y": 386,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "32f9eda7.1c1082"
+ ]
+ ]
+ },
+ {
+ "id": "32f9eda7.1c1082",
+ "type": "block",
+ "name": "block",
+ "xml": "<block>\n",
+ "atomic": "false",
+ "comments": "",
+ "outputs": 1,
+ "x": 824.9999389648438,
+ "y": 385,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "3756c2a1.fa5d6e"
+ ]
+ ]
+ },
+ {
+ "id": "d8920a01.f108b8",
+ "type": "set",
+ "name": "set AnsibleReq",
+ "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $payloadJson.ipaddress-v4-oam + $quote + ']'`\"/>\n<parameter name='playbookname' value='`$prop.lcm.pnf.rollback.playbookname`'/>\n",
+ "comments": "",
+ "x": 838,
+ "y": 323,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "b9b832a7.ed87d",
+ "type": "switchNode",
+ "name": "switch playbookname",
+ "xml": "<switch test='`$playbookname`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 477,
+ "y": 477,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "5725646c.c7b37c"
+ ]
+ ]
+ },
+ {
+ "id": "5725646c.c7b37c",
+ "type": "outcome",
+ "name": "null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 648,
+ "y": 478,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "4546e558.72429c"
+ ]
+ ]
+ },
+ {
+ "id": "4546e558.72429c",
+ "type": "set",
+ "name": "set playbookname",
+ "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>\n<parameter name='playbookname' value='`$prop.lcm.rollback.playbookname`'/>",
+ "comments": "",
+ "x": 838,
+ "y": 477,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "763cfac9.48a8a4",
+ "type": "switchNode",
+ "name": "switch nodelist",
+ "xml": "<switch test='`$nodelist`'>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 467,
+ "y": 536,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "76eb51c0.552ce",
+ "178c823.496cd7e"
+ ]
+ ]
+ },
+ {
+ "id": "76eb51c0.552ce",
+ "type": "outcome",
+ "name": "null",
+ "xml": "<outcome value=''>\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 647,
+ "y": 529,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "66b6e37a.9e852c"
+ ]
+ ]
+ },
+ {
+ "id": "66b6e37a.9e852c",
+ "type": "set",
+ "name": "set nodelist",
+ "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",
+ "comments": "",
+ "x": 804,
+ "y": 543,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ },
+ {
+ "id": "178c823.496cd7e",
+ "type": "outcome",
+ "name": "empty",
+ "xml": "<outcome value=\"['']\">\n\n",
+ "comments": "",
+ "outputs": 1,
+ "x": 646,
+ "y": 573,
+ "z": "6f1e5235.30d27c",
+ "wires": [
+ [
+ "66b6e37a.9e852c"
+ ]
+ ]
+ },
+ {
+ "id": "3756c2a1.fa5d6e",
+ "type": "returnFailure",
+ "name": "return failure",
+ "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='Currently only support PNF.' />",
+ "comments": "",
+ "x": 998,
+ "y": 385,
+ "z": "6f1e5235.30d27c",
+ "wires": []
+ }
+] \ No newline at end of file
diff --git a/platform-logic/lcm/src/main/resources/graph.versions b/platform-logic/lcm/src/main/resources/graph.versions
index ea54b270..40fe3a95 100644
--- a/platform-logic/lcm/src/main/resources/graph.versions
+++ b/platform-logic/lcm/src/main/resources/graph.versions
@@ -10,3 +10,4 @@ LCM unlock ${project.version} sync
LCM snapshot ${project.version} sync
LCM config-scale-out ${project.version} sync
LCM health-check ${project.version} sync
+LCM rollback ${project.version} sync
diff --git a/platform-logic/lcm/src/main/xml/LCM_rollback.xml b/platform-logic/lcm/src/main/xml/LCM_rollback.xml
new file mode 100644
index 00000000..bb540b6d
--- /dev/null
+++ b/platform-logic/lcm/src/main/xml/LCM_rollback.xml
@@ -0,0 +1,340 @@
+<service-logic
+ xmlns='http://www.onap.org/sdnc/svclogic'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='LCM' version='${project.version}'>
+ <method rpc='rollback' mode='sync'>
+ <block atomic='true'>
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/lcm-dg.properties' />
+ <parameter name='contextPrefix' value='prop' />
+ </execute>
+ <set>
+ <parameter name='status.code' value='200' />
+ <parameter name='status.message' value='unexpected return from DG' />
+ <parameter name='quote' value="'" />
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>
+ <parameter name='source' value='rollback-input.payload' />
+ <parameter name='outputPath' value='payloadJson' />
+ <parameter name='isEscaped' value='true' />
+ </execute>
+ <switch test='`$payloadJson.pnf-flag`'>
+ <outcome value='true'>
+ <set>
+ <parameter name='nodelist' value="`'[' + $quote + $payloadJson.ipaddress-v4-oam + $quote + ']'`"/>
+ <parameter name='playbookname' value='`$prop.lcm.pnf.rollback.playbookname`'/>
+ </set>
+ </outcome>
+ <outcome value='Other'>
+ <block>
+ <return status='failure'>
+ <parameter name='status.code' value='401' />
+ <parameter name='status.message' value='Currently only support PNF.' />
+ </return>
+ </block>
+ </outcome>
+ </switch>
+ <switch test='`$playbookname`'>
+ <outcome value=''>
+ <set>
+ <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>
+ <parameter name='playbookname' value='`$prop.lcm.rollback.playbookname`'/>
+ </set>
+ </outcome>
+ </switch>
+ <switch test='`$nodelist`'>
+ <outcome value=''>
+ <set>
+ <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>
+ </set>
+ </outcome>
+ <outcome value="['']">
+ <set>
+ <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>
+ </set>
+ </outcome>
+ </switch>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='`$playbookname`'/>
+ <parameter name="field2" value='`$nodelist`'/>
+ </record>
+ <execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExec' >
+ <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>
+ <parameter name='User' value='`$prop.ansible.user`'/>
+ <parameter name='Password' value='`$prop.ansible.password`'/>
+ <parameter name='LocalParameters' value='`$prop.ansible.lcm.localparameters`'/>
+ <parameter name='EnvParameters' value='`$rollback-input.payload`'/>
+ <parameter name='NodeList' value="`$nodelist`"/>
+ <parameter name='Timeout' value='`$prop.ansible.timeout`'/>
+ <parameter name='Version' value='`$prop.ansible.version`'/>
+ <parameter name='Id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='PlaybookName' value='`$playbookname`'/>
+ <outcome value='not-found'>
+ <block>
+ <set>
+ <parameter name='org.onap.appc.adapter.ansible.result.code' value='401'/>
+ <parameter name='org.onap.appc.adapter.ansible.message' value='Ansible Adapter was not found'/>
+ </set>
+ <block>
+ <set>
+ <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>
+ <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>
+ <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>
+ <parameter name='lcm-dmaap.rpc-name' value='rollback'/>
+ <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>
+ <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>
+ <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>
+ <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>
+ <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>
+ <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>
+ <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>
+ <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>
+ <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />
+ <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />
+ <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='contentType' value='application/json' />
+ <parameter name="responsePrefix" value="lcm" />
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='Failed to Publish to DMaap'/>
+ </record>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='status.code' value='401' />
+ <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />
+ </return>
+ </block>
+ </block>
+ </outcome>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>
+ <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>
+ <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>
+ <parameter name='lcm-dmaap.rpc-name' value='rollback'/>
+ <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>
+ <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>
+ <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>
+ <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>
+ <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>
+ <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>
+ <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>
+ <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>
+ <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />
+ <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />
+ <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='contentType' value='application/json' />
+ <parameter name="responsePrefix" value="lcm" />
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='Failed to Publish to DMaap'/>
+ </record>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='status.code' value='401' />
+ <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='Other'>
+ <switch test="`$org.onap.appc.adapter.ansible.result.code`">
+ <outcome value='101'>
+ <block>
+ <set>
+ <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>
+ <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>
+ <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>
+ <parameter name='lcm-dmaap.rpc-name' value='rollback'/>
+ <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>
+ <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>
+ <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>
+ <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>
+ <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>
+ <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>
+ <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>
+ <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>
+ <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />
+ <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />
+ <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='contentType' value='application/json' />
+ <parameter name="responsePrefix" value="lcm" />
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='Failed to Publish to DMaap'/>
+ </record>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='status.code' value='401' />
+ <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='500'>
+ <block>
+ <set>
+ <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>
+ <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>
+ <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>
+ <parameter name='lcm-dmaap.rpc-name' value='rollback'/>
+ <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>
+ <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>
+ <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>
+ <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>
+ <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>
+ <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>
+ <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>
+ <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>
+ <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />
+ <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />
+ <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='contentType' value='application/json' />
+ <parameter name="responsePrefix" value="lcm" />
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='Failed to Publish to DMaap'/>
+ </record>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='status.code' value='401' />
+ <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='100'>
+ <execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExecResult' >
+ <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>
+ <parameter name='User' value='`$prop.ansible.user`'/>
+ <parameter name='Password' value='`$prop.ansible.password`'/>
+ <parameter name='Id' value='`$org.onap.appc.adapter.ansible.Id`'/>
+ <parameter name='PlaybookName' value='`$playbookname`'/>
+ <outcome value='failure'>
+ <block>
+ <set>
+ <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>
+ <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>
+ <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>
+ <parameter name='lcm-dmaap.rpc-name' value='rollback'/>
+ <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>
+ <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>
+ <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>
+ <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>
+ <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>
+ <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>
+ <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>
+ <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>
+ <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />
+ <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />
+ <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='contentType' value='application/json' />
+ <parameter name="responsePrefix" value="lcm" />
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='Failed to Publish to DMaap'/>
+ </record>
+ </outcome>
+ </execute>
+ <return status='failure'>
+ <parameter name='status.code' value='401' />
+ <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />
+ </return>
+ </block>
+ </outcome>
+ <outcome value='success'>
+ <block>
+ <set>
+ <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>
+ <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>
+ <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>
+ <parameter name='lcm-dmaap.rpc-name' value='rollback'/>
+ <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>
+ <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>
+ <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>
+ <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>
+ <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>
+ <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>
+ <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>
+ <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>
+ <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>
+ <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </set>
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+ <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />
+ <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />
+ <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />
+ <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />
+ <parameter name='format' value='json' />
+ <parameter name='httpMethod' value='POST' />
+ <parameter name='contentType' value='application/json' />
+ <parameter name="responsePrefix" value="lcm" />
+ <outcome value='failure'>
+ <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+ <parameter name="logger" value="message-log"/>
+ <parameter name="field1" value='Failed to Publish to DMaap'/>
+ </record>
+ </outcome>
+ </execute>
+ <return status='success'>
+ <parameter name='status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />
+ <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`'/>
+ </return>
+ </block>
+ </outcome>
+ </execute>
+ </outcome>
+ </switch>
+ </outcome>
+ </execute>
+ </block>
+ </method>
+</service-logic> \ No newline at end of file
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json b/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json
new file mode 100644
index 00000000..1d0f8bd1
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json
@@ -0,0 +1,17 @@
+{
+ "bridgeDomains": [
+ {
+ "id": "",
+ "deviceId": ${prop.lan.deviceId},
+ "ports": [
+ {
+ "id": ${prop.lan.devicePortId},
+ "tagMode": "untag"
+ }
+ ],
+ "vlanId": ${prop.lan.vlanId},
+ "description": "spoke2 test vlan L2 port"
+ }
+ ]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json
new file mode 100644
index 00000000..4e42e61a
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json
@@ -0,0 +1,8 @@
+{
+ "tnps": [
+ {
+ "id": ${prop.lan.lanPortId},
+ }
+ ]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json
new file mode 100644
index 00000000..85ccf15a
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json
@@ -0,0 +1,37 @@
+{
+ "IPSubnets":[
+ {
+ "vpnId": ${prop.vpnId},
+ "siteId": ${prop.lan.siteId},
+ "deviceId": ${prop.lan.deviceId},
+ "id": "",
+ "interfaceType": "interface",
+ "interfaceName": "interface",
+ "portId": ${prop.lan.devicePortId},
+ "vlanId": null,
+ "ipAddress": ${prop.lan.ip-address},
+ "prefixLength": ${prop.lan.prefixLength},
+ "vrrp": {
+ "enable": false,
+ "vrrpId": null,
+ "virtualIpAddress": null,
+ "defaultRole": null,
+ "preemptDelay": null
+ },
+ "dhcp": {
+ "enable": false,
+ "dhcpServiceType": null,
+ "dhcpServer": null,
+ "dhcpRelay": null
+ },
+ "securityZone": "trust",
+ "proxyArp": "false",
+ "attributes": {
+ "mtu": null,
+ "TCPmss": null
+ },
+ "description": "hub1 L3 test"
+ }
+]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json b/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json
new file mode 100644
index 00000000..914bb661
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json
@@ -0,0 +1,8 @@
+{
+ "tnps": [
+ {
+ "id": ${prop.lan.devicePortId},
+ }
+ ]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-port.json b/platform-logic/restapi-templates/src/main/json/sdlan-port.json
new file mode 100644
index 00000000..a499d9a5
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-port.json
@@ -0,0 +1,23 @@
+{
+ "ports": [
+ {
+ "id": "",
+ "portType": ${prop.lan.portType},
+ "portNumber": ${prop.lan.portNumber},
+ "deviceId": ${prop.lan.deviceId},
+ "portSwitch": ${prop.lan.portSwitch},
+ "linkInfo": {
+ "linkType": "Ethernet",
+ "cellular": null,
+ "atm": null,
+ "ethernet": {
+ "negotiationMode": "manual",
+ "media": "copper",
+ "duplex": "half",
+ "speed": 10
+ }
+ }
+ }
+ ]
+}
+