<?xml version="1.0" encoding="UTF-8"?> <service-logic xmlns="http://www.onap.org/sdnc/svclogic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.onap.org/sdnc/svclogic ./svclogic.xsd" module="GENERIC-RESOURCE-API" version="${project.version}"> <method rpc="dci-connects-network-topology-operation-activate" mode="sync"> <block atomic="true"> <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" /> <block atomic="true"> <block atomic="true"> <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"> <block> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_description'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.description" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`"> <outcome value="true"> <block atomic="true"> <set> <parameter name="tmp.dci-connects.local_networks.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split"> <parameter name="original_string" value="`$tmp.dci-connects.local_networks.original`" /> <parameter name="regex" value="," /> <parameter name="ctx_memory_result_key" value="tmp.dci-connects.local_networks" /> <outcome value="success"> <for index="idx" start="0" end="`$tmp.dci-connects.local_networks_length`"> <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="l3-network" key="l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND depth = '0'" pfx="tmp.aai.l3-network" local-only="false"> <outcome value="success"> <set> <parameter name="prop.dci-connects.local_networks[$idx]" value="`$tmp.aai.l3-network.network-id`" /> </set> </outcome> <outcome value="not-found"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> <outcome value="Other"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> </get-resource> </for> </outcome> <outcome value="failure"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="An error occured while splitting sna1_route" /> </return> </outcome> </execute> </block> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.router_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`"> <outcome value="true"> <block atomic="true"> <set> <parameter name="tmp.dci-connects.evpn_irts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split"> <parameter name="original_string" value="`$tmp.dci-connects.evpn_irts.original`" /> <parameter name="regex" value="," /> <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_irts" /> <outcome value="success"> <for index="idx" start="0" end="`$tmp.dci-connects.evpn_irts_length`"> <set> <parameter name="prop.dci-connects.evpn_irts[$idx]" value="`$tmp.dci-connects.evpn_irts[$idx]`" /> </set> </for> </outcome> <outcome value="failure"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="An error occured while splitting sna1_route" /> </return> </outcome> </execute> </block> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`"> <outcome value="true"> <block atomic="true"> <set> <parameter name="tmp.dci-connects.evpn_erts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split"> <parameter name="original_string" value="`$tmp.dci-connects.evpn_erts.original`" /> <parameter name="regex" value="," /> <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_erts" /> <outcome value="success"> <for index="idx" start="0" end="`$tmp.dci-connects.evpn_erts_length`"> <set> <parameter name="prop.dci-connects.evpn_erts[$idx]" value="`$tmp.dci-connects.evpn_erts[$idx]`" /> </set> </for> </outcome> <outcome value="failure"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="An error occured while splitting sna1_route" /> </return> </outcome> </execute> </block> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.tunnelType" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> </block> </for> <block atomic="true"> <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false"> <outcome value="success"> <set> <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" /> <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" /> <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" /> <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" /> </set> </outcome> <outcome value="not-found"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> <outcome value="Other"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> </get-resource> <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties"> <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" /> <parameter name="contextPrefix" value="prop" /> </execute> <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder"> <parameter name="logger" value="message-log" /> <parameter name="field1" value="__TIMESTAMP__" /> <parameter name="field2" value="dci-network-topology-operation-activate" /> <parameter name="field3" value="dci-connects.name" /> <parameter name="field4" value="`$prop.dci-connects.name`" /> <parameter name="field5" value="dci-connects.id" /> <parameter name="field6" value="`$prop.dci-connects.id`" /> <parameter name="field7" value="dci-connects.tunnelType" /> <parameter name="field8" value="`$prop.dci-connects.tunnelType`" /> <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" /> <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" /> </record> <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`"> <outcome value="SPTN"> <switch test="`$prop.dci-connects.tunnelType`"> <outcome value="L3-DCI"> <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`" /> <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`" /> <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" /> <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" /> <parameter name="format" value="json" /> <parameter name="httpMethod" value="post" /> <parameter name="responsePrefix" value="restapi-result" /> </execute> </outcome> <outcome value="L2-DCI"> <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`" /> <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`" /> <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" /> <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" /> <parameter name="format" value="json" /> <parameter name="httpMethod" value="post" /> <parameter name="responsePrefix" value="restapi-result" /> </execute> </outcome> </switch> </outcome> </switch> </block> </block> <block atomic="true"> <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"> <block> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_description'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.description" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> <outcome value="false"> <set> <parameter name="prop.dci-connects.description" value="" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`"> <outcome value="true"> <block atomic="true"> <set> <parameter name="tmp.dci-connects.local_networks.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split"> <parameter name="original_string" value="`$tmp.dci-connects.local_networks.original`" /> <parameter name="regex" value="," /> <parameter name="ctx_memory_result_key" value="tmp.dci-connects.local_networks" /> <outcome value="success"> <for index="idx" start="0" end="`$tmp.dci-connects.local_networks_length`"> <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="l3-network" key="l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND depth = '0'" pfx="tmp.aai.l3-network" local-only="false"> <outcome value="success"> <set> <parameter name="prop.dci-connects.local_networks[$idx]" value="`$tmp.aai.l3-network.network-id`" /> </set> </outcome> <outcome value="not-found"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> <outcome value="Other"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> </get-resource> </for> </outcome> <outcome value="failure"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="An error occured while splitting sna1_route" /> </return> </outcome> </execute> </block> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.router_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`"> <outcome value="true"> <block atomic="true"> <set> <parameter name="tmp.dci-connects.evpn_irts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split"> <parameter name="original_string" value="`$tmp.dci-connects.evpn_irts.original`" /> <parameter name="regex" value="," /> <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_irts" /> <outcome value="success"> <for index="idx" start="0" end="`$tmp.dci-connects.evpn_irts_length`"> <set> <parameter name="prop.dci-connects.evpn_irts[$idx]" value="`$tmp.dci-connects.evpn_irts[$idx]`" /> </set> </for> </outcome> <outcome value="failure"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="An error occured while splitting sna1_route" /> </return> </outcome> </execute> </block> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_exportRT1'`"> <outcome value="true"> <block atomic="true"> <set> <parameter name="tmp.dci-connects.evpn_erts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split"> <parameter name="original_string" value="`$tmp.dci-connects.evpn_erts.original`" /> <parameter name="regex" value="," /> <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_erts" /> <outcome value="success"> <for index="idx" start="0" end="`$tmp.dci-connects.evpn_erts_length`"> <set> <parameter name="prop.dci-connects.evpn_erts[$idx]" value="`$tmp.dci-connects.evpn_erts[$idx]`" /> </set> </for> </outcome> <outcome value="failure"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="An error occured while splitting sna1_route" /> </return> </outcome> </execute> </block> </outcome> </switch> <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`"> <outcome value="true"> <set> <parameter name="prop.dci-connects.vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" /> </set> </outcome> </switch> </block> </for> <block atomic="true"> <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id AND depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false"> <outcome value="success"> <set> <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" /> <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" /> <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" /> <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" /> </set> </outcome> <outcome value="not-found"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> <outcome value="Other"> <return status="failure"> <parameter name="error-code" value="" /> <parameter name="error-message" value="" /> </return> </outcome> </get-resource> <execute plugin="org.onap.ccsdk.sli.plugins.prop.PropertiesNode" method="readProperties"> <parameter name="fileName" value="%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties" /> <parameter name="contextPrefix" value="prop" /> </execute> <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder"> <parameter name="logger" value="message-log" /> <parameter name="field1" value="__TIMESTAMP__" /> <parameter name="field2" value="dci-network-topology-operation-activate" /> <parameter name="field3" value="dci-connects.name" /> <parameter name="field4" value="`$prop.dci-connects.name`" /> <parameter name="field5" value="dci-connects.id" /> <parameter name="field6" value="`$prop.dci-connects.id`" /> <parameter name="field7" value="dci-connects.tunnelType" /> <parameter name="field8" value="`$prop.dci-connects.tunnelType`" /> <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" /> <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" /> </record> <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`"> <outcome value="SPTN"> <switch test="`$prop.dci-connects.tunnelType`"> <outcome value="L3-DCI"> <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`" /> <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`" /> <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" /> <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" /> <parameter name="format" value="json" /> <parameter name="httpMethod" value="post" /> <parameter name="responsePrefix" value="restapi-result" /> </execute> </outcome> <outcome value="L2-DCI"> <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`" /> <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`" /> <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" /> <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" /> <parameter name="format" value="json" /> <parameter name="httpMethod" value="post" /> <parameter name="responsePrefix" value="restapi-result" /> </execute> </outcome> </switch> </outcome> </switch> </block> </block> <block atomic="true"> <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID"> <parameter name="ctx-destination" value="prop.dci.network-id" /> </execute> <switch test="`$service-data.networks.network_length`"> <outcome value=""> <set> <parameter name="nidx" value="0" /> </set> </outcome> <outcome value="Other"> <set> <parameter name="nidx" value="`$service-data.networks.network_length`" /> </set> </outcome> </switch> <set> <parameter name="service-data.networks.network[$nidx].network-id" value="`$prop.dci.network-id`" /> <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`" /> <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`" /> <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`" /> <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`" /> <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`" /> <parameter name="service-data.networks.network_length" value="`$nidx+1`" /> <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status" value="Created" /> <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action" value="`$network-topology-operation-input.sdnc-request-header.svc-action`" /> <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action" value="`$network-topology-operation-input.request-information.request-action`" /> </set> <set> <parameter name="networkId" value="`$prop.dci.network-id`" /> <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/networks/network/' + $prop.dci.network-id + '/network-data/'` " /> </set> </block> </block> <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $prop.dci.network-id"> <parameter name="configuration-id" value="`$prop.dci.network-id`" /> <parameter name="configuration-type" value="overlay" /> <parameter name="configuration-sub-type" value="VPN-DCI" /> <parameter name="orchestration-status" value="Created" /> <parameter name="operational-status" value="Created" /> <parameter name="model-customization-id" value="`$prop.dci.network-id`" /> <parameter name="configuration-selflink" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $network-topology-operation-input.service-information.service-instance-id + '/service-data/networks/network/' + $prop.dci.network-id + '/network-data/'` " /> </save> <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" key="service-instance.service-instance-id = $service-data.service-information.service-instance-id AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type" force="true" pfx="tmp.AnAI-data"> <parameter name="relationship-list.relationship[0].related-to" value="configuration" /> <parameter name="relationship-list.relationship[0].related-link" value="`'/network/configurations/configuration/' + $prop.dci.network-id`" /> <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="configuration.configuration-id" /> <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.dci.network-id`" /> </save> <return status="success"> <parameter name="ack-final-indicator" value="Y" /> <parameter name="error-code" value="200" /> <parameter name="error-message" value="`$error-message`" /> </return> </block> </method> </service-logic>