SDWAN WAN port DG addition 73/60573/1
authorshashikanth.vh <shashikanth.vh@huawei.com>
Tue, 14 Aug 2018 16:00:26 +0000 (21:30 +0530)
committershashikanth.vh <shashikanth.vh@huawei.com>
Tue, 14 Aug 2018 16:00:42 +0000 (21:30 +0530)
Updates include:
- Addition of sdwan port resource DG
- Templates

Change-Id: Id3913755e2724c26663269fb9c8235fc2ca7fb91
Issue-ID: SDNC-357
Signed-off-by: shashikanth.vh <shashikanth.vh@huawei.com>
Former-commit-id: 93bb206a1e4d8ce64a5f43d2733995a0a1b4fe92

14 files changed:
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-get-wan-param.json [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.xml [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.xml [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.xml [new file with mode: 0644]
platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml [new file with mode: 0644]
platform-logic/restapi-templates/src/main/json/sdwan-device-port-del.json [new file with mode: 0644]
platform-logic/restapi-templates/src/main/json/sdwan-port.json
platform-logic/restapi-templates/src/main/json/sdwan-wan-port-del.json [new file with mode: 0644]
platform-logic/restapi-templates/src/main/json/sdwan-wan-port.json

diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-get-wan-param.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
new file mode 100644 (file)
index 0000000..dbd911b
--- /dev/null
@@ -0,0 +1,727 @@
+[
+  {
+    "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": []
+  }
+]
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json
new file mode 100644 (file)
index 0000000..1f6af4f
--- /dev/null
@@ -0,0 +1,1709 @@
+[
+  {
+    "id": "fea5a9bd.a03d18",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 86.00390625,
+    "y": 44.999999046325684,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "e45f8bd6.497e68"
+      ]
+    ]
+  },
+  {
+    "id": "e45f8bd6.497e68",
+    "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": 234.2895965576172,
+    "y": 95.23810768127441,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "f0f23207.f8f43"
+      ]
+    ]
+  },
+  {
+    "id": "f0f23207.f8f43",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-activate",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 237.43252563476562,
+    "y": 180.00003147125244,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "32849d64.f1ae32"
+      ]
+    ]
+  },
+  {
+    "id": "32849d64.f1ae32",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 300.67066192626953,
+    "y": 785.6669883728027,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "dc92d74f.dca7a8",
+        "1cf85990.ed3b86",
+        "b4c4037f.4ac1e",
+        "f3c230b1.3312b",
+        "ac816a8a.6fb1f8",
+        "e9d0f6cd.99c098",
+        "62f05310.c79d2c",
+        "ca279788.45f118",
+        "aece4931.30eed8",
+        "d9e42142.36e4c",
+        "eaa46981.c8da08",
+        "2847803.c88858",
+        "a3465abe.51b3e8",
+        "ea6762c6.702c5",
+        "33c90daa.1c8182",
+        "81b0e70b.0576d8",
+        "e220c2f5.e3641",
+        "cd49784f.a3cd48"
+      ]
+    ]
+  },
+  {
+    "id": "dc92d74f.dca7a8",
+    "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": 639.3383979797363,
+    "y": 1527.3344058990479,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "eaa46981.c8da08",
+    "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.openecomp.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": 715.3380165100098,
+    "y": 780.8894968032837,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "65c0152d.40a98c",
+        "6523c3cc.277f2c"
+      ]
+    ]
+  },
+  {
+    "id": "65c0152d.40a98c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 964.3380756378174,
+    "y": 794.889702796936,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "9cca9a95.c82758"
+      ]
+    ]
+  },
+  {
+    "id": "6523c3cc.277f2c",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 964.3380756378174,
+    "y": 756.8895382881165,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "d75e1634.f465a8"
+      ]
+    ]
+  },
+  {
+    "id": "d75e1634.f465a8",
+    "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": 1108.3384094238281,
+    "y": 755.8895378112793,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "9cca9a95.c82758",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1111.3380870819092,
+    "y": 795.8895416259766,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a3465abe.51b3e8",
+    "type": "execute",
+    "name": "execute RestApiCallNode get transport network info",
+    "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=\"get\"/>\n<parameter name=\"responsePrefix\" value=\"transportNetworksResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.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": 738.0043678283691,
+    "y": 960.0006022453308,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "91b71ecc.ea421",
+        "dad0aff7.4b6c2"
+      ]
+    ]
+  },
+  {
+    "id": "81b0e70b.0576d8",
+    "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.openecomp.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": 711.0044593811035,
+    "y": 1197.0006504058838,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "b0038d4b.581a3",
+        "fdc236b1.efb848"
+      ]
+    ]
+  },
+  {
+    "id": "1cf85990.ed3b86",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 697.0248413085938,
+    "y": 124.02091121673584,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "d1aa4aa.5bcccb8",
+        "7a701067.ec473",
+        "6e75ccb1.58cf34"
+      ]
+    ]
+  },
+  {
+    "id": "d1aa4aa.5bcccb8",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 949.0248756408691,
+    "y": 125.02099227905273,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "4988f92c.8e1ab8"
+      ]
+    ]
+  },
+  {
+    "id": "4988f92c.8e1ab8",
+    "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": 1110.8026237487793,
+    "y": 104.90993928909302,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "7a701067.ec473",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 942.0252838134766,
+    "y": 158.02099609375,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "ba03b0d7.0be36"
+      ]
+    ]
+  },
+  {
+    "id": "ba03b0d7.0be36",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 960.2947769165039,
+    "y": 320.5755786895752,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "24648014.ff824",
+        "5aa1ffdc.05015",
+        "a65a9125.dc54c",
+        "ae97242b.dc5558",
+        "acc92682.3c6fd8"
+      ]
+    ]
+  },
+  {
+    "id": "24648014.ff824",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1245.3109436035156,
+    "y": 150.44955730438232,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "1aa311e.b073aee"
+      ]
+    ]
+  },
+  {
+    "id": "5aa1ffdc.05015",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1171.612247467041,
+    "y": 296.4327926635742,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "93a97c9.4fbf08"
+      ]
+    ]
+  },
+  {
+    "id": "93a97c9.4fbf08",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1319.0408897399902,
+    "y": 296.0042028427124,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "c3cf31a6.b52f"
+      ]
+    ]
+  },
+  {
+    "id": "b192d0.2d48dd3",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1618.7401733398438,
+    "y": 149.6997194290161,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "801ede81.82f43"
+      ]
+    ]
+  },
+  {
+    "id": "c3cf31a6.b52f",
+    "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": 1468.4696159362793,
+    "y": 297.14712047576904,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "801ede81.82f43",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1773.6921653747559,
+    "y": 150.59239864349365,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "7772ec9b.efcac4"
+      ]
+    ]
+  },
+  {
+    "id": "db3e11bd.eb0ca",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 2181.224250793457,
+    "y": 60.34245681762695,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "6e75ccb1.58cf34",
+    "type": "outcome",
+    "name": "0",
+    "xml": "<outcome value='0'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 950.9936256408691,
+    "y": 88.98967838287354,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "4988f92c.8e1ab8"
+      ]
+    ]
+  },
+  {
+    "id": "cd49784f.a3cd48",
+    "type": "set",
+    "name": "set device PortId and wan portId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='wanPortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$prop.wan.wanPortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 2`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 734.9947814941406,
+    "y": 1318.9909219741821,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "abae1674.12b3d8",
+    "type": "comment",
+    "name": "Get siteId from site resource created for this service",
+    "info": "",
+    "comments": "",
+    "x": 722.9938888549805,
+    "y": 309.32321548461914,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "1aa311e.b073aee",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1464.6605758666992,
+    "y": 149.98963737487793,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "b192d0.2d48dd3"
+      ]
+    ]
+  },
+  {
+    "id": "b4c4037f.4ac1e",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 672.5501022338867,
+    "y": 1406.2128171920776,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "f3c230b1.3312b",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Active",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 689.9945640563965,
+    "y": 1445.990653038025,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "da8588c8.55f098",
+    "type": "update",
+    "name": "save 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.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\n<parameter name=\"id\" value=\"`$service-data.vnfs.vnf[$tmp.vidx].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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 752.6574897766113,
+    "y": 1485.1381149291992,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d902b620.732c58",
+    "type": "set",
+    "name": "set prop.wan.transportNetworkId",
+    "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp[$tidx].id`' />\n",
+    "comments": "",
+    "x": 1492.995449066162,
+    "y": 1036.9906740188599,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "ac816a8a.6fb1f8",
+    "type": "for",
+    "name": "for loop sidx - Get siteId from servicedata",
+    "xml": "<for index=\"sidx\" start=\"0\" end=\"`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 702.9939117431641,
+    "y": 459.98987197875977,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "f946d98b.8721e8"
+      ]
+    ]
+  },
+  {
+    "id": "6e3361b7.a1918",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1133.994239807129,
+    "y": 460.9900026321411,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "628588c5.8c4528"
+      ]
+    ]
+  },
+  {
+    "id": "628588c5.8c4528",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1271.9946975708008,
+    "y": 458.98998737335205,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "b0597272.0a65f"
+      ]
+    ]
+  },
+  {
+    "id": "b0597272.0a65f",
+    "type": "set",
+    "name": "set prop.wan.siteId",
+    "xml": "<set>\n<parameter name='prop.wan.siteId' value='`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n\n\n",
+    "comments": "",
+    "x": 1435.9947319030762,
+    "y": 460.58984088897705,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "33c90daa.1c8182",
+    "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.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 661.9942359924316,
+    "y": 1105.323642730713,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "d21f243c.e29608",
+        "61bef1c0.f032f"
+      ]
+    ]
+  },
+  {
+    "id": "61bef1c0.f032f",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 862.994255065918,
+    "y": 1083.323634147644,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "dba59ea6.fb87c"
+      ]
+    ]
+  },
+  {
+    "id": "d21f243c.e29608",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 862.9942588806152,
+    "y": 1124.3236379623413,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "5e04d6ae.a87ea8"
+      ]
+    ]
+  },
+  {
+    "id": "dba59ea6.fb87c",
+    "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": 1059.9942741394043,
+    "y": 1081.323634147644,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "5e04d6ae.a87ea8",
+    "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": 1017.9942665100098,
+    "y": 1121.323637008667,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "aece4931.30eed8",
+    "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 = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 696.4940643310547,
+    "y": 559.9899234771729,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "acfff48e.adde88",
+        "cfdab1ae.df7ca",
+        "3d21e606.ef145a"
+      ]
+    ]
+  },
+  {
+    "id": "acfff48e.adde88",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 909.4941635131836,
+    "y": 521.989951133728,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "caaa91ba.7a205"
+      ]
+    ]
+  },
+  {
+    "id": "cfdab1ae.df7ca",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 911.9850463867188,
+    "y": 557.5639877319336,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "43a0c2ab.03d7fc"
+      ]
+    ]
+  },
+  {
+    "id": "3d21e606.ef145a",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 907.3180541992188,
+    "y": 593.897346496582,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "5c31ca17.841574"
+      ]
+    ]
+  },
+  {
+    "id": "5c31ca17.841574",
+    "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": 1061.0905456542969,
+    "y": 591.3364334106445,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "43a0c2ab.03d7fc",
+    "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": 1057.5564422607422,
+    "y": 555.8496751785278,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "caaa91ba.7a205",
+    "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": 1069.9942741394043,
+    "y": 519.9898910522461,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "e9d0f6cd.99c098",
+    "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-wanport-vnf-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 615.0040016174316,
+    "y": 180.00002908706665,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "62f05310.c79d2c",
+    "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": 651.3061256408691,
+    "y": 215.0000729560852,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d9e42142.36e4c",
+    "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.openecomp.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": 699.004207611084,
+    "y": 649.6669254302979,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "dbf3792f.06d4c8",
+        "ba692605.0e2fb8"
+      ]
+    ]
+  },
+  {
+    "id": "dbf3792f.06d4c8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 927.004337310791,
+    "y": 631.6669187545776,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "2ce328a2.bcfc88"
+      ]
+    ]
+  },
+  {
+    "id": "2ce328a2.bcfc88",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1069.0043449401855,
+    "y": 630.666919708252,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "eb7128c2.0605b8",
+    "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": 1075.0043449401855,
+    "y": 668.059907913208,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "ba692605.0e2fb8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 926.254337310791,
+    "y": 667.3098258972168,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "eb7128c2.0605b8"
+      ]
+    ]
+  },
+  {
+    "id": "ea6762c6.702c5",
+    "type": "for",
+    "name": "for loop tidx - Get transportNetwork ID",
+    "xml": "<for index=\"tidx\" start=\"0\" end=\"`$transportNetworksResp.transportNetworks_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 695.0043983459473,
+    "y": 995.3335218429565,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "f45abeac.b55fa"
+      ]
+    ]
+  },
+  {
+    "id": "f45abeac.b55fa",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 911.0047798156738,
+    "y": 996.3337659835815,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "8c6e090d.8c7a88"
+      ]
+    ]
+  },
+  {
+    "id": "8c6e090d.8c7a88",
+    "type": "switchNode",
+    "name": "switch transportNetworkName same",
+    "xml": "<switch test=\"`$transportNetworksResp.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1132.0050621032715,
+    "y": 994.6670722961426,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "9c44e433.9ec8a8"
+      ]
+    ]
+  },
+  {
+    "id": "9c44e433.9ec8a8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1345.0045127868652,
+    "y": 994.6669902801514,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "d902b620.732c58"
+      ]
+    ]
+  },
+  {
+    "id": "570db1f7.cbe77",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANDeviceInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1559.3375091552734,
+    "y": 227.00005626678467,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "8b1ff3eb.69d25"
+      ]
+    ]
+  },
+  {
+    "id": "8b1ff3eb.69d25",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1782.3375186920166,
+    "y": 227.00005626678467,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "48e7d6a0.748938"
+      ]
+    ]
+  },
+  {
+    "id": "c26d092c.4da7c8",
+    "type": "set",
+    "name": "set tmp.devicevidx",
+    "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$vidx`' />\n\n",
+    "comments": "",
+    "x": 2747.3368530273438,
+    "y": 658.0000810623169,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "a65a9125.dc54c",
+    "type": "switchNode",
+    "name": "switch tmp.devicevidx",
+    "xml": "<switch test=\"`$tmp.devicevidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1212.3374366760254,
+    "y": 385.0001187324524,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "432fe6b0.129348"
+      ]
+    ]
+  },
+  {
+    "id": "432fe6b0.129348",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1396.7660026550293,
+    "y": 385.57155561447144,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "4e59531.7ac0fac"
+      ]
+    ]
+  },
+  {
+    "id": "4e59531.7ac0fac",
+    "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=\"ActivateSDWANDeviceInstance not found in service-data\" />\n",
+    "comments": "",
+    "x": 1537.1947441101074,
+    "y": 385.7144351005554,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "81f1ba7c.aa1808",
+    "type": "comment",
+    "name": "Get deviceId from device resource created for this service",
+    "info": "",
+    "comments": "",
+    "x": 2196.6707916259766,
+    "y": 324.3333349227905,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "c653d564.103fb8",
+    "type": "for",
+    "name": "for loop didx - Get deviceId from servicedata",
+    "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2182.671001434326,
+    "y": 247.99997901916504,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "b9b11207.7934a"
+      ]
+    ]
+  },
+  {
+    "id": "7c90973.05bfa68",
+    "type": "switchNode",
+    "name": "switch name (DeviceName)",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2200.671600341797,
+    "y": 386.00022411346436,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "41a73401.a0e75c"
+      ]
+    ]
+  },
+  {
+    "id": "41a73401.a0e75c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2402.672092437744,
+    "y": 380.0002841949463,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "edf1bf9c.83bf3"
+      ]
+    ]
+  },
+  {
+    "id": "f946d98b.8721e8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 965.0041046142578,
+    "y": 460.6666965484619,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "6e3361b7.a1918"
+      ]
+    ]
+  },
+  {
+    "id": "b9b11207.7934a",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1975.003890991211,
+    "y": 384.6667251586914,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "7c90973.05bfa68"
+      ]
+    ]
+  },
+  {
+    "id": "f5314270.2417a",
+    "type": "switchNode",
+    "name": "switch deviceId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3046.0050506591797,
+    "y": 598.6670217514038,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "6eb2a758.9628c8"
+      ]
+    ]
+  },
+  {
+    "id": "6eb2a758.9628c8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3199.0054206848145,
+    "y": 599.6670989990234,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "2a323a58.ea63c6"
+      ]
+    ]
+  },
+  {
+    "id": "2a323a58.ea63c6",
+    "type": "set",
+    "name": "set prop.wan.deviceId",
+    "xml": "<set>\n<parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n",
+    "comments": "",
+    "x": 3368.0060272216797,
+    "y": 598.2671337127686,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "48e7d6a0.748938",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1923.6708374023438,
+    "y": 249.0000762939453,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "c653d564.103fb8"
+      ]
+    ]
+  },
+  {
+    "id": "edf1bf9c.83bf3",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2221.0051345825195,
+    "y": 463.00025367736816,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "8e851a14.33c2e8"
+      ]
+    ]
+  },
+  {
+    "id": "15e6beda.ef5931",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2610.0058403015137,
+    "y": 466.0003786087036,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "8b8e8a8.6844f78"
+      ]
+    ]
+  },
+  {
+    "id": "7772ec9b.efcac4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1912.3376846313477,
+    "y": 151.00003242492676,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "db3e11bd.eb0ca",
+        "3f24458e.06f9fa",
+        "a565af06.127cb",
+        "9a2c7dc6.4b893"
+      ]
+    ]
+  },
+  {
+    "id": "e220c2f5.e3641",
+    "type": "for",
+    "name": "for loop wanPortidx - Get wanPortId",
+    "xml": "<for index=\"wanPortidx\" start=\"0\" end=\"`$wanPortResp_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 693.3374061584473,
+    "y": 1231.0003681182861,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "50e167ac.c7e768"
+      ]
+    ]
+  },
+  {
+    "id": "50e167ac.c7e768",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 910.3379402160645,
+    "y": 1232.000452041626,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "97aa93ae.f7018"
+      ]
+    ]
+  },
+  {
+    "id": "97aa93ae.f7018",
+    "type": "switchNode",
+    "name": "switch deviceId same",
+    "xml": "<switch test=\"`$wanPortResp[$wanPortidx].deviceId == $prop.deviceId`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1084.3385925292969,
+    "y": 1239.3339138031006,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "3a30ba64.e39ed6"
+      ]
+    ]
+  },
+  {
+    "id": "3a30ba64.e39ed6",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1252.3377742767334,
+    "y": 1228.333701133728,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "3ba0cd34.c2b072"
+      ]
+    ]
+  },
+  {
+    "id": "3ba0cd34.c2b072",
+    "type": "set",
+    "name": "set prop.wan.wanPortId",
+    "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp[$wanPortidx].id`' />\n",
+    "comments": "",
+    "x": 1334.3284950256348,
+    "y": 1278.6572723388672,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "2847803.c88858",
+    "type": "for",
+    "name": "for loop portidx - Get device portId",
+    "xml": "<for index=\"portidx\" start=\"0\" end=\"`$portResp_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 686.0040702819824,
+    "y": 831.333553314209,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "ec540fb0.f5947"
+      ]
+    ]
+  },
+  {
+    "id": "ec540fb0.f5947",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 887.0044059753418,
+    "y": 832.3337163925171,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "b9169b7.ff5dd68"
+      ]
+    ]
+  },
+  {
+    "id": "b9169b7.ff5dd68",
+    "type": "switchNode",
+    "name": "switch deviceId same",
+    "xml": "<switch test=\"`$portResp[$portidx].deviceId == $prop.deviceId`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1046.0049057006836,
+    "y": 830.6671323776245,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "165db6.9ea6824a"
+      ]
+    ]
+  },
+  {
+    "id": "165db6.9ea6824a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1219.0042743682861,
+    "y": 831.6669683456421,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "a1161094.a324"
+      ]
+    ]
+  },
+  {
+    "id": "a1161094.a324",
+    "type": "set",
+    "name": "set prop.wan.devicePortId",
+    "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp[$portidx].id`' />\n",
+    "comments": "",
+    "x": 1379.99515914917,
+    "y": 882.9906177520752,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "69fec1ed.0fee",
+    "type": "comment",
+    "name": "Create port",
+    "info": "",
+    "comments": "",
+    "x": 617.0039558410645,
+    "y": 747.3335208892822,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "595aa329.443d7c",
+    "type": "comment",
+    "name": "Get network id",
+    "info": "",
+    "comments": "",
+    "x": 613.0039558410645,
+    "y": 922.3334903717041,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "a89f747e.6de7f8",
+    "type": "comment",
+    "name": "Create wan port",
+    "info": "",
+    "comments": "",
+    "x": 628.0041046142578,
+    "y": 1069.3336572647095,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "fdc236b1.efb848",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 997.0040283203125,
+    "y": 1157.000238418579,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "a6e9f6d5.ea4dd8"
+      ]
+    ]
+  },
+  {
+    "id": "b0038d4b.581a3",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 997.0040245056152,
+    "y": 1197.0004034042358,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "be9a3635.dfb8c8"
+      ]
+    ]
+  },
+  {
+    "id": "be9a3635.dfb8c8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1141.0040397644043,
+    "y": 1196.0002403259277,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a6e9f6d5.ea4dd8",
+    "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": 1139.0043601989746,
+    "y": 1156.000238418579,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "dad0aff7.4b6c2",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1044.0039558410645,
+    "y": 908.0001773834229,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "63d1b7a0.e4fbc8"
+      ]
+    ]
+  },
+  {
+    "id": "91b71ecc.ea421",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1044.0039520263672,
+    "y": 948.0003423690796,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "45c0e517.c6f5ac"
+      ]
+    ]
+  },
+  {
+    "id": "45c0e517.c6f5ac",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1188.0039672851562,
+    "y": 947.0001792907715,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "63d1b7a0.e4fbc8",
+    "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": 1186.0042877197266,
+    "y": 907.0001773834229,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "a565af06.127cb",
+    "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": 2184.670539855957,
+    "y": 157.000075340271,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "3f24458e.06f9fa",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 2153.670539855957,
+    "y": 107.00009250640869,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "7cd20fc3.2681b",
+    "type": "comment",
+    "name": "This is also required for template parameters update",
+    "info": "",
+    "comments": "",
+    "x": 2549.0043029785156,
+    "y": 203.0000352859497,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "400dec0b.3df124",
+    "type": "switchNode",
+    "name": "switch ActivateSiteInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1522.0043487548828,
+    "y": 192.00004863739014,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "a948b445.19bab8"
+      ]
+    ]
+  },
+  {
+    "id": "a948b445.19bab8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1718.0045318603516,
+    "y": 193.00004863739014,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "50e42e52.250bb"
+      ]
+    ]
+  },
+  {
+    "id": "50e42e52.250bb",
+    "type": "set",
+    "name": "set tmp.siteVidx",
+    "xml": "<set>\n<parameter name='tmp.siteVidx' value='`$vidx`' />\n<parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vidx].`' />\n\n",
+    "comments": "",
+    "x": 1904.0038299560547,
+    "y": 190.0000524520874,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "ae97242b.dc5558",
+    "type": "switchNode",
+    "name": "switch tmp.siteVidx",
+    "xml": "<switch test=\"`$tmp.siteVidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1195.6706581115723,
+    "y": 334.00006914138794,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "31115c1a.df8dd4"
+      ]
+    ]
+  },
+  {
+    "id": "31115c1a.df8dd4",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1370.0993690490723,
+    "y": 334.5715208053589,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "efdc94d7.becbf8"
+      ]
+    ]
+  },
+  {
+    "id": "efdc94d7.becbf8",
+    "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=\"ActivateSiteInstance not found in service-data\" />\n",
+    "comments": "",
+    "x": 1512.5280876159668,
+    "y": 333.71438360214233,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "8e851a14.33c2e8",
+    "type": "switchNode",
+    "name": "switch deviceName match",
+    "xml": "<switch test=\"`$prop.wan.deviceName == $service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`\">\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2426.671859741211,
+    "y": 464.00031757354736,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "15e6beda.ef5931"
+      ]
+    ]
+  },
+  {
+    "id": "8b8e8a8.6844f78",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2509.3377990722656,
+    "y": 538.0001611709595,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "7124d1e8.c1afc",
+        "c26d092c.4da7c8"
+      ]
+    ]
+  },
+  {
+    "id": "7124d1e8.c1afc",
+    "type": "for",
+    "name": "for loop deviceidx - Get deviceId from servicedata",
+    "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2789.5349502563477,
+    "y": 533.0313501358032,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "29242480.1ab1ec"
+      ]
+    ]
+  },
+  {
+    "id": "29242480.1ab1ec",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2866.5356826782227,
+    "y": 597.0314493179321,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "f5314270.2417a"
+      ]
+    ]
+  },
+  {
+    "id": "9a2c7dc6.4b893",
+    "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=\".....\"/>\n<parameter name=\"field3\" value=\"prop.wan.deviceName\"/>\n<parameter name=\"field4\" value='`$prop.wan.deviceName`'/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2112.535285949707,
+    "y": 205.03126621246338,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "acc92682.3c6fd8",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1238.003978729248,
+    "y": 228.00001621246338,
+    "z": "3545e2b7.8c73ce",
+    "wires": [
+      [
+        "570db1f7.cbe77",
+        "400dec0b.3df124"
+      ]
+    ]
+  },
+  {
+    "id": "ca279788.45f118",
+    "type": "set",
+    "name": "copy input data to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
+    "comments": "",
+    "x": 685.03515625,
+    "y": 1360.5311269760132,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  },
+  {
+    "id": "a2ce1e1.66d8de",
+    "type": "comment",
+    "name": "TODO: split ip/mask",
+    "info": "",
+    "comments": "",
+    "x": 1059.00390625,
+    "y": 1043.50390625,
+    "z": "3545e2b7.8c73ce",
+    "wires": []
+  }
+]
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json
new file mode 100644 (file)
index 0000000..68bc52c
--- /dev/null
@@ -0,0 +1,443 @@
+[
+  {
+    "id": "f7c47e43.722a8",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 131.00390625,
+    "y": 50.00390625,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "df50ad92.5b9f3"
+      ]
+    ]
+  },
+  {
+    "id": "df50ad92.5b9f3",
+    "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": 230.28960418701172,
+    "y": 124.24201414268464,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "7a9c4555.b9551c"
+      ]
+    ]
+  },
+  {
+    "id": "7a9c4555.b9551c",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-create",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 254.43252563476562,
+    "y": 213.0039258003235,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "19a1bf06.151541"
+      ]
+    ]
+  },
+  {
+    "id": "19a1bf06.151541",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 362.6706085205078,
+    "y": 420.67058992385864,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "a1f3b1e9.35545",
+        "f570a4d2.187c18",
+        "90591b72.96d098",
+        "b3840dbc.6104c",
+        "4c4bb443.a3389c",
+        "44f64d1d.aa7064",
+        "5baacb87.e7da64",
+        "f0cbc16c.cad4b",
+        "a062fc34.476f9",
+        "cf3398f4.969708",
+        "b5b128b4.4b50a8",
+        "795a527a.112ffc",
+        "f82a7101.bfc5b"
+      ]
+    ]
+  },
+  {
+    "id": "a1f3b1e9.35545",
+    "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": 652.3375396728516,
+    "y": 872.3377075195312,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "f570a4d2.187c18",
+    "type": "save",
+    "name": "save sdwan device port configuration in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.id = $prop.vnf-index' >\n<parameter name=\"id\" value=\"`$prop.vnf-index`\" />\n<parameter name=\"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.ipAdddress`\" />\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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 739.0042953491211,
+    "y": 779.5599503517151,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "90591b72.96d098",
+    "type": "for",
+    "name": "for loop idx - VNF input parameters",
+    "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 717.0043640136719,
+    "y": 446.67932987213135,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "b4473f3b.51629"
+      ]
+    ]
+  },
+  {
+    "id": "b4473f3b.51629",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 931.7827072143555,
+    "y": 444.23491382598877,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "3e1cd824.f76ba8",
+        "706d3a5.3e853c4"
+      ]
+    ]
+  },
+  {
+    "id": "8b4706cb.23dc38",
+    "type": "comment",
+    "name": "set input parameters",
+    "info": "",
+    "comments": "",
+    "x": 935.6775550842285,
+    "y": 572.6009178161621,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "b3840dbc.6104c",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 727.9937286376953,
+    "y": 143.60080528259277,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "2465f202.f0a9ce",
+        "506845c6.11b4dc"
+      ]
+    ]
+  },
+  {
+    "id": "2465f202.f0a9ce",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 964.7079563140869,
+    "y": 133.7436351776123,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "75a2f10a.06bc7"
+      ]
+    ]
+  },
+  {
+    "id": "506845c6.11b4dc",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 960.1366729736328,
+    "y": 172.02948570251465,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "4460ebdc.a1f384"
+      ]
+    ]
+  },
+  {
+    "id": "4460ebdc.a1f384",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1092.8508682250977,
+    "y": 177.02942562103271,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "7e7a019f.eac06",
+        "6d299d3a.328f54"
+      ]
+    ]
+  },
+  {
+    "id": "75a2f10a.06bc7",
+    "type": "set",
+    "name": "set vnf-index=0",
+    "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
+    "comments": "",
+    "x": 1120.9937705993652,
+    "y": 132.74371528625488,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "7e7a019f.eac06",
+    "type": "set",
+    "name": "set vnf-index = vnf_length",
+    "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
+    "comments": "",
+    "x": 1321.993782043457,
+    "y": 149.31512928009033,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "6d299d3a.328f54",
+    "type": "for",
+    "name": "for each existing VNF",
+    "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1304.422248840332,
+    "y": 189.31509113311768,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "984f572c.ac6fc8"
+      ]
+    ]
+  },
+  {
+    "id": "984f572c.ac6fc8",
+    "type": "switchNode",
+    "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1662.7080307006836,
+    "y": 188.88659477233887,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "51f1d598.2ca1cc"
+      ]
+    ]
+  },
+  {
+    "id": "bbaa30a9.5e134",
+    "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 id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
+    "comments": "",
+    "x": 2105.5650024414062,
+    "y": 189.4580249786377,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "51f1d598.2ca1cc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1967.9936714172363,
+    "y": 188.45802116394043,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      [
+        "bbaa30a9.5e134"
+      ]
+    ]
+  },
+  {
+    "id": "44f64d1d.aa7064",
+    "type": "execute",
+    "name": "execute generate-vnf-index",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-index\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 706.9936218261719,
+    "y": 275.60077476501465,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4c4bb443.a3389c",
+    "type": "set",
+    "name": "set new vnf_length",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
+    "comments": "",
+    "x": 680.9936065673828,
+    "y": 240.60078287124634,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "f0cbc16c.cad4b",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Created",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 719.9936294555664,
+    "y": 691.6010417938232,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "5baacb87.e7da64",
+    "type": "set",
+    "name": "copy input data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",
+    "comments": "",
+    "x": 659.8468208312988,
+    "y": 645.5972957611084,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "a062fc34.476f9",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"wan-port-config\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/wan-port-configs/wan-port-config/' + $prop.vnf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"wan-port-config.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-index`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 705.9936294555664,
+    "y": 827.6010503768921,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cf3398f4.969708",
+    "type": "set",
+    "name": "set vnf-index and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-index`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 712.9936294555664,
+    "y": 735.601044178009,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "b5b128b4.4b50a8",
+    "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-wanport-vnf-topology-operation-create\"/>\n<parameter name=\"field3\" value=\"SDWAN-Config\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 645.0039329528809,
+    "y": 328.0039367675781,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e311900d.ece88",
+    "type": "comment",
+    "name": "Take the parameter names by removing prefix",
+    "info": "",
+    "comments": "",
+    "x": 825.0042266845703,
+    "y": 416.0039920806885,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "3e1cd824.f76ba8",
+    "type": "execute",
+    "name": "execute split parameterName",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-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": 1145.038818359375,
+    "y": 394.9830369949341,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "706d3a5.3e853c4",
+    "type": "set",
+    "name": "set parameterName",
+    "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+    "comments": "",
+    "x": 1113.4833221435547,
+    "y": 463.98312282562256,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  },
+  {
+    "id": "795a527a.112ffc",
+    "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": 705.0043487548828,
+    "y": 576.0042514801025,
+    "z": "61d54760.a4d0c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f82a7101.bfc5b",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
+    "comments": "",
+    "x": 671.0039367675781,
+    "y": 544.004054069519,
+    "z": "61d54760.a4d0c8",
+    "wires": []
+  }
+]
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json
new file mode 100644 (file)
index 0000000..ca38d84
--- /dev/null
@@ -0,0 +1,724 @@
+[
+  {
+    "id": "e612d5f5.8b6538",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 105.00390625,
+    "y": 55.99999871850014,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "150c6234.3faf1e"
+      ]
+    ]
+  },
+  {
+    "id": "150c6234.3faf1e",
+    "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.2895965576172,
+    "y": 106.23810735344887,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "1b2d2c3d.3c9464"
+      ]
+    ]
+  },
+  {
+    "id": "1b2d2c3d.3c9464",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-deactivate",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 287.4325180053711,
+    "y": 190.00001588463783,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "bf701672.487a88"
+      ]
+    ]
+  },
+  {
+    "id": "bf701672.487a88",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 262.6706123352051,
+    "y": 574.6666819155216,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "b889ffd5.0fa63",
+        "f33aa2.256e456",
+        "ca99ad99.37765",
+        "26cf633a.338b9c",
+        "554bc62c.9e5bc8",
+        "ec3af845.5c1818",
+        "5ba1424c.f63d5c",
+        "46594e30.35ca2",
+        "7caacd63.309604",
+        "6bdcf104.b48b8",
+        "13a2d05d.7d396"
+      ]
+    ]
+  },
+  {
+    "id": "b889ffd5.0fa63",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 768.0248603820801,
+    "y": 99.02095222473145,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "72446922.dfdc88",
+        "2e454e9c.4de002",
+        "34a36311.6884ac"
+      ]
+    ]
+  },
+  {
+    "id": "72446922.dfdc88",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1011.024787902832,
+    "y": 124.02103519439697,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "2b15f4dc.0543ec"
+      ]
+    ]
+  },
+  {
+    "id": "2b15f4dc.0543ec",
+    "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": 1159.8022994995117,
+    "y": 103.9099702835083,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "2e454e9c.4de002",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1012.0251121520996,
+    "y": 157.02105808258057,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "767b5296.07b42c"
+      ]
+    ]
+  },
+  {
+    "id": "767b5296.07b42c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1159.2948150634766,
+    "y": 146.57558059692383,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "e6f54805.c662c8",
+        "150dec3f.ac66f4"
+      ]
+    ]
+  },
+  {
+    "id": "e6f54805.c662c8",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1404.310775756836,
+    "y": 98.44958019256592,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "62dbeb25.9e1404"
+      ]
+    ]
+  },
+  {
+    "id": "150dec3f.ac66f4",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1335.6121292114258,
+    "y": 146.43275928497314,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "7f71feab.68d97"
+      ]
+    ]
+  },
+  {
+    "id": "7f71feab.68d97",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1489.0407676696777,
+    "y": 145.00417232513428,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "7f6f3eb7.5ba2f"
+      ]
+    ]
+  },
+  {
+    "id": "9c6aa9a4.753d88",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1775.739356994629,
+    "y": 95.69969272613525,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "414b7f38.5b52"
+      ]
+    ]
+  },
+  {
+    "id": "7f6f3eb7.5ba2f",
+    "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": 1625.4691619873047,
+    "y": 144.14703464508057,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "414b7f38.5b52",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1814.691505432129,
+    "y": 150.59241199493408,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "de28481b.2e84a8"
+      ]
+    ]
+  },
+  {
+    "id": "34a36311.6884ac",
+    "type": "outcome",
+    "name": "0",
+    "xml": "<outcome value='0'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1007.9935340881348,
+    "y": 91.98973083496094,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "2b15f4dc.0543ec"
+      ]
+    ]
+  },
+  {
+    "id": "62dbeb25.9e1404",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1623.6604080200195,
+    "y": 97.9896411895752,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "9c6aa9a4.753d88"
+      ]
+    ]
+  },
+  {
+    "id": "f33aa2.256e456",
+    "type": "set",
+    "name": "set vnf in service-data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n\n",
+    "comments": "",
+    "x": 723.338077545166,
+    "y": 747.6668863296509,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "ca99ad99.37765",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 735.8937187194824,
+    "y": 804.889181137085,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "26cf633a.338b9c",
+    "type": "set",
+    "name": "set vnf-level-oper-status to PendingDelete",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 778.3380928039551,
+    "y": 839.6670169830322,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "554bc62c.9e5bc8",
+    "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": 688.6714630126953,
+    "y": 928.4448499679565,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "46594e30.35ca2",
+    "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 = SDWAN-Controller AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 748.5042667388916,
+    "y": 267.00012239813805,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "d2393044.02c98",
+        "de34f71f.564f78",
+        "165c6807.bce198"
+      ]
+    ]
+  },
+  {
+    "id": "d2393044.02c98",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 967.5042362213135,
+    "y": 226.00011897087097,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "af0c4e7e.16054"
+      ]
+    ]
+  },
+  {
+    "id": "de34f71f.564f78",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 970.9952030181885,
+    "y": 273.5741546154022,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "46779502.824a2c"
+      ]
+    ]
+  },
+  {
+    "id": "165c6807.bce198",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 966.3282108306885,
+    "y": 314.9074676036835,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "d9434b38.eb9228"
+      ]
+    ]
+  },
+  {
+    "id": "d9434b38.eb9228",
+    "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": 1154.1007671356201,
+    "y": 310.3466603755951,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "46779502.824a2c",
+    "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": 1147.566614151001,
+    "y": 261.8598906993866,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "af0c4e7e.16054",
+    "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": 1148.0043392181396,
+    "y": 220.00015768408775,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "13a2d05d.7d396",
+    "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=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.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": 781.0044193267822,
+    "y": 642.666867017746,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "d7fb77a3.a86188",
+        "e2af2841.d1f638"
+      ]
+    ]
+  },
+  {
+    "id": "d7fb77a3.a86188",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1027.0044040679932,
+    "y": 680.6669557094574,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "d422494c.56c648"
+      ]
+    ]
+  },
+  {
+    "id": "e2af2841.d1f638",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1023.0044841766357,
+    "y": 634.6668708324432,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "e8bbadbc.9ad4c"
+      ]
+    ]
+  },
+  {
+    "id": "e8bbadbc.9ad4c",
+    "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": 1164.0045757293701,
+    "y": 634.6668717861176,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "d422494c.56c648",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1171.0042705535889,
+    "y": 678.6668746471405,
+    "z": "f765645f.7b8058",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6bdcf104.b48b8",
+    "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.openecomp.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": 772.0045871734619,
+    "y": 535.666864156723,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "de6f5d9a.00d19",
+        "fe1384f0.e198c8"
+      ]
+    ]
+  },
+  {
+    "id": "de6f5d9a.00d19",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1005.0046825408936,
+    "y": 568.6668565273285,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "fd275e00.86cf8"
+      ]
+    ]
+  },
+  {
+    "id": "fe1384f0.e198c8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1009.0047626495361,
+    "y": 504.66693472862244,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "f44e9eb0.30563"
+      ]
+    ]
+  },
+  {
+    "id": "f44e9eb0.30563",
+    "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": 1154.004934310913,
+    "y": 506.66693472862244,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "fd275e00.86cf8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1161.0045261383057,
+    "y": 566.6668565273285,
+    "z": "f765645f.7b8058",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ec3af845.5c1818",
+    "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": 716.0038948059082,
+    "y": 142.0000295639038,
+    "z": "f765645f.7b8058",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7caacd63.309604",
+    "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.openecomp.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": 765.0041751861572,
+    "y": 405.66669368743896,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "187682f0.2e0ced",
+        "97689994.fe4b58"
+      ]
+    ]
+  },
+  {
+    "id": "187682f0.2e0ced",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 999.0042133331299,
+    "y": 391.6667184829712,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "dfaa5b94.faad78"
+      ]
+    ]
+  },
+  {
+    "id": "97689994.fe4b58",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 992.2541751861572,
+    "y": 437.3095769882202,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "3f21f41a.0451bc"
+      ]
+    ]
+  },
+  {
+    "id": "3f21f41a.0451bc",
+    "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": 1145.0041751861572,
+    "y": 437.05963802337646,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "dfaa5b94.faad78",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1153.0042133331299,
+    "y": 392.6667184829712,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "de28481b.2e84a8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1955.0040168762207,
+    "y": 151.00004482269287,
+    "z": "f765645f.7b8058",
+    "wires": [
+      [
+        "a23df7c7.a5b718",
+        "c1a4bc96.3c58",
+        "c7716aba.aa75c8"
+      ]
+    ]
+  },
+  {
+    "id": "5ba1424c.f63d5c",
+    "type": "update",
+    "name": "save 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.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\n<parameter name=\"id\" value=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`\" />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 801.0041923522949,
+    "y": 881.0004291534424,
+    "z": "f765645f.7b8058",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a23df7c7.a5b718",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 2205.0352516174316,
+    "y": 102.03129148483276,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "c1a4bc96.3c58",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 2177.4815406799316,
+    "y": 148.6889271736145,
+    "z": "f765645f.7b8058",
+    "wires": []
+  },
+  {
+    "id": "c7716aba.aa75c8",
+    "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": 2201.481491088867,
+    "y": 198.68891525268555,
+    "z": "f765645f.7b8058",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json
new file mode 100644 (file)
index 0000000..a6359ac
--- /dev/null
@@ -0,0 +1,468 @@
+[
+  {
+    "id": "503a78f7.47ca18",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 657.0634536743164,
+    "y": 392,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "77aa4ba.68c1bb4",
+        "4952201a.7d4c8"
+      ]
+    ]
+  },
+  {
+    "id": "1a9196c0.4e6769",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 118.96875,
+    "y": 156.73882961273193,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "902e1c94.66f24"
+      ]
+    ]
+  },
+  {
+    "id": "902e1c94.66f24",
+    "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": 194.25445556640625,
+    "y": 196.9769411087036,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "a3cff3f0.d5beb"
+      ]
+    ]
+  },
+  {
+    "id": "2648545f.a0239c",
+    "type": "comment",
+    "name": "wan port-vnf-topology-operation-delete",
+    "info": "",
+    "comments": "",
+    "x": 568.3136672973633,
+    "y": 230.32522869110107,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "cb66206e.4a85e",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 195.63541412353516,
+    "y": 458.4055013656616,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "99c3b58a.28fe68",
+        "41864004.a59f8",
+        "7d0a1f82.5f016",
+        "60ff59e4.f2b988",
+        "335cedb5.736ac2",
+        "503a78f7.47ca18",
+        "ee257c77.ce85f",
+        "b68bb604.af2598",
+        "55b1fa8a.f95f74"
+      ]
+    ]
+  },
+  {
+    "id": "77aa4ba.68c1bb4",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 921.7857666015625,
+    "y": 374.5556221008301,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "5f41004a.301df"
+      ]
+    ]
+  },
+  {
+    "id": "5f41004a.301df",
+    "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": 1102.7856369018555,
+    "y": 369.5555000305176,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "4952201a.7d4c8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 907.2857666015625,
+    "y": 426.55558490753174,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "dcbc4218.194a6"
+      ]
+    ]
+  },
+  {
+    "id": "dcbc4218.194a6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1079.285472869873,
+    "y": 426.5555830001831,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "b8b4f7cf.20f728",
+        "f6b988cf.3ccc88",
+        "a936ae5c.480e"
+      ]
+    ]
+  },
+  {
+    "id": "f6b988cf.3ccc88",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1254.28564453125,
+    "y": 445.55550479888916,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "2be170a7.d1fc4"
+      ]
+    ]
+  },
+  {
+    "id": "335cedb5.736ac2",
+    "type": "switchNode",
+    "name": "switch vnf-level-oper-status",
+    "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 627.4524536132812,
+    "y": 466.4444637298584,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "2a3d41e1.8aa8ce",
+        "c521841a.091868"
+      ]
+    ]
+  },
+  {
+    "id": "2a3d41e1.8aa8ce",
+    "type": "outcome",
+    "name": "outcome PendingDelete",
+    "xml": "<outcome value='PendingDelete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 918.2857208251953,
+    "y": 470.55558681488037,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "edb94879.c47ed8"
+      ]
+    ]
+  },
+  {
+    "id": "c521841a.091868",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 864.2857818603516,
+    "y": 517.5555906295776,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "8d57a7f4.cb78b8"
+      ]
+    ]
+  },
+  {
+    "id": "8d57a7f4.cb78b8",
+    "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": 1023.7855491638184,
+    "y": 520.5555896759033,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "ee257c77.ce85f",
+    "type": "switchNode",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 593.2857704162598,
+    "y": 347.5555934906006,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "d82c9312.151d9"
+      ]
+    ]
+  },
+  {
+    "id": "d82c9312.151d9",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 791.2858352661133,
+    "y": 337.5556058883667,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "a3bf6d80.2d0f6"
+      ]
+    ]
+  },
+  {
+    "id": "a3bf6d80.2d0f6",
+    "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-request-input.vnf-input-parameters.name is a required input\" />\n",
+    "comments": "",
+    "x": 957.7857208251953,
+    "y": 334.5556001663208,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "b8b4f7cf.20f728",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1314.7856483459473,
+    "y": 381.5555009841919,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "ba14948d.015c78"
+      ]
+    ]
+  },
+  {
+    "id": "ba14948d.015c78",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1570.7856674194336,
+    "y": 381.5555009841919,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "b53ab16b.22442"
+      ]
+    ]
+  },
+  {
+    "id": "b53ab16b.22442",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1747.2857208251953,
+    "y": 384.5555009841919,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "c9311851.f90738"
+      ]
+    ]
+  },
+  {
+    "id": "c9311851.f90738",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1914.2857360839844,
+    "y": 445.5555009841919,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "6ec9cdbe.844104",
+    "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": 1559.785659790039,
+    "y": 445.55550479888916,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "2be170a7.d1fc4",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1422.285659790039,
+    "y": 445.55550479888916,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "6ec9cdbe.844104"
+      ]
+    ]
+  },
+  {
+    "id": "7d0a1f82.5f016",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+    "comments": "",
+    "x": 605.3021850585938,
+    "y": 642.0722465515137,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "60ff59e4.f2b988",
+    "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": 554.4133453369141,
+    "y": 767.6276769638062,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "99c3b58a.28fe68",
+    "type": "set",
+    "name": "set new vnf length",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value=\"`$service-data.vnfs.vnf_length - 1`\"/>\n\n\t\n",
+    "comments": "",
+    "x": 585.9347686767578,
+    "y": 539.5431041717529,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "41864004.a59f8",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$tmp.vidx].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 621.5589599609375,
+    "y": 583.5110712051392,
+    "z": "944c3ee1.29b9e",
+    "wires": []
+  },
+  {
+    "id": "edb94879.c47ed8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1115.5921211242676,
+    "y": 480.88074111938477,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a3cff3f0.d5beb",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-delete",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 199.5,
+    "y": 313,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      [
+        "cb66206e.4a85e"
+      ]
+    ]
+  },
+  {
+    "id": "b68bb604.af2598",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 650.7858276367188,
+    "y": 287.55559253692627,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "55b1fa8a.f95f74",
+    "type": "delete",
+    "name": "delete wan port instance configuration in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='wan-port-config' \n        key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 657.5,
+    "y": 704,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a936ae5c.480e",
+    "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=\"tmp.vidx1234555\"/>\n<parameter name=\"field3\" value='`$tmp.vidx`'/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1303.5001373291016,
+    "y": 500.0000123977661,
+    "z": "944c3ee1.29b9e",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
new file mode 100644 (file)
index 0000000..68980ec
--- /dev/null
@@ -0,0 +1,115 @@
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    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}'>\r
+    <method rpc='sdwan-get-wan-param' mode='sync'>\r
+        <block atomic="true">\r
+            <for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >\r
+                <block>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'id'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.id' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'deviceName'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.deviceName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portType'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.portType' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portNumber'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.portNumber' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'ipAddress'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.ipAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'providerIpAddress'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.providerIpAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'vlanId'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.vlanId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'transportNetworkName'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.transportNetworkName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'inputBandwidth'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.inputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'outputBandwidth'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.outputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'devicePortId'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.devicePortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'wanPortId'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.wanPortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                    <return status='success'>\r
+                        <parameter name="ack-final-indicator" value="Y" />\r
+                        <parameter name="error-code" value="200" />\r
+                        <parameter name="error-message" value="`$error-message`" />\r
+                    </return>\r
+                </block>\r
+            </for>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.xml
new file mode 100644 (file)
index 0000000..59e0313
--- /dev/null
@@ -0,0 +1,346 @@
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    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}'>\r
+    <method rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync'>\r
+        <block atomic="true">\r
+            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                <outcome value='0'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value=''>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block atomic="true">\r
+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <block>\r
+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                                    <outcome value='true'>\r
+                                        <block atomic="true">\r
+                                            <set>\r
+                                                <parameter name='tmp.vidx' value='`$vidx`' />\r
+                                                <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\r
+                                            </set>\r
+                                            <set>\r
+                                                <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\r
+                                            </set>\r
+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>\r
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
+                                                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
+                                                <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                <parameter name="field2" value="....."/>\r
+                                                <parameter name="field3" value="prop.wan.deviceName"/>\r
+                                                <parameter name="field4" value='`$prop.wan.deviceName`'/>\r
+                                            </record>\r
+                                        </block>\r
+                                    </outcome>\r
+                                </switch>\r
+                            </block>\r
+                        </for>\r
+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">\r
+                                <outcome value='true'>\r
+                                    <set>\r
+                                        <parameter name='tmp.siteVidx' value='`$vidx`' />\r
+                                        <parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vidx].`' />\r
+                                    </set>\r
+                                </outcome>\r
+                            </switch>\r
+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">\r
+                                <outcome value='true'>\r
+                                    <block atomic="true">\r
+                                        <for index="didx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
+                                            <block atomic="true">\r
+                                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'name'`">\r
+                                                    <outcome value='true'>\r
+                                                        <block atomic="true">\r
+                                                            <switch test="`$prop.wan.deviceName == $service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`">\r
+                                                                <outcome value='true'>\r
+                                                                    <block atomic="true">\r
+                                                                        <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
+                                                                            <block atomic="true">\r
+                                                                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">\r
+                                                                                    <outcome value='true'>\r
+                                                                                        <set>\r
+                                                                                            <parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\r
+                                                                                        </set>\r
+                                                                                    </outcome>\r
+                                                                                </switch>\r
+                                                                            </block>\r
+                                                                        </for>\r
+                                                                        <set>\r
+                                                                            <parameter name='tmp.devicevidx' value='`$vidx`' />\r
+                                                                        </set>\r
+                                                                    </block>\r
+                                                                </outcome>\r
+                                                            </switch>\r
+                                                        </block>\r
+                                                    </outcome>\r
+                                                </switch>\r
+                                            </block>\r
+                                        </for>\r
+                                    </block>\r
+                                </outcome>\r
+                            </switch>\r
+                        </for>\r
+                        <switch test="`$tmp.vidx`">\r
+                            <outcome value=''>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                                </return>\r
+                            </outcome>\r
+                        </switch>\r
+                        <switch test="`$tmp.siteVidx`">\r
+                            <outcome value=''>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="ActivateSiteInstance not found in service-data" />\r
+                                </return>\r
+                            </outcome>\r
+                        </switch>\r
+                        <switch test="`$tmp.devicevidx`">\r
+                            <outcome value=''>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="ActivateSDWANDeviceInstance not found in service-data" />\r
+                                </return>\r
+                            </outcome>\r
+                        </switch>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
+                <parameter name="field1" value="__TIMESTAMP__"/>\r
+                <parameter name="field2" value="sdwan-wanport-vnf-topology-operation-activate"/>\r
+                <parameter name="field3" value="SDWAN-Activate"/>\r
+            </record>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
+                <parameter name='contextPrefix' value='prop' />\r
+            </execute>\r
+            <for index="sidx" start="0" end="`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param_length`">\r
+                <block atomic="true">\r
+                    <switch test="`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.siteId' value='`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
+               resource="esr-thirdparty-sdnc" \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+                    depth = '1'"\r
+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
+                <outcome value='success'>\r
+                    <set>\r
+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />\r
+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />\r
+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='not-found'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />\r
+                    </return>\r
+                </outcome>\r
+            </get-resource>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="post"/>\r
+                <parameter name="responsePrefix" value="token-result"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <outcome value='success'>\r
+                    <set>\r
+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing get token rest api" />\r
+                    </return>\r
+                </outcome>\r
+            </execute>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />\r
+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="post"/>\r
+                <parameter name="responsePrefix" value="portResp"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing Create device port rest api" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='success'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+            </execute>\r
+            <for index="portidx" start="0" end="`$portResp_length`">\r
+                <block>\r
+                    <switch test="`$portResp[$portidx].deviceId == $prop.deviceId`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.devicePortId' value='`$portResp[$portidx].id`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />\r
+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="get"/>\r
+                <parameter name="responsePrefix" value="transportNetworksResp"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing Get transport network info rest api" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='success'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+            </execute>\r
+            <for index="tidx" start="0" end="`$transportNetworksResp.transportNetworks_length`">\r
+                <block>\r
+                    <switch test="`$transportNetworksResp.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp[$tidx].id`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+                <parameter name="original_string" value='`$prop.ipAddress`'/>\r
+                <parameter name="regex" value="/"/>\r
+                <parameter name="ctx_memory_result_key" value="ipandMask"/>\r
+                <outcome value='success'>\r
+                    <set>\r
+                        <parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />\r
+                        <parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='error-code' value='' />\r
+                        <parameter name='error-message' value="An error occured while splitting sna1_route" />\r
+                    </return>\r
+                </outcome>\r
+            </execute>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`" />\r
+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="post"/>\r
+                <parameter name="responsePrefix" value="wanPortResp"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing Create wan port rest api" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='success'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+            </execute>\r
+            <for index="wanPortidx" start="0" end="`$wanPortResp_length`">\r
+                <block>\r
+                    <switch test="`$wanPortResp[$wanPortidx].deviceId == $prop.deviceId`">\r
+                        <outcome value='true'>\r
+                            <set>\r
+                                <parameter name='prop.wan.wanPortId' value='`$wanPortResp[$wanPortidx].id`' />\r
+                            </set>\r
+                        </outcome>\r
+                    </switch>\r
+                </block>\r
+            </for>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='wanPortId' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$prop.wan.wanPortId`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 2`' />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
+            </set>\r
+            <set>\r
+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
+            </set>\r
+            <return status='success'>\r
+                <parameter name="ack-final-indicator" value="Y" />\r
+                <parameter name="error-code" value="200" />\r
+                <parameter name="error-message" value="`$error-message`" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.xml
new file mode 100644 (file)
index 0000000..cf209c0
--- /dev/null
@@ -0,0 +1,114 @@
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    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}'>\r
+    <method rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync'>\r
+        <block atomic="true">\r
+            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                <outcome value=''>\r
+                    <set>\r
+                        <parameter name='vnf-index' value='0' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block>\r
+                        <set>\r
+                            <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\r
+                        </set>\r
+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\r
+                                <outcome value='true'>\r
+                                    <return status='failure'>\r
+                                        <parameter name='ack-final' value='Y'/>\r
+                                        <parameter name="error-code" value="500" />\r
+                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\r
+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />\r
+                                    </return>\r
+                                </outcome>\r
+                            </switch>\r
+                        </for>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\r
+            </set>\r
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\r
+                <parameter name="ctx-destination" value="prop.vnf-index"/>\r
+            </execute>\r
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
+                <parameter name="field1" value="__TIMESTAMP__"/>\r
+                <parameter name="field2" value="sdwan-wanport-vnf-topology-operation-create"/>\r
+                <parameter name="field3" value="SDWAN-Config"/>\r
+            </record>\r
+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">\r
+                <block>\r
+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>\r
+                        <parameter name="regex" value="_"/>\r
+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>\r
+                    </execute>\r
+                    <set>\r
+                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>\r
+                    </set>\r
+                </block>\r
+            </for>\r
+            <set>\r
+                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\r
+            </set>\r
+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
+            </set>\r
+            <set>\r
+                <parameter name='vnfId' value='`$prop.vnf-index`' />\r
+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` " />\r
+            </set>\r
+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \r
+      key='wan-port-config.id = $prop.vnf-index' >\r
+                <parameter name="id" value="`$prop.vnf-index`" />\r
+                <parameter name="name" value="`$prop.wan.name`" />\r
+                <parameter name="device-id" value="`$prop.wan.deviceName`" />\r
+                <parameter name='vlan-id' value="`$prop.wan.vlanId`" />\r
+                <parameter name="ip-address" value="`$prop.wan.ipAdddress`" />\r
+                <parameter name="provider-ip-address" value="`$prop.wan.providerIpAddress`" />\r
+                <parameter name="input-bandwidth" value="`$prop.wan.inputBandwidth`" />\r
+                <parameter name="output-bandwidth" value="`$prop.wan.outputBandwidth`" />\r
+                <parameter name="description" value="`$prop.wan.description`" />\r
+                <parameter name="port-type" value="`$prop.wan.portType`" />\r
+                <parameter name="port-number" value="`$prop.wan.portNumber`" />\r
+                <parameter name="transport-network-name" value="`$prop.wan.transportNetworkName`" />\r
+                <parameter name='operational-status' value='Created' />\r
+                <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
+                <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` " />\r
+            </save>\r
+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \r
+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \r
+         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \r
+         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \r
+      force="true" pfx="tmp.AnAI-data">\r
+                <parameter name="relationship-list.relationship[0].related-to" value="wan-port-config" />\r
+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/wan-port-configs/wan-port-config/' + $prop.vnf-index`" />\r
+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="wan-port-config.id" />\r
+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vnf-index`" />\r
+            </save>\r
+            <return status='success'>\r
+                <parameter name="ack-final-indicator" value="Y" />\r
+                <parameter name="error-code" value="200" />\r
+                <parameter name="error-message" value="`$error-message`" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.xml
new file mode 100644 (file)
index 0000000..f622274
--- /dev/null
@@ -0,0 +1,186 @@
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    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}'>\r
+    <method rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync'>\r
+        <block atomic="true">\r
+            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                <outcome value='0'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value=''>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block atomic="true">\r
+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <block>\r
+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                                    <outcome value='true'>\r
+                                        <block atomic="true">\r
+                                            <set>\r
+                                                <parameter name='tmp.vidx' value='`$vidx`' />\r
+                                                <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\r
+                                            </set>\r
+                                            <set>\r
+                                                <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\r
+                                            </set>\r
+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>\r
+                                        </block>\r
+                                    </outcome>\r
+                                </switch>\r
+                            </block>\r
+                        </for>\r
+                        <switch test="`$tmp.vidx`">\r
+                            <outcome value=''>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                                </return>\r
+                            </outcome>\r
+                        </switch>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
+                <parameter name='contextPrefix' value='prop' />\r
+            </execute>\r
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
+               resource="esr-thirdparty-sdnc" \r
+               key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWAN-Controller AND \r
+                    depth = '1'"\r
+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
+                <outcome value='success'>\r
+                    <set>\r
+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />\r
+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />\r
+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='not-found'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />\r
+                    </return>\r
+                </outcome>\r
+            </get-resource>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="post"/>\r
+                <parameter name="responsePrefix" value="token-result"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <outcome value='success'>\r
+                    <set>\r
+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing get token rest api" />\r
+                    </return>\r
+                </outcome>\r
+            </execute>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-del.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports/action/batch-delete'`" />\r
+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="post"/>\r
+                <parameter name="responsePrefix" value="portResp"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing Create vpn rest api" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='success'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+            </execute>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`" />\r
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`" />\r
+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
+                <parameter name="format" value="json"/>\r
+                <parameter name="httpMethod" value="delete"/>\r
+                <parameter name="responsePrefix" value="portResp"/>\r
+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>\r
+                <parameter name="trustStorePassword" value="adminadmin"/>\r
+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
+                <parameter name="keyStorePassword" value="adminadmin"/>\r
+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="Error executing Create vpn rest api" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='success'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+            </execute>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\r
+            </set>\r
+            <set>\r
+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />\r
+            </set>\r
+            <set>\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
+            </set>\r
+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \r
+      key='wan-port-config.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >\r
+                <parameter name="id" value="`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`" />\r
+                <parameter name='operational-status' value='PendingDelete' />\r
+                <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
+                <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
+            </update>\r
+            <return status='success'>\r
+                <parameter name="ack-final-indicator" value="Y" />\r
+                <parameter name="error-code" value="200" />\r
+                <parameter name="error-message" value="`$error-message`" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml
new file mode 100644 (file)
index 0000000..e0f53a9
--- /dev/null
@@ -0,0 +1,89 @@
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    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}'>\r
+    <method rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync'>\r
+        <block atomic="true">\r
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\r
+                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>\r
+            </execute>\r
+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                <outcome value=''>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-request-input.vnf-input-parameters.name is a required input" />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$service-data.vnfs.vnf_length`'>\r
+                <outcome value=''>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block atomic="true">\r
+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">\r
+                                <outcome value='true'>\r
+                                    <set>\r
+                                        <parameter name='tmp.vidx' value='`$vidx`' />\r
+                                        <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\r
+                                    </set>\r
+                                </outcome>\r
+                            </switch>\r
+                        </for>\r
+                        <switch test="`$tmp.vidx`">\r
+                            <outcome value=''>\r
+                                <return status='failure'>\r
+                                    <parameter name='ack-final' value='Y'/>\r
+                                    <parameter name="error-code" value="500" />\r
+                                    <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />\r
+                                </return>\r
+                            </outcome>\r
+                        </switch>\r
+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
+                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
+                            <parameter name="field1" value="__TIMESTAMP__"/>\r
+                            <parameter name="field2" value="tmp.vidx1234555"/>\r
+                            <parameter name="field3" value='`$tmp.vidx`'/>\r
+                        </record>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\r
+                <outcome value='PendingDelete'>\r
+                    <block atomic="true"></block>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <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`" />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <set>\r
+                <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>\r
+            </set>\r
+            <set>\r
+                <parameter name="service-data.vnfs.vnf[$tmp.vidx]." value=""/>\r
+            </set>\r
+            <set>\r
+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
+                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
+ + $vnf-topology-operation-input.service-information.service-instance-id\r
+ + '/service-data/service-topology/'` " />\r
+            </set>\r
+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='wan-port-config' \r
+        key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id'></delete>\r
+            <return status='success'>\r
+                <parameter name="ack-final-indicator" value="Y" />\r
+                <parameter name="error-code" value="200" />\r
+                <parameter name="error-message" value="`$error-message`" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>\r
diff --git a/platform-logic/restapi-templates/src/main/json/sdwan-device-port-del.json b/platform-logic/restapi-templates/src/main/json/sdwan-device-port-del.json
new file mode 100644 (file)
index 0000000..243af57
--- /dev/null
@@ -0,0 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - CCSDK
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+    "ports": [
+        {
+            "id": ${prop.wan.devicePortId},            
+        }
+    ]
+}
index 61debbd..b60a271 100644 (file)
 {
     "ports": [
         {
-            "portType": ${prop.portType},
-            "portNumber": ${prop.portNumber},
-            "deviceId": ${prop.deviceId},
-            "portSwitch": ${prop.portSwitch},
+            "portType": ${prop.wan.portType},
+            "portNumber": ${prop.wan.portNumber},
+            "deviceId": ${prop.wan.deviceId},
+            "portSwitch": "null",
             "linkInfo": {
                  "linkType": "Ethernet",
                  "cellular": "null",
@@ -35,4 +35,4 @@
             }
         }
     ]
-}
\ No newline at end of file
+}
diff --git a/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-del.json b/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-del.json
new file mode 100644 (file)
index 0000000..5459625
--- /dev/null
@@ -0,0 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - CCSDK
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+    "tnps": [
+        {
+            "id": ${prop.wan.wanPortId},            
+        }
+    ]
+}
index 2e43761..6dfb997 100644 (file)
 {
     "tnps": [
         {
-            "name": ${prop.name},
-            "siteId": ${prop.siteId},
-            "deviceId": ${prop.deviceId},
-            "portId": ${prop.wanId},
+            "name": ${prop.wan.name},
+            "siteId": ${prop.wan.siteId},
+            "deviceId": ${prop.wan.deviceId},
+            "portId": ${prop.wan.devicePortId},
             "inSubInterfaces": "false",
-            "vlanId": ${prop.vlanId},
+            "vlanId": ${prop.wan.vlanId},
             "ipConnection": {
                 "ipv4": {
-                    "publicIP": ${prop.ipAddress},
+                    "publicIP": ${prop.wan.ip-address},
                     "accessType": "IPOE",
                     "ipMode": "Static",
-                    "customerAddress": ${prop.ipAddress},
-                    "prefixLength": ${prop.prefixLength},
-                    "providerAddress": ${prop.providerAddress},
+                    "customerAddress": ${prop.wan.ip-address},
+                    "prefixLength": ${prop.wan.prefixLength},
+                    "providerAddress": ${prop.wan.providerIpAddress},
                     "peerIp": "null",
                     "userName": "null",
                     "userKey": "null"
                 }
              },
              "transportNetworkInfo": {
-                 "transportNetworkId": ${prop.transportNetworkId},
+                 "transportNetworkId": ${prop.wan.transportNetworkId},
                  "workMode": "active"
              },
             "attributes": {
-                "inputBandwidth": ${prop.inputBandwidth},
-                "outputBandwidth": ${prop.outputBandwidth},
+                "inputBandwidth": ${prop.wan.inputBandwidth},
+                "outputBandwidth": ${prop.wan.outputBandwidth},
                 "mtu": 1500,
                 "TCPmss": 1200
             },
-            "description": ${description}
+            "description": ${prop.wan.description}
         }
     ]
-}
\ No newline at end of file
+}