1 <?xml version="1.0" encoding="UTF-8"?>
\r 
   2 <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}">
\r 
   3     <method rpc="network-topology-operation-create" mode="sync">
\r 
   4         <block atomic="true">
\r 
   5             <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />
\r 
   6             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id AND         depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false">
\r 
   7                 <outcome value="success">
\r 
   8                     <block atomic="true" />
\r 
  10                 <outcome value="not-found">
\r 
  11                     <return status="failure">
\r 
  12                         <parameter name="ack-final" value="Y" />
\r 
  13                         <parameter name="error-code" value="500" />
\r 
  14                         <parameter name="error-message" value="Network model is_bound_to_vpn=true but no vpn_binding is present" />
\r 
  17                 <outcome value="Other">
\r 
  18                     <return status="failure">
\r 
  19                         <parameter name="ack-final" value="Y" />
\r 
  20                         <parameter name="error-code" value="500" />
\r 
  21                         <parameter name="error-message" value="Unexpected error retrieving vpn binding" />
\r 
  26                 <parameter name="prop.sdncRestApi.thirdpartySdnc.url" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list[0].esr-system-info.serviceUrl`" />
\r 
  27                 <parameter name="prop.sdncRestApi.templateDir" value="/opt/onap/sdnc/data" />
\r 
  28                 <parameter name="prop.sdncRestApi.thirdpartySdnc.user" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list[0].esr-system-info.user-name`" />
\r 
  29                 <parameter name="prop.sdncRestApi.thirdpartySdnc.password" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list[0].esr-system-info.password`" />
\r 
  31             <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
\r 
  33                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">
\r 
  34                         <outcome value="true">
\r 
  36                                 <parameter name="prop.l3vpn.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  40                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'service-type'`">
\r 
  41                         <outcome value="true">
\r 
  43                                 <parameter name="prop.l3vpn.service-type" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  47                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">
\r 
  48                         <outcome value="true">
\r 
  50                                 <parameter name="prop.l3vpn.topology" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  54                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'technology'`">
\r 
  55                         <outcome value="true">
\r 
  57                                 <parameter name="prop.l3vpn.technology" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  61                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`">
\r 
  62                         <outcome value="true">
\r 
  64                                 <parameter name="prop.l3vpn.site1_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  68                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_name'`">
\r 
  69                         <outcome value="true">
\r 
  71                                 <parameter name="prop.l3vpn.site2_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  75                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna1_name'`">
\r 
  76                         <outcome value="true">
\r 
  78                                 <parameter name="prop.l3vpn.sna1_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  82                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna2_name'`">
\r 
  83                         <outcome value="true">
\r 
  85                                 <parameter name="prop.l3vpn.sna2_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  89                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`">
\r 
  90                         <outcome value="true">
\r 
  92                                 <parameter name="prop.l3vpn.pe1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
  96                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe2_id'`">
\r 
  97                         <outcome value="true">
\r 
  99                                 <parameter name="prop.l3vpn.pe2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 103                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_id'`">
\r 
 104                         <outcome value="true">
\r 
 106                                 <parameter name="prop.l3vpn.ac1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 110                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_id'`">
\r 
 111                         <outcome value="true">
\r 
 113                                 <parameter name="prop.l3vpn.ac2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 117                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_ip'`">
\r 
 118                         <outcome value="true">
\r 
 120                                 <parameter name="prop.l3vpn.ac1_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 124                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_ip'`">
\r 
 125                         <outcome value="true">
\r 
 127                                 <parameter name="prop.l3vpn.ac2_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 131                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_peer_ip'`">
\r 
 132                         <outcome value="true">
\r 
 134                                 <parameter name="prop.l3vpn.ac1_peer_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 138                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_peer_ip'`">
\r 
 139                         <outcome value="true">
\r 
 141                                 <parameter name="prop.l3vpn.ac2_peer_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 145                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_svlan'`">
\r 
 146                         <outcome value="true">
\r 
 148                                 <parameter name="prop.l3vpn.ac1_svlan" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 152                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_svlan'`">
\r 
 153                         <outcome value="true">
\r 
 155                                 <parameter name="prop.l3vpn.ac2_svlan" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 159                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol'`">
\r 
 160                         <outcome value="true">
\r 
 162                                 <parameter name="prop.l3vpn.ac1_protocol" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 166                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol'`">
\r 
 167                         <outcome value="true">
\r 
 169                                 <parameter name="prop.l3vpn.ac2_protocol" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 173                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_route'`">
\r 
 174                         <outcome value="true">
\r 
 175                             <block atomic="true">
\r 
 177                                     <parameter name="prop.l3vpn.ac1_route" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 179                                 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
\r 
 180                                     <parameter name="original_string" value="`$prop.l3vpn.ac1-route`" />
\r 
 181                                     <parameter name="regex" value=" ## " />
\r 
 182                                     <parameter name="ctx_memory_result_key" value="route1" />
\r 
 183                                     <outcome value="success">
\r 
 185                                             <parameter name="prop.l3vpn.sna1-route.ip-prefix" value="`$route1[0]`" />
\r 
 186                                             <parameter name="prop.l3vpn.sna1-route.next-hop" value="`$route1[1]`" />
\r 
 189                                     <outcome value="failure">
\r 
 190                                         <return status="failure">
\r 
 191                                             <parameter name="error-code" value="" />
\r 
 192                                             <parameter name="error-message" value="An error occured while splitting sna1_route" />
\r 
 199                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_route'`">
\r 
 200                         <outcome value="true">
\r 
 201                             <block atomic="true">
\r 
 203                                     <parameter name="prop.l3vpn.ac2_route" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 205                                 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">
\r 
 206                                     <parameter name="original_string" value="`$prop.l3vpn.ac2-route`" />
\r 
 207                                     <parameter name="regex" value=" ## " />
\r 
 208                                     <parameter name="ctx_memory_result_key" value="route2" />
\r 
 209                                     <outcome value="success">
\r 
 211                                             <parameter name="prop.l3vpn.sna2-route.ip-prefix" value="`$route2[0]`" />
\r 
 212                                             <parameter name="prop.l3vpn.sna2-route.next-hop" value="`$route2[1]`" />
\r 
 215                                     <outcome value="failure">
\r 
 216                                         <return status="failure">
\r 
 217                                             <parameter name="error-code" value="" />
\r 
 218                                             <parameter name="error-message" value="An error occured while splitting sna1_route" />
\r 
 225                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol_bgp_as'`">
\r 
 226                         <outcome value="true">
\r 
 228                                 <parameter name="prop.l3vpn.ac1_protocol_bgp_as" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 229                                 <parameter name="prop.l3vpn.peer1-ip" value="`$prop.l3vpn.ac1_ip`" />
\r 
 233                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol_bgp_as'`">
\r 
 234                         <outcome value="true">
\r 
 236                                 <parameter name="prop.l3vpn.ac2_protocol_bgp_as" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 237                                 <parameter name="prop.l3vpn.peer2-ip" value="`$prop.l3vpn.ac2_ip`" />
\r 
 241                     <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'af_type'`">
\r 
 242                         <outcome value="true">
\r 
 244                                 <parameter name="prop.l3vpn.af_type" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />
\r 
 250             <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
\r 
 251                 <parameter name="ctx-destination" value="prop.l3vpn.vpn-policy1-id" />
\r 
 252                 <outcome value="failure">
\r 
 253                     <return status="failure">
\r 
 254                         <parameter name="error-code" value="" />
\r 
 255                         <parameter name="error-message" value="An error occured while generation vpn policy ID" />
\r 
 259             <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
\r 
 260                 <parameter name="ctx-destination" value="prop.l3vpn.vpn-policy2-id" />
\r 
 261                 <outcome value="failure">
\r 
 262                     <return status="failure">
\r 
 263                         <parameter name="error-code" value="" />
\r 
 264                         <parameter name="error-message" value="An error occured while generation vpn policy ID" />
\r 
 269                 <parameter name="prop.l3vpn.entry1-id" value="1" />
\r 
 270                 <parameter name="prop.l3vpn.entry2-id" value="1" />
\r 
 272             <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
\r 
 273                 <parameter name="ctx-destination" value="prop.l3vpn.vrf1-id" />
\r 
 274                 <outcome value="failure">
\r 
 275                     <return status="failure">
\r 
 276                         <parameter name="error-code" value="" />
\r 
 277                         <parameter name="error-message" value="An error occured while generation vpn policy ID" />
\r 
 281             <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
\r 
 282                 <parameter name="ctx-destination" value="prop.l3vpn.vrf2-id" />
\r 
 283                 <outcome value="failure">
\r 
 284                     <return status="failure">
\r 
 285                         <parameter name="error-code" value="" />
\r 
 286                         <parameter name="error-message" value="An error occured while generation vpn policy ID" />
\r 
 290             <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
\r 
 291                 <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log" />
\r 
 292                 <parameter name="Time" value="__TIMESTAMP__" />
\r 
 293                 <parameter name="Method" value="network-topology-operation-create" />
\r 
 294                 <parameter name="SubMethod" value="L3VPN-Config" />
\r 
 295                 <parameter name="l3vpn_name" value="`$prop.l3vpn.name`" />
\r 
 296                 <parameter name="topology" value="`$prop.l3vpn.topology`" />
\r 
 297                 <parameter name="site1_name" value="`$prop.l3vpn.site1_name`" />
\r 
 298                 <parameter name="vpn-policy1-id" value="`$prop.l3vpn.vpn-policy1-id}`" />
\r 
 299                 <parameter name="l3vpn.entry1-id" value="`$prop.l3vpn.entry1-id`" />
\r 
 300                 <parameter name="sna1_name" value="`$prop.l3vpn.sna1_name`" />
\r 
 301                 <parameter name="pe1_id" value="`$prop.l3vpn.pe1_id`" />
\r 
 302                 <parameter name="ac1_id" value="`$prop.l3vpn.ac1_id`" />
\r 
 303                 <parameter name="sna1_svlan" value="`$prop.l3vpn.sna1_svlan`" />
\r 
 304                 <parameter name="ac1-peer-ip" value="`$prop.l3vpn.ac1-peer-ip`" />
\r 
 305                 <parameter name="ac1-ip" value="`$prop.l3vpn.ac1-ip`" />
\r 
 306                 <parameter name="ac1_protocol" value="`$prop.l3vpn.ac1_protocol`" />
\r 
 307                 <parameter name="sna1-route-ip-prefix" value="`$prop.l3vpn.sna1-route-ip-prefix`" />
\r 
 308                 <parameter name="sna1-route-next-hop" value="`$prop.l3vpn.sna1-route-next-hop`" />
\r 
 309                 <parameter name="peer2-ip" value="`$prop.l3vpn.peer2-ip`" />
\r 
 310                 <parameter name="ac2_protocol_bgp_as" value="`$prop.l3vpn.ac2_protocol_bgp_as`" />
\r 
 311                 <parameter name="vrf1-id" value="`$prop.l3vpn.vrf1-id`" />
\r 
 312                 <parameter name="site2_name" value="`$prop.l3vpn.site2_name`" />
\r 
 313                 <parameter name="vpn-policy2-id" value="`$prop.l3vpn.vpn-policy2-id}`" />
\r 
 314                 <parameter name="l3vpn.entry2-id" value="`$prop.l3vpn.entry2-id`" />
\r 
 315                 <parameter name="sna2_name" value="`$prop.l3vpn.sna2_name`" />
\r 
 316                 <parameter name="pe2_id" value="`$prop.l3vpn.pe2_id`" />
\r 
 317                 <parameter name="ac2_id" value="`$prop.l3vpn.ac2_id`" />
\r 
 318                 <parameter name="sna2_svlan" value="`$prop.l3vpn.sna2_svlan`" />
\r 
 319                 <parameter name="ac2-peer-ip" value="`$prop.l3vpn.ac2-peer-ip`" />
\r 
 320                 <parameter name="ac2-ip" value="`$prop.l3vpn.ac2-ip`" />
\r 
 321                 <parameter name="ac2_protocol" value="`$prop.l3vpn.ac2_protocol`" />
\r 
 322                 <parameter name="sna2-route-ip-prefix" value="`$prop.l3vpn.sna2-route-ip-prefix`" />
\r 
 323                 <parameter name="sna2-route-next-hop" value="`$prop.l3vpn.sna2-route-next-hop`" />
\r 
 324                 <parameter name="peer2-ip" value="`$prop.l3vpn.peer2-ip`" />
\r 
 325                 <parameter name="ac2_protocol_bgp_as" value="`$prop.l3vpn.ac2_protocol_bgp_as`" />
\r 
 326                 <parameter name="vrf2-id" value="`$prop.l3vpn.vrf2-id`" />
\r 
 327                 <parameter name="af_type" value="`$prop.l3vpn.af_type`" />
\r 
 329             <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'service-type'`">
\r 
 330                 <outcome value="l3vpn-ipwan">
\r 
 331                     <block atomic="true">
\r 
 332                         <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
\r 
 333                             <parameter name="templateFileName" value="$prop.sdncRestApi.tempDir +'/l3smvpntemplate.json'" />
\r 
 334                             <parameter name="restapiUrl" value="$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services'" />
\r 
 335                             <parameter name="restapiUser" value="$prop.sdncRestApi.thirdpartySdnc.user" />
\r 
 336                             <parameter name="restapiPassword" value="$prop.sdncRestApi.thirdpartySdnc.password" />
\r 
 337                             <parameter name="format" value="json" />
\r 
 338                             <parameter name="httpMethod" value="post" />
\r 
 339                             <parameter name="responsePrefix" value="restapi-result" />
\r 
 341                         <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
\r 
 342                             <parameter name="templateFileName" value="$prop.sdncRestApi.tempDir +'/l3smvpntemplate.json'" />
\r 
 343                             <parameter name="restapiUrl" value="$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services'" />
\r 
 344                             <parameter name="restapiUser" value="$prop.sdncRestApi.thirdpartySdnc.user" />
\r 
 345                             <parameter name="restapiPassword" value="$prop.sdncRestApi.thirdpartySdnc.password" />
\r 
 346                             <parameter name="format" value="json" />
\r 
 347                             <parameter name="httpMethod" value="post" />
\r 
 348                             <parameter name="responsePrefix" value="restapi-result" />
\r 
 350                         <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
\r 
 351                             <parameter name="templateFileName" value="$prop.sdncRestApi.tempDir +'/l3smvpntemplate.json'" />
\r 
 352                             <parameter name="restapiUrl" value="$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services'" />
\r 
 353                             <parameter name="restapiUser" value="$prop.sdncRestApi.thirdpartySdnc.user" />
\r 
 354                             <parameter name="restapiPassword" value="$prop.sdncRestApi.thirdpartySdnc.password" />
\r 
 355                             <parameter name="format" value="json" />
\r 
 356                             <parameter name="httpMethod" value="post" />
\r 
 357                             <parameter name="responsePrefix" value="restapi-result" />
\r 
 361                 <outcome value="true">
\r 
 362                     <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
\r 
 363                         <parameter name="templateFileName" value="$prop.sdncRestApi.tempDir +'/l3smsitetemplate.json'" />
\r 
 364                         <parameter name="restapiUrl" value="$prop.sdncRestApi.thirdpartySdnc.url" />
\r 
 365                         <parameter name="restapiUser" value="$prop.sdncRestApi.thirdpartySdnc.user" />
\r 
 366                         <parameter name="restapiPassword" value="$prop.sdncRestApi.thirdpartySdnc.password" />
\r 
 367                         <parameter name="format" value="json" />
\r 
 368                         <parameter name="httpMethod" value="post" />
\r 
 369                         <parameter name="responsePrefix" value="restapi-result" />
\r 
 372                 <outcome value="Other">
\r 
 373                     <return status="failure">
\r 
 374                         <parameter name="ack-final" value="Y" />
\r 
 375                         <parameter name="error-code" value="500" />
\r 
 376                         <parameter name="error-message" value="Unexpected error retrieving vpn binding" />
\r