[ { "id": "2464f2e7.0e2fce", "type": "block", "name": "block : atomic", "xml": "<block atomic=\"true\">\n", "atomic": "false", "comments": "", "outputs": 1, "x": 450.00390625, "y": 347.0000014305115, "z": "4e5f9446.b42e3c", "wires": [ [ "32c4b65c.2d59aa", "5509b148.13914", "aad7e68e.3b6ca8", "94574a55.b19c88", "7de1d3e.65c652c", "7b54ca79.4bc724", "e23c49d7.715338", "a50b2df2.ad39e", "e9af352a.620918", "bbeb53a3.c2576", "37a48c20.31bdf4", "c012bd48.a280b", "3e34e572.c1fb4a", "83fb72db.90602", "370a2393.20ff3c" ] ] }, { "id": "4af2ac42.490d34", "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": 292.00392150878906, "y": 130.99999284744263, "z": "4e5f9446.b42e3c", "wires": [ [ "5b6c766c.98d2a8" ] ] }, { "id": "5b6c766c.98d2a8", "type": "method", "name": "sdwan-vf-operation-vpn-create", "xml": "<method rpc='sdwan-vf-operation-vpn-create' mode='sync'>\n", "comments": "", "outputs": 1, "x": 291.00392150878906, "y": 230.99999284744263, "z": "4e5f9446.b42e3c", "wires": [ [ "2464f2e7.0e2fce" ] ] }, { "id": "4418c0ab.c80bf", "type": "dgstart", "name": "DGSTART", "outputs": 1, "x": 121.50392150878906, "y": 42.00000047683716, "z": "4e5f9446.b42e3c", "wires": [ [ "4af2ac42.490d34" ] ] }, { "id": "32c4b65c.2d59aa", "type": "for", "name": "for each vnf", "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n", "comments": "", "outputs": 1, "x": 750.3333282470703, "y": 238.4961256980896, "z": "4e5f9446.b42e3c", "wires": [ [ "3161e290.49fc4e" ] ] }, { "id": "3161e290.49fc4e", "type": "switchNode", "name": "switch this vnf-id == input vnf-id", "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\"> \n", "comments": "", "outputs": 1, "x": 1002.3334197998047, "y": 237.16278886795044, "z": "4e5f9446.b42e3c", "wires": [ [ "5b45671f.cd82a8" ] ] }, { "id": "e5b08bcc.460cf8", "type": "set", "name": "set vnf-index", "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n\n", "comments": "", "x": 1373.9999084472656, "y": 239.1627917289734, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "5b45671f.cd82a8", "type": "outcomeTrue", "name": "true", "xml": "<outcome value='true'>\n", "comments": "", "outputs": 1, "x": 1220.6667366027832, "y": 239.16277074813843, "z": "4e5f9446.b42e3c", "wires": [ [ "e5b08bcc.460cf8" ] ] }, { "id": "94574a55.b19c88", "type": "for", "name": "for loop idx - VF input parameters", "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n", "comments": "", "outputs": 1, "x": 824.2541122436523, "y": 460.6666588783264, "z": "4e5f9446.b42e3c", "wires": [ [ "213647dd.26e428" ] ] }, { "id": "213647dd.26e428", "type": "block", "name": "block", "xml": "<block>\n", "atomic": "false", "comments": "", "outputs": 1, "x": 1039.032455444336, "y": 458.22224283218384, "z": "4e5f9446.b42e3c", "wires": [ [ "501e761.bc5eb88", "76a61aa5.aca9e4" ] ] }, { "id": "501e761.bc5eb88", "type": "execute", "name": "execute split parameterName", "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n", "comments": "", "outputs": 1, "x": 1235.2886581420898, "y": 435.9703812599182, "z": "4e5f9446.b42e3c", "wires": [ [] ] }, { "id": "76a61aa5.aca9e4", "type": "set", "name": "set parameterName", "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n", "comments": "", "x": 1204.7330856323242, "y": 472.9704976081848, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "801b9de7.f8983", "type": "comment", "name": "Take the parameter names by removing prefix", "info": "", "comments": "", "x": 1208.2543144226074, "y": 395.333327293396, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "5509b148.13914", "type": "switchNode", "name": "switch vnf_length", "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n", "comments": "", "outputs": 1, "x": 764.7539215087891, "y": 193.99999475479126, "z": "4e5f9446.b42e3c", "wires": [ [ "1afa6ba0.b560d4" ] ] }, { "id": "1afa6ba0.b560d4", "type": "other", "name": "NULL", "xml": "<outcome value=''>\n", "comments": "", "outputs": 1, "x": 951.4206008911133, "y": 193.33329248428345, "z": "4e5f9446.b42e3c", "wires": [ [ "f6ded972.6369c8" ] ] }, { "id": "f6ded972.6369c8", "type": "returnFailure", "name": "return failure", "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n", "comments": "", "x": 1133.0872268676758, "y": 193.33329248428345, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "aad7e68e.3b6ca8", "type": "switchNode", "name": "switch vf-modules.vf-module_length", "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n", "comments": "", "outputs": 1, "x": 806.0039110183716, "y": 313.9999957084656, "z": "4e5f9446.b42e3c", "wires": [ [ "e139df7a.80637", "caf10502.734168" ] ] }, { "id": "e139df7a.80637", "type": "other", "name": "Null", "xml": "<outcome value=''>\n", "comments": "", "outputs": 1, "x": 1037.003921508789, "y": 289.9999928474426, "z": "4e5f9446.b42e3c", "wires": [ [ "b4a2933f.20169" ] ] }, { "id": "caf10502.734168", "type": "other", "name": "other", "xml": "<outcome value='Other'>\n", "comments": "", "outputs": 1, "x": 1037.003921508789, "y": 329.9999928474426, "z": "4e5f9446.b42e3c", "wires": [ [ "63770f1.c37c1f" ] ] }, { "id": "b4a2933f.20169", "type": "set", "name": "set vf-index", "xml": "<set>\n<parameter name='vf-index' value='0' />\n", "comments": "", "x": 1179.503921508789, "y": 289.9999928474426, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "63770f1.c37c1f", "type": "block", "name": "block", "xml": "<block>\n", "atomic": "false", "comments": "", "outputs": 1, "x": 1181.3609657287598, "y": 329.93650484085083, "z": "4e5f9446.b42e3c", "wires": [ [ "82e73ea.9f6d1c", "facab090.c3497" ] ] }, { "id": "facab090.c3497", "type": "set", "name": "set vf-index", "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n", "comments": "", "x": 1334.059440612793, "y": 299.55560353351757, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "82e73ea.9f6d1c", "type": "for", "name": "for each existing vf-index", "xml": "<for index='idx' start='0' end='`$vf-index`' >\n", "comments": "", "outputs": 1, "x": 1390.4879455566406, "y": 352.77773332595825, "z": "4e5f9446.b42e3c", "wires": [ [ "df7833b0.b66c4" ] ] }, { "id": "f1cb1fc.e0fb2e", "type": "comment", "name": "make sure this network doesn't exist already", "info": "", "comments": "", "x": 1614.1386756896973, "y": 311.0317907333374, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "df7833b0.b66c4", "type": "switchNode", "name": "switch vf-module-id found", "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n", "comments": "", "outputs": 1, "x": 1665.773666381836, "y": 352.3492360115051, "z": "4e5f9446.b42e3c", "wires": [ [ "f0bc8641.c01b88" ] ] }, { "id": "f0bc8641.c01b88", "type": "outcomeTrue", "name": "true", "xml": "<outcome value='true'>\n", "comments": "", "outputs": 1, "x": 1566.50386428833, "y": 410.92066717147827, "z": "4e5f9446.b42e3c", "wires": [ [ "ac9ea707.076ba8" ] ] }, { "id": "ac9ea707.076ba8", "type": "returnFailure", "name": "return failure", "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n", "comments": "", "x": 1714.2539672851562, "y": 410.7778592403047, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "a50b2df2.ad39e", "type": "set", "name": "copy input data to service data", "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.vpn-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n\n", "comments": "", "x": 819.8571014404297, "y": 763.4962468147278, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "e23c49d7.715338", "type": "execute", "name": "execute generate-vf-module-index", "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vpn-vf-index\"/>\n", "comments": "", "outputs": 1, "x": 831.190673828125, "y": 716.1629490852356, "z": "4e5f9446.b42e3c", "wires": [ [] ] }, { "id": "7b54ca79.4bc724", "type": "set", "name": "set new vf-module_length", "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />", "comments": "", "x": 803.1907348632812, "y": 667.1629490852356, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "7de1d3e.65c652c", "type": "set", "name": "set vf-module-request-input.", "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n", "comments": "", "x": 803.1902618408203, "y": 613.1542372703552, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "e9af352a.620918", "type": "set", "name": "set vf-module-level-oper-status", "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action' value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action' value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />", "comments": "", "x": 813.5040893554688, "y": 861.0000678896904, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "83fb72db.90602", "type": "save", "name": "save sdwan vpn resource in AAI", "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n key='sdwan-vpn.sdwan-vpn-id = $prop.vpn-vf-index' >\n<parameter name='sdwan-vpn-id' value='`$prop.vpn-vf-index`' />\n<parameter name='sdwan-vpn-name' value='`$prop.name`' />\n<parameter name='topology' value='`$prop.topology`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vf-module-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $prop.vpn-vf-index + '/vf-module-data/'` \" />\n", "comments": "", "outputs": 1, "x": 820.0039501190186, "y": 906.5000157356262, "z": "4e5f9446.b42e3c", "wires": [ [] ] }, { "id": "bbeb53a3.c2576", "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": 767.7264232635498, "y": 999.673906326294, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "37a48c20.31bdf4", "type": "for", "name": "for loop i - Network input parameters", "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n", "comments": "", "outputs": 1, "x": 831.2578277587891, "y": 549.5039067268372, "z": "4e5f9446.b42e3c", "wires": [ [ "4c79fd81.204e24" ] ] }, { "id": "4c79fd81.204e24", "type": "block", "name": "block", "xml": "<block>\n", "atomic": "false", "comments": "", "outputs": 1, "x": 1118.4807052612305, "y": 549.7262206077576, "z": "4e5f9446.b42e3c", "wires": [ [ "6ee57e2b.017f1", "6d15949f.a4f72c" ] ] }, { "id": "6ee57e2b.017f1", "type": "switchNode", "name": "switch name", "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n\n", "comments": "", "outputs": 1, "x": 1306.702548980713, "y": 532.0595247745514, "z": "4e5f9446.b42e3c", "wires": [ [ "3f65f879.eac058" ] ] }, { "id": "6d15949f.a4f72c", "type": "switchNode", "name": "switch topology", "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">", "comments": "", "outputs": 1, "x": 1317.5422096252441, "y": 572.0595228672028, "z": "4e5f9446.b42e3c", "wires": [ [ "a2b79be1.ed04c8" ] ] }, { "id": "3f65f879.eac058", "type": "outcomeTrue", "name": "true", "xml": "<outcome value='true'>\n", "comments": "", "outputs": 1, "x": 1493.702548980713, "y": 528.0595247745514, "z": "4e5f9446.b42e3c", "wires": [ [ "2305c57e.8cca7a" ] ] }, { "id": "a2b79be1.ed04c8", "type": "outcomeTrue", "name": "true", "xml": "<outcome value='true'>\n", "comments": "", "outputs": 1, "x": 1487.5422096252441, "y": 568.0595228672028, "z": "4e5f9446.b42e3c", "wires": [ [ "4726038d.e1157c" ] ] }, { "id": "2305c57e.8cca7a", "type": "set", "name": "set name", "xml": "<set>\n<parameter name='prop.name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n", "comments": "", "x": 1643.70267868042, "y": 526.6595313549042, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "4726038d.e1157c", "type": "set", "name": "set topology", "xml": "<set>\n<parameter name='prop.topology' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n", "comments": "", "x": 1674.8756504058838, "y": 566.5206797122955, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "c012bd48.a280b", "type": "call", "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters", "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n", "comments": "", "outputs": 1, "x": 932.5078277587891, "y": 139.00390672683716, "z": "4e5f9446.b42e3c", "wires": [ [] ] }, { "id": "3e34e572.c1fb4a", "type": "set", "name": "set vf-module-object-path", "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.vpn-vf-index`' />\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.vpn-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n", "comments": "", "x": 805.5039672851562, "y": 812.0312873721123, "z": "4e5f9446.b42e3c", "wires": [] }, { "id": "370a2393.20ff3c", "type": "save", "name": "save service relationship in AAI", "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.vpn-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vpn-vf-index`\" />\n\n", "comments": "", "outputs": 1, "x": 820.0040283203125, "y": 954.000156879425, "z": "4e5f9446.b42e3c", "wires": [ [] ] } ]