Chore: Add gerrit maven verify GHA workflow
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml
1 <service-logic\r
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='network-topology-operation-changeassign' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>\r
7                 <outcome value='true'>\r
8                     <block></block>\r
9                 </outcome>\r
10                 <outcome value='Other'>\r
11                     <return status='failure'>\r
12                         <parameter name="error-code" value="500" />\r
13                         <parameter name="error-message" value="Error: changeassign only allowed for networks with from-preload set to true" />\r
14                     </return>\r
15                 </outcome>\r
16             </switch>\r
17             <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
18                 <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
19                 <parameter name='contextPrefix' value='prop' />\r
20             </execute>\r
21             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\r
22                 <parameter name="source" value="`$prop.restapi.preload-network`"/>\r
23                 <parameter name="outputPath" value="tmp.pn-url"/>\r
24                 <parameter name="target" value="{network-name}"/>\r
25                 <parameter name="replacement" value="`$network-topology-operation-input.network-request-information.network-name`"/>\r
26             </execute>\r
27             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
28                 <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />\r
29                 <parameter name='restapiUser' value='`$prop.controller.user`' />\r
30                 <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\r
31                 <parameter name='format' value='json' />\r
32                 <parameter name='httpMethod' value='GET' />\r
33                 <parameter name="responsePrefix" value="preload-data" />\r
34                 <outcome value='success'>\r
35                     <block atomic="true"></block>\r
36                 </outcome>\r
37                 <outcome value='Other'>\r
38                     <return status='failure'>\r
39                         <parameter name="error-code" value="500" />\r
40                         <parameter name="error-message" value="'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'" />\r
41                     </return>\r
42                 </outcome>\r
43             </execute>\r
44             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
45         resource="l3-network" \r
46                 key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\r
47                         AND depth='all'" \r
48                 local-only="false" \r
49                 pfx="tmp.AnAI.l3network">\r
50                 <outcome value='failure'>\r
51                     <return status='failure'>\r
52                         <parameter name="error-code" value="500" />\r
53                         <parameter name="error-message" value="`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`" />\r
54                     </return>\r
55                 </outcome>\r
56                 <outcome value='not-found'>\r
57                     <return status='failure'>\r
58                         <parameter name="error-code" value="404" />\r
59                         <parameter name="error-message" value="`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`" />\r
60                     </return>\r
61                 </outcome>\r
62             </get-resource>\r
63             <switch test="`$tmp.AnAI.l3network.network-name == $network-data.network-topology.network-topology-identifier-structure.network-name`">\r
64                 <outcome value='false'>\r
65                     <return status='failure'>\r
66                         <parameter name="error-code" value="404" />\r
67                         <parameter name="error-message" value="`'The input network-name,' + network-topology-operation-input.network-request-information.network-name + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" />\r
68                     </return>\r
69                 </outcome>\r
70             </switch>\r
71             <switch test="`$tmp.AnAI.l3network.network-type == $network-data.network-topology.network-topology-identifier-structure.network-type`">\r
72                 <outcome value='false'>\r
73                     <return status='failure'>\r
74                         <parameter name="error-code" value="404" />\r
75                         <parameter name="error-message" value="`'The input network-type,' + network-topology-operation-input.network-request-information.network-type + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" />\r
76                     </return>\r
77                 </outcome>\r
78             </switch>\r
79             <switch test="`$tmp.AnAI.l3network.network-name == $preload-data.preload-network-topology-information.network-topology-identifier.network-name`">\r
80                 <outcome value='false'>\r
81                     <return status='failure'>\r
82                         <parameter name="error-code" value="404" />\r
83                         <parameter name="error-message" value="`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`" />\r
84                     </return>\r
85                 </outcome>\r
86             </switch>\r
87             <switch test="`$tmp.AnAI.l3network.network-type == $preload-data.preload-network-topology-information.network-topology-identifier.network-type`">\r
88                 <outcome value='false'>\r
89                     <return status='failure'>\r
90                         <parameter name="error-code" value="404" />\r
91                         <parameter name="error-message" value="`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`" />\r
92                     </return>\r
93                 </outcome>\r
94             </switch>\r
95             <set>\r
96                 <parameter name='x' value='0' />\r
97                 <parameter name='tmp.error-message' value='' />\r
98                 <parameter name='execute_failure' value='false' />\r
99                 <parameter name='tmp.l3networkUpdate' value='0' />\r
100             </set>\r
101             <switch test="`$tmp.AnAI.l3network.subnets.subnet_length`">\r
102                 <outcome value=''>\r
103                     <set>\r
104                         <parameter name="tmp.AnAI.l3network.subnets.subnet_length" value="0" />\r
105                     </set>\r
106                 </outcome>\r
107             </switch>\r
108             <for index="k" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">\r
109                 <block atomic='true'>\r
110                     <set>\r
111                         <parameter name='tmp.start-address-match' value='0' />\r
112                     </set>\r
113                     <set>\r
114                         <parameter name='tmp.subnetUpdate' value='0' />\r
115                     </set>\r
116                     <block atomic='true'>\r
117                         <for index="n" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">\r
118                             <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.preload-network-topology-information.subnets[$n].start-address`">\r
119                                 <outcome value='true'>\r
120                                     <block atomic='true'>\r
121                                         <set>\r
122                                             <parameter name='tmp.start-address-match' value='1' />\r
123                                         </set>\r
124                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.preload-network-topology-information.subnets[$n].cidr-mask`">\r
125                                             <outcome value='false'>\r
126                                                 <set>\r
127                                                     <parameter name="tmp.subnetUpdate" value="1" />\r
128                                                 </set>\r
129                                             </outcome>\r
130                                         </switch>\r
131                                         <switch test="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`">\r
132                                             <outcome value=''>\r
133                                                 <block>\r
134                                                     <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">\r
135                                                         <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$n].start-address`" />\r
136                                                         <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$n].ip-version`" />\r
137                                                         <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`" />\r
138                                                         <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />\r
139                                                     </execute>\r
140                                                     <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`">\r
141                                                         <outcome value='false'>\r
142                                                             <block>\r
143                                                                 <set>\r
144                                                                     <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />\r
145                                                                 </set>\r
146                                                                 <set>\r
147                                                                     <parameter name="tmp.subnetUpdate" value="1" />\r
148                                                                 </set>\r
149                                                             </block>\r
150                                                         </outcome>\r
151                                                     </switch>\r
152                                                 </block>\r
153                                             </outcome>\r
154                                             <outcome value='Other'>\r
155                                                 <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.preload-network-topology-information.subnets[$n].gateway-address`">\r
156                                                     <outcome value='false'>\r
157                                                         <block>\r
158                                                             <set>\r
159                                                                 <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`" />\r
160                                                             </set>\r
161                                                             <set>\r
162                                                                 <parameter name="tmp.subnetUpdate" value="1" />\r
163                                                             </set>\r
164                                                         </block>\r
165                                                     </outcome>\r
166                                                     <outcome value='true'>\r
167                                                         <set>\r
168                                                             <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`" />\r
169                                                         </set>\r
170                                                     </outcome>\r
171                                                 </switch>\r
172                                             </outcome>\r
173                                         </switch>\r
174                                         <switch test="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-enabled`">\r
175                                             <outcome value='N'>\r
176                                                 <set>\r
177                                                     <parameter name="tmp.dhcpEnabled.boolean" value="false" />\r
178                                                 </set>\r
179                                             </outcome>\r
180                                             <outcome value='Y'>\r
181                                                 <set>\r
182                                                     <parameter name="tmp.dhcpEnabled.boolean" value="true" />\r
183                                                 </set>\r
184                                             </outcome>\r
185                                         </switch>\r
186                                         <switch test="`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`">\r
187                                             <outcome value='N'>\r
188                                                 <set>\r
189                                                     <parameter name="tmp.addrFromStart.boolean" value="false" />\r
190                                                 </set>\r
191                                             </outcome>\r
192                                             <outcome value='Y'>\r
193                                                 <set>\r
194                                                     <parameter name="tmp.addrFromStart.boolean" value="true" />\r
195                                                 </set>\r
196                                             </outcome>\r
197                                         </switch>\r
198                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].ip-assignment-direction == $tmp.addrFromStart.boolean`">\r
199                                             <outcome value='false'>\r
200                                                 <block>\r
201                                                     <set>\r
202                                                         <parameter name="tmp.subnetUpdate" value="1" />\r
203                                                     </set>\r
204                                                 </block>\r
205                                             </outcome>\r
206                                         </switch>\r
207                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`">\r
208                                             <outcome value='false'>\r
209                                                 <block>\r
210                                                     <set>\r
211                                                         <parameter name="tmp.subnetUpdate" value="1" />\r
212                                                     </set>\r
213                                                 </block>\r
214                                             </outcome>\r
215                                         </switch>\r
216                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`">\r
217                                             <outcome value='false'>\r
218                                                 <block>\r
219                                                     <set>\r
220                                                         <parameter name="tmp.subnetUpdate" value="1" />\r
221                                                     </set>\r
222                                                 </block>\r
223                                             </outcome>\r
224                                         </switch>\r
225                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`">\r
226                                             <outcome value='false'>\r
227                                                 <block>\r
228                                                     <set>\r
229                                                         <parameter name="tmp.subnetUpdate" value="1" />\r
230                                                     </set>\r
231                                                 </block>\r
232                                             </outcome>\r
233                                         </switch>\r
234                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.preload-network-topology-information.subnets[$n].subnet-name`">\r
235                                             <outcome value='false'>\r
236                                                 <block>\r
237                                                     <set>\r
238                                                         <parameter name="tmp.subnetUpdate" value="1" />\r
239                                                     </set>\r
240                                                 </block>\r
241                                             </outcome>\r
242                                         </switch>\r
243                                         <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-role == $preload-data.preload-network-topology-information.subnets[$n].subnet-role`">\r
244                                             <outcome value='false'>\r
245                                                 <block>\r
246                                                     <set>\r
247                                                         <parameter name="tmp.subnetUpdate" value="1" />\r
248                                                     </set>\r
249                                                 </block>\r
250                                             </outcome>\r
251                                         </switch>\r
252                                         <switch test="`$tmp.subnetUpdate == 1`">\r
253                                             <outcome value='true'>\r
254                                                 <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
255         resource="subnet" \r
256                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
257                         AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >\r
258                                                     <!-- Update l3network.subnet -->\r
259                                                     <parameter name="gateway-address" value="`$tmp.gateway-address`"/>\r
260                                                     <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$n].subnet-name`"/>\r
261                                                     <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`"/>\r
262                                                     <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`"/>\r
263                                                     <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`"/>\r
264                                                     <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`"/>\r
265                                                     <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />\r
266                                                     <parameter name="orchestration-status" value="PendingUpdate" />\r
267                                                     <outcome value='failure'>\r
268                                                         <block>\r
269                                                             <set>\r
270                                                                 <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\r
271                                                                 <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
272                                                             </set>\r
273                                                             <set>\r
274                                                                 <parameter name="error-code" value="500"/>\r
275                                                                 <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>\r
276                                                             </set>\r
277                                                             <return status='success'>\r
278                                                                 <parameter name='execute_failure' value='true' />\r
279                                                             </return>\r
280                                                         </block>\r
281                                                     </outcome>\r
282                                                     <outcome value='not-found'>\r
283                                                         <block>\r
284                                                             <set>\r
285                                                                 <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\r
286                                                                 <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
287                                                             </set>\r
288                                                             <set>\r
289                                                                 <parameter name="error-code" value="500"/>\r
290                                                                 <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>\r
291                                                             </set>\r
292                                                             <return status='success'>\r
293                                                                 <parameter name='execute_failure' value='true' />\r
294                                                             </return>\r
295                                                         </block>\r
296                                                     </outcome>\r
297                                                     <outcome value='success'>\r
298                                                         <block>\r
299                                                             <set>\r
300                                                                 <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>\r
301                                                                 <parameter name="tmp.subnetRollback[$x].type" value = "update"/>\r
302                                                             </set>\r
303                                                             <set>\r
304                                                                 <parameter name="x" value = "`$x + 1`"  />\r
305                                                             </set>\r
306                                                             <set>\r
307                                                                 <parameter name="tmp.l3networkUpdate" value="1" />\r
308                                                             </set>\r
309                                                         </block>\r
310                                                     </outcome>\r
311                                                 </update>\r
312                                             </outcome>\r
313                                         </switch>\r
314                                     </block>\r
315                                 </outcome>\r
316                             </switch>\r
317                         </for>\r
318                         <switch test="`$execute_failure`">\r
319                             <outcome value='false'>\r
320                                 <switch test="`$tmp.start-address-match == 0`">\r
321                                     <outcome value='true'>\r
322                                         <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
323         resource="subnet" \r
324                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
325                         AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >\r
326                                             <parameter name="orchestration-status" value="PendingDelete" />\r
327                                             <outcome value='failure'>\r
328                                                 <block>\r
329                                                     <set>\r
330                                                         <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\r
331                                                         <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
332                                                     </set>\r
333                                                     <set>\r
334                                                         <parameter name="error-code" value="500"/>\r
335                                                         <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>\r
336                                                     </set>\r
337                                                     <return status='success'>\r
338                                                         <parameter name='execute_failure' value='true' />\r
339                                                     </return>\r
340                                                 </block>\r
341                                             </outcome>\r
342                                             <outcome value='not-found'>\r
343                                                 <block>\r
344                                                     <set>\r
345                                                         <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\r
346                                                         <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
347                                                     </set>\r
348                                                     <set>\r
349                                                         <parameter name="error-code" value="500"/>\r
350                                                         <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>\r
351                                                     </set>\r
352                                                     <return status='success'>\r
353                                                         <parameter name='execute_failure' value='true' />\r
354                                                     </return>\r
355                                                 </block>\r
356                                             </outcome>\r
357                                             <outcome value='success'>\r
358                                                 <block>\r
359                                                     <set>\r
360                                                         <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>\r
361                                                         <parameter name="tmp.subnetRollback[$x].orchestration-status" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`" />\r
362                                                         <parameter name="tmp.subnetRollback[$x].type" value = "delete"  />\r
363                                                     </set>\r
364                                                     <set>\r
365                                                         <parameter name="x" value = "`$x + 1`"  />\r
366                                                     </set>\r
367                                                     <set>\r
368                                                         <parameter name="tmp.l3networkUpdate" value="1" />\r
369                                                     </set>\r
370                                                 </block>\r
371                                             </outcome>\r
372                                         </update>\r
373                                     </outcome>\r
374                                 </switch>\r
375                             </outcome>\r
376                         </switch>\r
377                     </block>\r
378                 </block>\r
379             </for>\r
380             <switch test="`$execute_failure`">\r
381                 <outcome value='false'>\r
382                     <for index="i" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">\r
383                         <block atomic='true'>\r
384                             <set>\r
385                                 <parameter name="tmp.start-address-match" value="0" />\r
386                             </set>\r
387                             <block atomic='true'>\r
388                                 <for index="j" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">\r
389                                     <switch test="`$preload-data.preload-network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`">\r
390                                         <outcome value='true'>\r
391                                             <set>\r
392                                                 <parameter name='tmp.start-address-match' value='1' />\r
393                                             </set>\r
394                                         </outcome>\r
395                                     </switch>\r
396                                 </for>\r
397                                 <switch test="`$tmp.start-address-match == 0`">\r
398                                     <outcome value='true'>\r
399                                         <block atomic="true">\r
400                                             <switch test="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`">\r
401                                                 <outcome value='N'>\r
402                                                     <set>\r
403                                                         <parameter name="tmp.dhcpEnabled.boolean" value="false" />\r
404                                                     </set>\r
405                                                 </outcome>\r
406                                                 <outcome value='Y'>\r
407                                                     <set>\r
408                                                         <parameter name="tmp.dhcpEnabled.boolean" value="true" />\r
409                                                     </set>\r
410                                                 </outcome>\r
411                                             </switch>\r
412                                             <switch test="`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`">\r
413                                                 <outcome value='N'>\r
414                                                     <set>\r
415                                                         <parameter name="tmp.addrFromStart.boolean" value="false" />\r
416                                                     </set>\r
417                                                 </outcome>\r
418                                                 <outcome value='Y'>\r
419                                                     <set>\r
420                                                         <parameter name="tmp.addrFromStart.boolean" value="true" />\r
421                                                     </set>\r
422                                                 </outcome>\r
423                                                 <outcome value=''>\r
424                                                     <set>\r
425                                                         <parameter name="tmp.addrFromStart.boolean" value="true" />\r
426                                                     </set>\r
427                                                 </outcome>\r
428                                             </switch>\r
429                                             <set>\r
430                                                 <parameter name='tmp.gateway-address' value='`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`' />\r
431                                             </set>\r
432                                             <switch test="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`">\r
433                                                 <outcome value=''>\r
434                                                     <block>\r
435                                                         <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">\r
436                                                             <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />\r
437                                                             <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />\r
438                                                             <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />\r
439                                                             <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />\r
440                                                         </execute>\r
441                                                         <set>\r
442                                                             <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />\r
443                                                         </set>\r
444                                                     </block>\r
445                                                 </outcome>\r
446                                             </switch>\r
447                                             <set>\r
448                                                 <parameter name="tmp.local.network-id" value="`$tmp.AnAI.l3network.network-id`" />\r
449                                             </set>\r
450                                             <call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >\r
451                                                 <outcome value='failure'>\r
452                                                     <block>\r
453                                                         <set>\r
454                                                             <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />\r
455                                                             <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
456                                                         </set>\r
457                                                         <set>\r
458                                                             <parameter name="error-code" value="500"/>\r
459                                                             <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>\r
460                                                         </set>\r
461                                                         <return status='success'>\r
462                                                             <parameter name='execute_failure' value='true' />\r
463                                                         </return>\r
464                                                     </block>\r
465                                                 </outcome>\r
466                                             </call>\r
467                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
468         resource="subnet" \r
469                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
470                         AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >\r
471                                                 <!-- Create l3-network object -->\r
472                                                 <parameter name="network-id" value="`$tmp.AnAI.l3network.network-id`" />\r
473                                                 <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />\r
474                                                 <parameter name="gateway-address" value="`$tmp.gateway-address`" />\r
475                                                 <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`" />\r
476                                                 <parameter name="network-start-address" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />\r
477                                                 <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />\r
478                                                 <parameter name="ip-version" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />\r
479                                                 <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`" />\r
480                                                 <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`" />\r
481                                                 <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />\r
482                                                 <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />\r
483                                                 <parameter name="orchestration-status" value="PendingCreate" />\r
484                                                 <outcome value='failure'>\r
485                                                     <block>\r
486                                                         <set>\r
487                                                             <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />\r
488                                                             <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
489                                                         </set>\r
490                                                         <set>\r
491                                                             <parameter name="error-code" value="500"/>\r
492                                                             <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>\r
493                                                         </set>\r
494                                                         <return status='success'>\r
495                                                             <parameter name='execute_failure' value='true' />\r
496                                                         </return>\r
497                                                     </block>\r
498                                                 </outcome>\r
499                                                 <outcome value='not-found'>\r
500                                                     <block>\r
501                                                         <set>\r
502                                                             <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />\r
503                                                             <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />\r
504                                                         </set>\r
505                                                         <set>\r
506                                                             <parameter name="error-code" value="500"/>\r
507                                                             <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>\r
508                                                         </set>\r
509                                                         <return status='success'>\r
510                                                             <parameter name='execute_failure' value='true' />\r
511                                                         </return>\r
512                                                     </block>\r
513                                                 </outcome>\r
514                                                 <outcome value='success'>\r
515                                                     <block>\r
516                                                         <set>\r
517                                                             <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.return.generate-subnets-subnet-id.uuid`" />\r
518                                                             <parameter name="tmp.subnetRollback[$x].type" value = "create"  />\r
519                                                         </set>\r
520                                                         <set>\r
521                                                             <parameter name="x" value = "`$x + 1`"  />\r
522                                                         </set>\r
523                                                         <set>\r
524                                                             <parameter name='tmp.l3networkUpdate' value='1' />\r
525                                                         </set>\r
526                                                         <block>\r
527                                                             <set>\r
528                                                                 <parameter name="tmp.local.subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$j].subnet-id`" />\r
529                                                             </set>\r
530                                                             <switch test='`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`'>\r
531                                                                 <outcome value=''>\r
532                                                                     <set>\r
533                                                                         <parameter name='preload-data.preload-network-topology-information.subnets[$i].host-routes_length' value='0' />\r
534                                                                     </set>\r
535                                                                 </outcome>\r
536                                                             </switch>\r
537                                                             <for index="h" start="0" end="`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`">\r
538                                                                 <block atomic='true'>\r
539                                                                     <call module="VNF-API" rpc="generate-host-routes-host-route-id" mode="sync" >\r
540                                                                         <outcome value='failure'>\r
541                                                                             <block>\r
542                                                                                 <set>\r
543                                                                                     <parameter name="error-code" value="500"/>\r
544                                                                                     <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>\r
545                                                                                 </set>\r
546                                                                                 <return status='success'>\r
547                                                                                     <parameter name='execute_failure' value='true' />\r
548                                                                                 </return>\r
549                                                                             </block>\r
550                                                                         </outcome>\r
551                                                                     </call>\r
552                                                                     <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
553         resource="host-route" \r
554                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id  \r
555                         AND subnet.subnet-id = $tmp.local.subnet-id  \r
556                         AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid" >\r
557                                                                         <!-- Create host-route object -->\r
558                                                                         <parameter name="host-route-id" value="`$tmp.return.generate-host-routes-host-route-id.uuid`" />\r
559                                                                         <parameter name="route-prefix" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`" />\r
560                                                                         <parameter name="next-hop" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`" />\r
561                                                                         <outcome value='failure'>\r
562                                                                             <block>\r
563                                                                                 <set>\r
564                                                                                     <parameter name="error-code" value="500"/>\r
565                                                                                     <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>\r
566                                                                                 </set>\r
567                                                                                 <return status='success'>\r
568                                                                                     <parameter name='execute_failure' value='true' />\r
569                                                                                 </return>\r
570                                                                             </block>\r
571                                                                         </outcome>\r
572                                                                         <outcome value='not-found'>\r
573                                                                             <block>\r
574                                                                                 <set>\r
575                                                                                     <parameter name="error-code" value="500"/>\r
576                                                                                     <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>\r
577                                                                                 </set>\r
578                                                                                 <return status='success'>\r
579                                                                                     <parameter name='execute_failure' value='true' />\r
580                                                                                 </return>\r
581                                                                             </block>\r
582                                                                         </outcome>\r
583                                                                     </save>\r
584                                                                 </block>\r
585                                                             </for>\r
586                                                         </block>\r
587                                                     </block>\r
588                                                 </outcome>\r
589                                             </save>\r
590                                         </block>\r
591                                     </outcome>\r
592                                 </switch>\r
593                             </block>\r
594                         </block>\r
595                     </for>\r
596                 </outcome>\r
597             </switch>\r
598             <switch test="`$execute_failure`">\r
599                 <outcome value='false'>\r
600                     <block atomic='true'>\r
601                         <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
602         resource="l3-network:relationship-list" \r
603         key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
604                 AND related-to = vpn-binding" >\r
605                             <outcome value='failure'>\r
606                                 <block>\r
607                                     <set>\r
608                                         <parameter name="error-code" value="500"/>\r
609                                         <parameter name="tmp.error-message" value="An error occurred while deleting l3-network vpn-binding relationship from AnAI"/>\r
610                                     </set>\r
611                                     <return status='success'>\r
612                                         <parameter name='execute_failure' value='true' />\r
613                                     </return>\r
614                                 </block>\r
615                             </outcome>\r
616                         </delete>\r
617                         <switch test="`$execute_failure`">\r
618                             <outcome value='false'>\r
619                                 <block atomic='true'>\r
620                                     <switch test="`$preload-data.preload-network-topology-information.vpn-bindings_length`">\r
621                                         <outcome value=''>\r
622                                             <set>\r
623                                                 <parameter name="preload-data.preload-network-topology-information.vpn-bindings_length" value="0" />\r
624                                             </set>\r
625                                         </outcome>\r
626                                     </switch>\r
627                                     <for index="i" start="0" end="`$preload-data.preload-network-topology-information.vpn-bindings_length`">\r
628                                         <block atomic='true'>\r
629                                             <set>\r
630                                                 <parameter name="tmp.vpn-binding-id" value="" />\r
631                                             </set>\r
632                                             <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`">\r
633                                                 <outcome value='Other'>\r
634                                                     <set>\r
635                                                         <parameter name="tmp.vpn-binding-id" value="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`" />\r
636                                                     </set>\r
637                                                 </outcome>\r
638                                             </switch>\r
639                                             <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target != ''`" >\r
640                                                 <outcome value='true'>\r
641                                                     <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
642         resource="vpn-binding" \r
643                 key="vpn-binding.global-route-target = $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target" \r
644                 pfx="tmp.AnAI.vpn-binding">\r
645                                                         <outcome value='not-found'>\r
646                                                             <block>\r
647                                                                 <set>\r
648                                                                     <parameter name="error-code" value="500"/>\r
649                                                                     <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`"/>\r
650                                                                 </set>\r
651                                                                 <return status='success'>\r
652                                                                     <parameter name='execute_failure' value='true' />\r
653                                                                 </return>\r
654                                                             </block>\r
655                                                         </outcome>\r
656                                                         <outcome value='failure'>\r
657                                                             <block>\r
658                                                                 <set>\r
659                                                                     <parameter name="error-code" value="500"/>\r
660                                                                     <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`"/>\r
661                                                                 </set>\r
662                                                                 <return status='success'>\r
663                                                                     <parameter name='execute_failure' value='true' />\r
664                                                                 </return>\r
665                                                             </block>\r
666                                                         </outcome>\r
667                                                         <outcome value='success'>\r
668                                                             <set>\r
669                                                                 <parameter name="tmp.vpn-binding-id" value="`$tmp.AnAI.vpn-binding.vpn-id`" />\r
670                                                             </set>\r
671                                                         </outcome>\r
672                                                     </get-resource>\r
673                                                 </outcome>\r
674                                             </switch>\r
675                                             <switch test="`$execute_failure`">\r
676                                                 <outcome value='false'>\r
677                                                     <switch test="`$tmp.vpn-binding-id != ''`">\r
678                                                         <outcome value='true'>\r
679                                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
680         resource="l3-network:relationship-list" \r
681         key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
682                                                                 <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />\r
683                                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />\r
684                                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" />\r
685                                                                 <outcome value='failure'>\r
686                                                                     <block>\r
687                                                                         <set>\r
688                                                                             <parameter name="error-code" value="500"/>\r
689                                                                             <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>\r
690                                                                         </set>\r
691                                                                         <set>\r
692                                                                             <parameter name="i" value = "`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`"  />\r
693                                                                         </set>\r
694                                                                         <return status='success'>\r
695                                                                             <parameter name='execute_failure' value='true' />\r
696                                                                         </return>\r
697                                                                     </block>\r
698                                                                 </outcome>\r
699                                                                 <outcome value='not-found'>\r
700                                                                     <block>\r
701                                                                         <set>\r
702                                                                             <parameter name="error-code" value="500"/>\r
703                                                                             <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>\r
704                                                                         </set>\r
705                                                                         <set>\r
706                                                                             <parameter name="i" value = "`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`"  />\r
707                                                                         </set>\r
708                                                                         <return status='success'>\r
709                                                                             <parameter name='execute_failure' value='true' />\r
710                                                                         </return>\r
711                                                                     </block>\r
712                                                                 </outcome>\r
713                                                                 <outcome value='success'>\r
714                                                                     <set>\r
715                                                                         <parameter name='tmp.vpn-binding.updated' value='1' />\r
716                                                                     </set>\r
717                                                                 </outcome>\r
718                                                             </save>\r
719                                                         </outcome>\r
720                                                     </switch>\r
721                                                 </outcome>\r
722                                             </switch>\r
723                                         </block>\r
724                                     </for>\r
725                                 </block>\r
726                             </outcome>\r
727                         </switch>\r
728                     </block>\r
729                 </outcome>\r
730             </switch>\r
731             <switch test="`$execute_failure`">\r
732                 <outcome value='false'>\r
733                     <block atomic='true'>\r
734                         <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
735         resource="l3-network:relationship-list" \r
736         key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
737                  AND related-to = network-policy" >\r
738                             <outcome value='failure'>\r
739                                 <block>\r
740                                     <set>\r
741                                         <parameter name="error-code" value="500"/>\r
742                                         <parameter name="tmp.error-message" value="An error occurred while deleting l3-network network-policy relationship from AnAI in preparation to regenerate the network-policy relationship from PRELOAD."/>\r
743                                     </set>\r
744                                     <return status='success'>\r
745                                         <parameter name='execute_failure' value='true' />\r
746                                     </return>\r
747                                 </block>\r
748                             </outcome>\r
749                         </delete>\r
750                         <switch test="`$execute_failure`">\r
751                             <outcome value='false'>\r
752                                 <block atomic='true'>\r
753                                     <switch test="`$preload-data.preload-network-topology-information.network-policy_length`">\r
754                                         <outcome value=''>\r
755                                             <set>\r
756                                                 <parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />\r
757                                             </set>\r
758                                         </outcome>\r
759                                     </switch>\r
760                                     <for index="i" start="0" end="`$preload-data.preload-network-topology-information.network-policy_length`">\r
761                                         <switch test="`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != NULL`">\r
762                                             <outcome value='true'>\r
763                                                 <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
764         resource="network-policy" \r
765                 key="network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn"  \r
766                 pfx="tmp.AnAI.network-policy" >\r
767                                                     <outcome value='not-found'>\r
768                                                         <block>\r
769                                                             <set>\r
770                                                                 <parameter name="error-code" value="500"/>\r
771                                                                 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>\r
772                                                             </set>\r
773                                                             <return status='success'>\r
774                                                                 <parameter name='execute_failure' value='true' />\r
775                                                             </return>\r
776                                                         </block>\r
777                                                     </outcome>\r
778                                                     <outcome value='failure'>\r
779                                                         <block>\r
780                                                             <set>\r
781                                                                 <parameter name="error-code" value="500"/>\r
782                                                                 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>\r
783                                                             </set>\r
784                                                             <return status='success'>\r
785                                                                 <parameter name='execute_failure' value='true' />\r
786                                                             </return>\r
787                                                         </block>\r
788                                                     </outcome>\r
789                                                     <outcome value='success'>\r
790                                                         <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
791         resource="l3-network:relationship-list" \r
792         key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
793                                                             <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />\r
794                                                             <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />\r
795                                                             <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" />\r
796                                                             <outcome value='failure'>\r
797                                                                 <block>\r
798                                                                     <set>\r
799                                                                         <parameter name="error-code" value="500"/>\r
800                                                                         <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>\r
801                                                                     </set>\r
802                                                                     <return status='success'>\r
803                                                                         <parameter name='execute_failure' value='true' />\r
804                                                                     </return>\r
805                                                                 </block>\r
806                                                             </outcome>\r
807                                                             <outcome value='not-found'></outcome>\r
808                                                             <outcome value='success'>\r
809                                                                 <set>\r
810                                                                     <parameter name='tmp.network-policy.updated' value='1' />\r
811                                                                 </set>\r
812                                                             </outcome>\r
813                                                         </save>\r
814                                                     </outcome>\r
815                                                 </get-resource>\r
816                                             </outcome>\r
817                                         </switch>\r
818                                     </for>\r
819                                 </block>\r
820                             </outcome>\r
821                         </switch>\r
822                     </block>\r
823                 </outcome>\r
824             </switch>\r
825             <switch test="`$execute_failure`">\r
826                 <outcome value='false'>\r
827                     <block atomic='true'>\r
828                         <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
829         resource="l3-network:relationship-list" \r
830         key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
831                  AND related-to = route-table-reference" >\r
832                             <outcome value='failure'>\r
833                                 <block>\r
834                                     <set>\r
835                                         <parameter name="error-code" value="500"/>\r
836                                         <parameter name="tmp.error-message" value="An error occurred while deleting l3-network route-table-reference relationship from AnAI prior to regenerate the route-table-reference relationship from PRELOAD."/>\r
837                                     </set>\r
838                                     <return status='success'>\r
839                                         <parameter name='execute_failure' value='true' />\r
840                                     </return>\r
841                                 </block>\r
842                             </outcome>\r
843                         </delete>\r
844                         <switch test="`$execute_failure`">\r
845                             <outcome value='false'>\r
846                                 <block atomic='true'>\r
847                                     <switch test="`$preload-data.preload-network-topology-information.route-table-reference_length`">\r
848                                         <outcome value=''>\r
849                                             <set>\r
850                                                 <parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />\r
851                                             </set>\r
852                                         </outcome>\r
853                                     </switch>\r
854                                     <for index="i" start="0" end="`$preload-data.preload-network-topology-information.route-table-reference_length`">\r
855                                         <switch test="`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`">\r
856                                             <outcome value='true'>\r
857                                                 <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
858         resource="route-table-reference" \r
859                 key="route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn" \r
860                 pfx="tmp.AnAI.route-table-reference">\r
861                                                     <outcome value='not-found'>\r
862                                                         <block>\r
863                                                             <set>\r
864                                                                 <parameter name="error-code" value="500"/>\r
865                                                                 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>\r
866                                                             </set>\r
867                                                             <return status='success'>\r
868                                                                 <parameter name='execute_failure' value='true' />\r
869                                                             </return>\r
870                                                         </block>\r
871                                                     </outcome>\r
872                                                     <outcome value='failure'>\r
873                                                         <block>\r
874                                                             <set>\r
875                                                                 <parameter name="error-code" value="500"/>\r
876                                                                 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>\r
877                                                             </set>\r
878                                                             <return status='success'>\r
879                                                                 <parameter name='execute_failure' value='true' />\r
880                                                             </return>\r
881                                                         </block>\r
882                                                     </outcome>\r
883                                                     <outcome value='success'>\r
884                                                         <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
885         resource="l3-network:relationship-list" \r
886         key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
887                                                             <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />\r
888                                                             <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />\r
889                                                             <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" />\r
890                                                             <outcome value='failure'>\r
891                                                                 <block>\r
892                                                                     <set>\r
893                                                                         <parameter name="error-code" value="500"/>\r
894                                                                         <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>\r
895                                                                     </set>\r
896                                                                     <return status='success'>\r
897                                                                         <parameter name='execute_failure' value='true' />\r
898                                                                     </return>\r
899                                                                 </block>\r
900                                                             </outcome>\r
901                                                             <outcome value='not-found'></outcome>\r
902                                                             <outcome value='success'>\r
903                                                                 <set>\r
904                                                                     <parameter name='tmp.route-table-reference.updated' value='1' />\r
905                                                                 </set>\r
906                                                             </outcome>\r
907                                                         </save>\r
908                                                     </outcome>\r
909                                                 </get-resource>\r
910                                             </outcome>\r
911                                         </switch>\r
912                                     </for>\r
913                                 </block>\r
914                             </outcome>\r
915                         </switch>\r
916                     </block>\r
917                 </outcome>\r
918             </switch>\r
919             <switch test="`$execute_failure`">\r
920                 <outcome value='false'>\r
921                     <switch test="`$tmp.l3networkUpdate == 1`">\r
922                         <outcome value='true'>\r
923                             <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
924         resource="l3-network" \r
925                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
926                                 <parameter name="orchestration-status" value="PendingUpdate" />\r
927                                 <outcome value='failure'>\r
928                                     <block>\r
929                                         <set>\r
930                                             <parameter name="error-code" value="500"/>\r
931                                             <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/>\r
932                                         </set>\r
933                                         <return status='success'>\r
934                                             <parameter name='execute_failure' value='true' />\r
935                                         </return>\r
936                                     </block>\r
937                                 </outcome>\r
938                                 <outcome value='not-found'>\r
939                                     <block>\r
940                                         <set>\r
941                                             <parameter name="error-code" value="500"/>\r
942                                             <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/>\r
943                                         </set>\r
944                                         <return status='success'>\r
945                                             <parameter name='execute_failure' value='true' />\r
946                                         </return>\r
947                                     </block>\r
948                                 </outcome>\r
949                                 <outcome value='success'>\r
950                                     <set>\r
951                                         <parameter name='tmp.l3network.status.updated' value='1' />\r
952                                     </set>\r
953                                 </outcome>\r
954                             </update>\r
955                         </outcome>\r
956                     </switch>\r
957                 </outcome>\r
958             </switch>\r
959             <switch test="`$execute_failure`">\r
960                 <outcome value="true">\r
961                     <block atomic='true'>\r
962                         <set>\r
963                             <parameter name='ROLLBACK_START' value='NETWORK_TOPOLOGY_CHANGEASSIGN' />\r
964                         </set>\r
965                         <for index="z" start="0" end="`$tmp.AnAI.l3network.relationship-list.relationship_length`">\r
966                             <switch test="`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`">\r
967                                 <outcome value='vpn-binding'>\r
968                                     <switch test="`$tmp.vpn-binding.updated == 1`">\r
969                                         <outcome value='true'>\r
970                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
971         resource="l3-network:relationship-list" \r
972         key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
973                                                 <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />\r
974                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />\r
975                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />\r
976                                                 <outcome value='failure'>\r
977                                                     <set>\r
978                                                         <parameter name="error-code" value="500"/>\r
979                                                         <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
980                                                     </set>\r
981                                                 </outcome>\r
982                                                 <outcome value='not-found'>\r
983                                                     <set>\r
984                                                         <parameter name="error-code" value="500"/>\r
985                                                         <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
986                                                     </set>\r
987                                                 </outcome>\r
988                                             </save>\r
989                                         </outcome>\r
990                                     </switch>\r
991                                 </outcome>\r
992                                 <outcome value='network-policy'>\r
993                                     <switch test="`$tmp.network-policy.updated == 1`">\r
994                                         <outcome value='true'>\r
995                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
996         resource="l3-network:relationship-list" \r
997         key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
998                                                 <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />\r
999                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />\r
1000                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />\r
1001                                                 <outcome value='failure'>\r
1002                                                     <set>\r
1003                                                         <parameter name="error-code" value="500"/>\r
1004                                                         <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1005                                                     </set>\r
1006                                                 </outcome>\r
1007                                                 <outcome value='not-found'>\r
1008                                                     <set>\r
1009                                                         <parameter name="error-code" value="500"/>\r
1010                                                         <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1011                                                     </set>\r
1012                                                 </outcome>\r
1013                                             </save>\r
1014                                         </outcome>\r
1015                                     </switch>\r
1016                                 </outcome>\r
1017                                 <outcome value='route-table-reference'>\r
1018                                     <switch test="`$tmp.route-table-reference.updated == 1`">\r
1019                                         <outcome value='true'>\r
1020                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1021         resource="l3-network:relationship-list" \r
1022         key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
1023                                                 <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />\r
1024                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />\r
1025                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />\r
1026                                                 <outcome value='failure'>\r
1027                                                     <set>\r
1028                                                         <parameter name="error-code" value="500"/>\r
1029                                                         <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1030                                                     </set>\r
1031                                                 </outcome>\r
1032                                                 <outcome value='not-found'>\r
1033                                                     <set>\r
1034                                                         <parameter name="error-code" value="500"/>\r
1035                                                         <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1036                                                     </set>\r
1037                                                 </outcome>\r
1038                                             </save>\r
1039                                         </outcome>\r
1040                                     </switch>\r
1041                                 </outcome>\r
1042                             </switch>\r
1043                         </for>\r
1044                         <for index="j" start="0" end="`$x`">\r
1045                             <block atomic='true'>\r
1046                                 <set>\r
1047                                     <parameter name="tmp.rollback.match" value="0"/>\r
1048                                 </set>\r
1049                                 <for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">\r
1050                                     <switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`">\r
1051                                         <outcome value='true'>\r
1052                                             <block atomic='true'>\r
1053                                                 <switch test="`$tmp.subnetRollback[$j].type`">\r
1054                                                     <outcome value='delete'>\r
1055                                                         <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1056         resource="subnet" \r
1057                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
1058                         AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >\r
1059                                                             <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />\r
1060                                                             <outcome value='not-found'>\r
1061                                                                 <set>\r
1062                                                                     <parameter name="error-code" value="500"/>\r
1063                                                                     <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1064                                                                 </set>\r
1065                                                             </outcome>\r
1066                                                             <outcome value='failure'>\r
1067                                                                 <set>\r
1068                                                                     <parameter name="error-code" value="500"/>\r
1069                                                                     <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1070                                                                 </set>\r
1071                                                             </outcome>\r
1072                                                         </update>\r
1073                                                     </outcome>\r
1074                                                     <outcome value='update'>\r
1075                                                         <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1076         resource="subnet" \r
1077                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
1078                         AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id" >\r
1079                                                             <parameter name="subnet-name" value="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`"/>\r
1080                                                             <parameter name="gateway-address" value="`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`"/>\r
1081                                                             <parameter name="cidr-mask" value="`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`"/>\r
1082                                                             <parameter name="dhcp-start" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`"/>\r
1083                                                             <parameter name="dhcp-end" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`"/>\r
1084                                                             <parameter name="dhcp-enabled" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`"/>\r
1085                                                             <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />\r
1086                                                             <outcome value='failure'>\r
1087                                                                 <set>\r
1088                                                                     <parameter name="error-code" value="500"/>\r
1089                                                                     <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1090                                                                 </set>\r
1091                                                             </outcome>\r
1092                                                             <outcome value='not-found'>\r
1093                                                                 <set>\r
1094                                                                     <parameter name="error-code" value="500"/>\r
1095                                                                     <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1096                                                                 </set>\r
1097                                                             </outcome>\r
1098                                                         </update>\r
1099                                                     </outcome>\r
1100                                                 </switch>\r
1101                                                 <set>\r
1102                                                     <parameter name="tmp.rollback.match" value="1"/>\r
1103                                                 </set>\r
1104                                             </block>\r
1105                                         </outcome>\r
1106                                     </switch>\r
1107                                 </for>\r
1108                                 <switch test="`$tmp.rollback.match == 0`">\r
1109                                     <outcome value='true'>\r
1110                                         <switch test="`$tmp.subnetRollback[$j].type`">\r
1111                                             <outcome value='create'>\r
1112                                                 <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1113         resource="subnet" \r
1114                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id \r
1115                         AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >\r
1116                                                     <outcome value='failure'>\r
1117                                                         <set>\r
1118                                                             <parameter name="error-code" value="500"/>\r
1119                                                             <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1120                                                         </set>\r
1121                                                     </outcome>\r
1122                                                     <outcome value='not-found'>\r
1123                                                         <set>\r
1124                                                             <parameter name="error-code" value="500"/>\r
1125                                                             <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1126                                                         </set>\r
1127                                                     </outcome>\r
1128                                                 </delete>\r
1129                                             </outcome>\r
1130                                         </switch>\r
1131                                     </outcome>\r
1132                                 </switch>\r
1133                             </block>\r
1134                         </for>\r
1135                         <switch test="`$tmp.l3network.status.updated == 1`">\r
1136                             <outcome value='true'>\r
1137                                 <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1138         resource="l3-network" \r
1139                 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >\r
1140                                     <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.orchestration-status`" />\r
1141                                     <outcome value='failure'>\r
1142                                         <set>\r
1143                                             <parameter name="error-code" value="500"/>\r
1144                                             <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1145                                         </set>\r
1146                                     </outcome>\r
1147                                     <outcome value='not-found'>\r
1148                                         <set>\r
1149                                             <parameter name="error-code" value="500"/>\r
1150                                             <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>\r
1151                                         </set>\r
1152                                     </outcome>\r
1153                                 </update>\r
1154                             </outcome>\r
1155                         </switch>\r
1156                         <return status='failure'>\r
1157                             <parameter name='error-code' value='500'/>\r
1158                             <parameter name='error-message' value="`'Error updating l3-network in AnAI with network-id = ' + $tmp.AnAI.l3network.network-id + ' - ' + $tmp.error-message + ' - ' + $tmp.rollback.error-message`"/>\r
1159                         </return>\r
1160                     </block>\r
1161                 </outcome>\r
1162             </switch>\r
1163             <set>\r
1164                 <parameter name="ack-final" value="Y"/>\r
1165             </set>\r
1166             <return status="success">\r
1167                 <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id`" />\r
1168                 <parameter name="error-code" value="200" />\r
1169             </return>\r
1170         </block>\r
1171     </method>\r
1172 </service-logic>