2     xmlns='http://www.onap.org/sdnc/svclogic'
\r 
   3     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 
   4     <method rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync'>
\r 
   5         <block atomic="true">
\r 
   6             <switch test='`$service-data.vnfs.vnf_length`'>
\r 
   8                     <return status='failure'>
\r 
   9                         <parameter name='ack-final' value='Y'/>
\r 
  10                         <parameter name="error-code" value="500" />
\r 
  11                         <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
\r 
  15                     <return status='failure'>
\r 
  16                         <parameter name='ack-final' value='Y'/>
\r 
  17                         <parameter name="error-code" value="500" />
\r 
  18                         <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
\r 
  21                 <outcome value='Other'>
\r 
  22                     <block atomic="true">
\r 
  23                         <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >
\r 
  25                                 <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">
\r 
  26                                     <outcome value='true'>
\r 
  27                                         <block atomic="true">
\r 
  29                                                 <parameter name='tmp.vidx' value='`$vidx`' />
\r 
  30                                                 <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />
\r 
  33                                                 <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />
\r 
  35                                             <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>
\r 
  36                                             <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
\r 
  37                                                 <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
\r 
  38                                                 <parameter name="field1" value="__TIMESTAMP__"/>
\r 
  39                                                 <parameter name="field2" value="....."/>
\r 
  40                                                 <parameter name="field3" value="prop.wan.deviceName"/>
\r 
  41                                                 <parameter name="field4" value='`$prop.wan.deviceName`'/>
\r 
  48                         <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >
\r 
  49                             <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">
\r 
  50                                 <outcome value='true'>
\r 
  52                                         <parameter name='tmp.siteVidx' value='`$vidx`' />
\r 
  53                                         <parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vidx].`' />
\r 
  57                             <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">
\r 
  58                                 <outcome value='true'>
\r 
  59                                     <block atomic="true">
\r 
  60                                         <for index="didx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">
\r 
  61                                             <block atomic="true">
\r 
  62                                                 <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'name'`">
\r 
  63                                                     <outcome value='true'>
\r 
  64                                                         <block atomic="true">
\r 
  65                                                             <switch test="`$prop.wan.deviceName == $service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`">
\r 
  66                                                                 <outcome value='true'>
\r 
  67                                                                     <block atomic="true">
\r 
  68                                                                         <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">
\r 
  69                                                                             <block atomic="true">
\r 
  70                                                                                 <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">
\r 
  71                                                                                     <outcome value='true'>
\r 
  73                                                                                             <parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />
\r 
  80                                                                             <parameter name='tmp.devicevidx' value='`$vidx`' />
\r 
  94                         <switch test="`$tmp.vidx`">
\r 
  96                                 <return status='failure'>
\r 
  97                                     <parameter name='ack-final' value='Y'/>
\r 
  98                                     <parameter name="error-code" value="500" />
\r 
  99                                     <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
\r 
 103                         <switch test="`$tmp.siteVidx`">
\r 
 105                                 <return status='failure'>
\r 
 106                                     <parameter name='ack-final' value='Y'/>
\r 
 107                                     <parameter name="error-code" value="500" />
\r 
 108                                     <parameter name="error-message" value="ActivateSiteInstance not found in service-data" />
\r 
 112                         <switch test="`$tmp.devicevidx`">
\r 
 114                                 <return status='failure'>
\r 
 115                                     <parameter name='ack-final' value='Y'/>
\r 
 116                                     <parameter name="error-code" value="500" />
\r 
 117                                     <parameter name="error-message" value="ActivateSDWANDeviceInstance not found in service-data" />
\r 
 124             <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
\r 
 125                 <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>
\r 
 126                 <parameter name="field1" value="__TIMESTAMP__"/>
\r 
 127                 <parameter name="field2" value="sdwan-wanport-vnf-topology-operation-activate"/>
\r 
 128                 <parameter name="field3" value="SDWAN-Activate"/>
\r 
 130             <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
\r 
 131                 <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
\r 
 132                 <parameter name='contextPrefix' value='prop' />
\r 
 134             <for index="sidx" start="0" end="`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param_length`">
\r 
 135                 <block atomic="true">
\r 
 136                     <switch test="`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`">
\r 
 137                         <outcome value='true'>
\r 
 139                                 <parameter name='prop.wan.siteId' value='`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />
\r 
 145             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
\r 
 146                 resource="esr-thirdparty-sdnc" 
\r 
 147                 key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 
\r 
 149         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
\r 
 150                 <outcome value='success'>
\r 
 152                         <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
\r 
 153                         <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
\r 
 154                         <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
\r 
 157                 <outcome value='not-found'>
\r 
 158                     <return status='failure'>
\r 
 159                         <parameter name='ack-final' value='Y'/>
\r 
 160                         <parameter name="error-code" value="500" />
\r 
 161                         <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
\r 
 164                 <outcome value='Other'>
\r 
 165                     <return status='failure'>
\r 
 166                         <parameter name='ack-final' value='Y'/>
\r 
 167                         <parameter name="error-code" value="500" />
\r 
 168                         <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
\r 
 172             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r 
 173                 <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
\r 
 174                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
\r 
 175                 <parameter name="format" value="json"/>
\r 
 176                 <parameter name="httpMethod" value="post"/>
\r 
 177                 <parameter name="responsePrefix" value="token-result"/>
\r 
 178                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
\r 
 179                 <parameter name="trustStorePassword" value="adminadmin"/>
\r 
 180                 <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
\r 
 181                 <parameter name="keyStorePassword" value="adminadmin"/>
\r 
 182                 <outcome value='success'>
\r 
 184                         <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
\r 
 187                 <outcome value='failure'>
\r 
 188                     <return status='failure'>
\r 
 189                         <parameter name='ack-final' value='Y'/>
\r 
 190                         <parameter name="error-code" value="500" />
\r 
 191                         <parameter name="error-message" value="Error executing get token rest api" />
\r 
 195             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r 
 196                 <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port.json'`" />
\r 
 197                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />
\r 
 198                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
\r 
 199                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
\r 
 200                 <parameter name="format" value="json"/>
\r 
 201                 <parameter name="httpMethod" value="put"/>
\r 
 202                 <parameter name="responsePrefix" value="portResp"/>
\r 
 203                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
\r 
 204                 <parameter name="trustStorePassword" value="adminadmin"/>
\r 
 205                 <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
\r 
 206                 <parameter name="keyStorePassword" value="adminadmin"/>
\r 
 207                 <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
\r 
 208                 <outcome value='failure'>
\r 
 209                     <return status='failure'>
\r 
 210                         <parameter name='ack-final' value='Y'/>
\r 
 211                         <parameter name="error-code" value="500" />
\r 
 212                         <parameter name="error-message" value="Error executing Create device port rest api" />
\r 
 215                 <outcome value='success'>
\r 
 216                     <block atomic="true"></block>
\r 
 220                 <parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />
\r 
 222             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r 
 223                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />
\r 
 224                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
\r 
 225                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
\r 
 226                 <parameter name="format" value="json"/>
\r 
 227                 <parameter name="httpMethod" value="get"/>
\r 
 228                 <parameter name="responsePrefix" value="transportNetworksResp"/>
\r 
 229                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
\r 
 230                 <parameter name="trustStorePassword" value="adminadmin"/>
\r 
 231                 <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
\r 
 232                 <parameter name="keyStorePassword" value="adminadmin"/>
\r 
 233                 <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
\r 
 234                 <outcome value='failure'>
\r 
 235                     <return status='failure'>
\r 
 236                         <parameter name='ack-final' value='Y'/>
\r 
 237                         <parameter name="error-code" value="500" />
\r 
 238                         <parameter name="error-message" value="Error executing Get transport network info rest api" />
\r 
 241                 <outcome value='success'>
\r 
 242                     <block atomic="true"></block>
\r 
 245             <for index="tidx" start="0" end="`$transportNetworksResp.data.transportNetworks_length`">
\r 
 247                     <switch test="`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`">
\r 
 248                         <outcome value='true'>
\r 
 250                                 <parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />
\r 
 256             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
\r 
 257                 <parameter name="original_string" value='`$prop.wan.ipAddress`'/>
\r 
 258                 <parameter name="regex" value="/"/>
\r 
 259                 <parameter name="ctx_memory_result_key" value="ipandMask"/>
\r 
 260                 <outcome value='success'>
\r 
 262                         <parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />
\r 
 263                         <parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />
\r 
 266                 <outcome value='failure'>
\r 
 267                     <return status='failure'>
\r 
 268                         <parameter name='error-code' value='' />
\r 
 269                         <parameter name='error-message' value="An error occured while splitting sna1_route" />
\r 
 273             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r 
 274                 <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port.json'`" />
\r 
 275                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`" />
\r 
 276                 <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
\r 
 277                 <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
\r 
 278                 <parameter name="format" value="json"/>
\r 
 279                 <parameter name="httpMethod" value="post"/>
\r 
 280                 <parameter name="responsePrefix" value="wanPortResp"/>
\r 
 281                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
\r 
 282                 <parameter name="trustStorePassword" value="adminadmin"/>
\r 
 283                 <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
\r 
 284                 <parameter name="keyStorePassword" value="adminadmin"/>
\r 
 285                 <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
\r 
 286                 <outcome value='failure'>
\r 
 287                     <return status='failure'>
\r 
 288                         <parameter name='ack-final' value='Y'/>
\r 
 289                         <parameter name="error-code" value="500" />
\r 
 290                         <parameter name="error-message" value="Error executing Create wan port rest api" />
\r 
 293                 <outcome value='success'>
\r 
 294                     <block atomic="true"></block>
\r 
 298                 <parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />
\r 
 301                 <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 
 302                 <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 
 303                 <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 + 1`' />
\r 
 306                 <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='wanPortId' />
\r 
 307                 <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.wanPortId`' />
\r 
 308                 <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 + 1`' />
\r 
 311                 <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->
\r 
 312                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />
\r 
 313                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />
\r 
 314                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />
\r 
 317                 <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
\r 
 318                 <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 
 321                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />
\r 
 322                 <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 
 323                 <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 
 325             <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' 
\r 
 326       key='wan-port-config.id = $vnf-topology-operation-input.vnf-information.vnf-id' >
\r 
 327                 <parameter name="id" value="`$vnf-topology-operation-input.vnf-information.vnf-id`" />
\r 
 328                 <parameter name='operational-status' value='Active' />
\r 
 329                 <parameter name='device-port-id' value='`$prop.wan.devicePortId`' />
\r 
 330                 <parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />
\r 
 331                 <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />
\r 
 332                 <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />
\r 
 333                 <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />
\r 
 335             <return status='success'>
\r 
 336                 <parameter name="ack-final-indicator" value="Y" />
\r 
 337                 <parameter name="error-code" value="200" />
\r 
 338                 <parameter name="error-message" value="`$error-message`" />
\r