2 ============LICENSE_START=======================================================
4 ================================================================================
5 Copyright (C) 2017 AT&T Intellectual Property. All rights
7 ================================================================================
8 Licensed under the Apache License, Version 2.0 (the "License");
9 you may not use this file except in compliance with the License.
10 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 ============LICENSE_END=========================================================
20 <service-logic xmlns="http://www.openecomp.org/sdnc/svclogic"
21 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
22 xsi:schemaLocation="http://www.openecomp.org/sdnc/svclogic ./svclogic.xsd" module='VNF-API' version='${project.version}'><method rpc="network-topology-changeassign" mode="sync"><block atomic="true"><get-resource plugin="org.openecomp.sdnc.sli.aai.AAIService"
24 key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id"
26 pfx="tmp.AnAI.l3network">
27 <outcome value='failure'>
28 <return status='failure'>
29 <parameter name="error-code" value="500" />
30 <parameter name="error-message" value="`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`" /></return></outcome><outcome value='not-found'>
31 <return status='failure'>
32 <parameter name="error-code" value="404" />
33 <parameter name="error-message" value="`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`" /></return></outcome></get-resource><switch test="`$tmp.AnAI.l3network.network-name == $network-topology-operation-input.network-request-information.network-name`"><outcome value='false'>
34 <return status='failure'>
35 <parameter name="error-code" value="404" />
36 <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`" /></return></outcome></switch><switch test="`$tmp.AnAI.l3network.network-type == $network-topology-operation-input.network-request-information.network-type`"><outcome value='false'>
37 <return status='failure'>
38 <parameter name="error-code" value="404" />
39 <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`" /></return></outcome></switch><switch test="`$tmp.AnAI.l3network.network-name == $preload-data.network-topology-information.network-topology-identifier.network-name`"><outcome value='false'>
40 <return status='failure'>
41 <parameter name="error-code" value="404" />
42 <parameter name="error-message" value="`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`" /></return></outcome></switch><switch test="`$tmp.AnAI.l3network.network-type == $preload-data.network-topology-information.network-topology-identifier.network-type`"><outcome value='false'>
43 <return status='failure'>
44 <parameter name="error-code" value="404" />
45 <parameter name="error-message" value="`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`" /></return></outcome></switch><set>
46 <parameter name='x' value='0' />
47 <parameter name='tmp.error-message' value='' />
48 <parameter name='execute_failure' value='false' />
49 <parameter name='tmp.l3networkUpdate' value='0' /></set><switch test="`$tmp.AnAI.l3network.subnets.subnet_length`"><outcome value=''><set>
50 <parameter name="tmp.AnAI.l3network.subnets.subnet_length" value="0" />
51 </set></outcome></switch><for index="k" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
52 <block atomic='true'><set>
53 <parameter name='tmp.start-address-match' value='0' />
55 <parameter name='tmp.subnetUpdate' value='0' />
56 </set><block atomic='true'><for index="n" start="0" end="`$preload-data.network-topology-information.subnets_length`">
57 <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.network-topology-information.subnets[$n].start-address`"><outcome value='true'>
58 <block atomic='true'><set>
59 <parameter name='tmp.start-address-match' value='1' />
60 </set><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.network-topology-information.subnets[$n].cidr-mask`"><outcome value='false'>
62 <parameter name="tmp.subnetUpdate" value="1" />
63 </set></outcome></switch><switch test="`$preload-data.network-topology-information.subnets[$n].gateway-address`"><outcome value=''><block>
64 <execute plugin="org.openecomp.sdnc.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">
65 <parameter name="ipAddress" value="`$preload-data.network-topology-information.subnets[$n].start-address`" />
66 <parameter name="ipVersion" value="`$preload-data.network-topology-information.subnets[$n].ip-version`" />
67 <parameter name="subnet" value="`$preload-data.network-topology-information.subnets[$n].cidr-mask`" />
68 <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" /></execute><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`"><outcome value='false'>
71 <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
73 <parameter name="tmp.subnetUpdate" value="1" />
74 </set></block></outcome></switch></block></outcome><outcome value='Other'>
75 <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.network-topology-information.subnets[$n].gateway-address`"><outcome value='false'>
78 <parameter name="tmp.gateway-address" value="`$preload-data.network-topology-information.subnets[$n].gateway-address`" />
80 <parameter name="tmp.subnetUpdate" value="1" />
81 </set></block></outcome><outcome value='true'>
83 <parameter name="tmp.gateway-address" value="`$preload-data.network-topology-information.subnets[$n].gateway-address`" />
84 </set></outcome></switch></outcome></switch><switch test="`$preload-data.network-topology-information.subnets[$n].dhcp-enabled`"><outcome value='N'><set>
85 <parameter name="tmp.dhcpEnabled.boolean" value="false" />
86 </set></outcome><outcome value='Y'><set>
87 <parameter name="tmp.dhcpEnabled.boolean" value="true" />
88 </set></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`"><outcome value='false'>
91 <parameter name="tmp.subnetUpdate" value="1" />
92 </set></block></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.network-topology-information.subnets[$n].dhcp-start-address`"><outcome value='false'>
95 <parameter name="tmp.subnetUpdate" value="1" />
96 </set></block></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.network-topology-information.subnets[$n].dhcp-end-address`"><outcome value='false'>
99 <parameter name="tmp.subnetUpdate" value="1" />
100 </set></block></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.network-topology-information.subnets[$n].subnet-name`"><outcome value='false'>
103 <parameter name="tmp.subnetUpdate" value="1" />
104 </set></block></outcome></switch><switch test="`$tmp.subnetUpdate == 1`"><outcome value='true'>
105 <update plugin="org.openecomp.sdnc.sli.aai.AAIService"
107 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
108 AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >
109 <!-- Update l3network.subnet -->
110 <parameter name="gateway-address" value="`$tmp.gateway-address`"/>
111 <parameter name="subnet-name" value="`$preload-data.network-topology-information.subnets[$n].subnet-name`"/>
112 <parameter name="cidr-mask" value="`$preload-data.network-topology-information.subnets[$n].cidr-mask`"/>
113 <parameter name="dhcp-start" value="`$preload-data.network-topology-information.subnets[$n].dhcp-start-address`"/>
114 <parameter name="dhcp-end" value="`$preload-data.network-topology-information.subnets[$n].dhcp-end-address`"/>
115 <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`"/>
116 <parameter name="orchestration-status" value="pending-update" />
117 <outcome value='failure'>
120 <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
121 <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
122 <parameter name="error-code" value="500"/>
123 <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`"/></set><return status='success'>
124 <parameter name='execute_failure' value='true' />
125 </return></block></outcome><outcome value='not-found'>
128 <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
129 <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
130 <parameter name="error-code" value="500"/>
131 <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`"/></set><return status='success'>
132 <parameter name='execute_failure' value='true' />
133 </return></block></outcome><outcome value='success'>
136 <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
137 <parameter name="tmp.subnetRollback[$x].type" value = "update"/>
142 <parameter name="x" value = "`$x + 1`" />
145 <parameter name="tmp.l3networkUpdate" value="1" />
146 </set></block></outcome></update></outcome></switch></block></outcome></switch></for><switch test="`$execute_failure`"><outcome value='false'>
147 <switch test="`$tmp.start-address-match == 0`"><outcome value='true'>
148 <update plugin="org.openecomp.sdnc.sli.aai.AAIService"
150 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
151 AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >
152 <parameter name="orchestration-status" value="pending-delete" />
153 <outcome value='failure'>
156 <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
157 <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
158 <parameter name="error-code" value="500"/>
159 <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to pending-delete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/></set><return status='success'>
160 <parameter name='execute_failure' value='true' />
161 </return></block></outcome><outcome value='not-found'>
164 <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
165 <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
166 <parameter name="error-code" value="500"/>
167 <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to pending-delete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/></set><return status='success'>
168 <parameter name='execute_failure' value='true' />
169 </return></block></outcome><outcome value='success'>
172 <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
173 <parameter name="tmp.subnetRollback[$x].orchestration-status" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`" />
174 <parameter name="tmp.subnetRollback[$x].type" value = "delete" />
179 <parameter name="x" value = "`$x + 1`" />
182 <parameter name="tmp.l3networkUpdate" value="1" />
183 </set></block></outcome></update></outcome></switch></outcome></switch></block></block></for><switch test="`$execute_failure`"><outcome value='false'>
184 <for index="i" start="0" end="`$preload-data.network-topology-information.subnets_length`">
185 <block atomic='true'><set>
186 <parameter name="tmp.start-address-match" value="0" />
187 </set><block atomic='true'><for index="j" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
188 <switch test="`$preload-data.network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`"><outcome value='true'>
190 <parameter name='tmp.start-address-match' value='1' />
191 </set></outcome></switch></for><switch test="`$tmp.start-address-match == 0`"><outcome value='true'>
192 <block atomic="true"><switch test="`$preload-data.network-topology-information.subnets[$i].dhcp-enabled`"><outcome value='N'><set>
193 <parameter name="tmp.dhcpEnabled.boolean" value="false" />
194 </set></outcome><outcome value='Y'><set>
195 <parameter name="tmp.dhcpEnabled.boolean" value="true" />
196 </set></outcome></switch><set>
197 <parameter name='tmp.gateway-address' value='`$preload-data.network-topology-information.subnets[$i].gateway-address`' />
198 </set><switch test="`$preload-data.network-topology-information.subnets[$i].gateway-address`"><outcome value=''><block>
199 <execute plugin="org.openecomp.sdnc.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">
200 <parameter name="ipAddress" value="`$preload-data.network-topology-information.subnets[$i].start-address`" />
201 <parameter name="ipVersion" value="`$preload-data.network-topology-information.subnets[$i].ip-version`" />
202 <parameter name="subnet" value="`$preload-data.network-topology-information.subnets[$i].cidr-mask`" />
203 <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" /></execute><set>
204 <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
205 </set></block></outcome></switch><set>
206 <parameter name="tmp.local.network-id" value="`$tmp.AnAI.l3network.network-id`" />
207 </set><call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >
208 <outcome value='failure'>
211 <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
212 <parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
213 <parameter name="error-code" value="500"/>
214 <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`"/></set><return status='success'>
215 <parameter name='execute_failure' value='true' />
216 </return></block></outcome></call><save plugin="org.openecomp.sdnc.sli.aai.AAIService"
218 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
219 AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >
220 <!-- Create l3-network object -->
221 <parameter name="network-id" value="`$tmp.AnAI.l3network.network-id`" />
222 <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />
223 <parameter name="gateway-address" value="`$tmp.gateway-address`" />
224 <parameter name="subnet-name" value="`$preload-data.network-topology-information.subnets[$i].subnet-name`" />
225 <parameter name="network-start-address" value="`$preload-data.network-topology-information.subnets[$i].start-address`" />
226 <parameter name="cidr-mask" value="`$preload-data.network-topology-information.subnets[$i].cidr-mask`" />
227 <parameter name="ip-version" value="`$preload-data.network-topology-information.subnets[$i].ip-version`" />
228 <parameter name="dhcp-start" value="`$preload-data.network-topology-information.subnets[$i].dhcp-start-address`" />
229 <parameter name="dhcp-end" value="`$preload-data.network-topology-information.subnets[$i].dhcp-end-address`" />
230 <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />
231 <parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>
234 <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
235 <parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
236 <parameter name="error-code" value="500"/>
237 <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`"/></set><return status='success'>
238 <parameter name='execute_failure' value='true' />
239 </return></block></outcome><outcome value='not-found'>
242 <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
243 <parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
244 <parameter name="error-code" value="500"/>
245 <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`"/></set><return status='success'>
246 <parameter name='execute_failure' value='true' />
247 </return></block></outcome><outcome value='success'>
250 <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.return.generate-subnets-subnet-id.uuid`" />
251 <parameter name="tmp.subnetRollback[$x].type" value = "create" /></set><set>
252 <parameter name="x" value = "`$x + 1`" />
255 <parameter name='tmp.l3networkUpdate' value='1' />
256 </set></block></outcome></save></block></outcome></switch></block></block></for></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
257 <block atomic='true'><delete plugin="org.openecomp.sdnc.sli.aai.AAIService"
258 resource="l3-network:relationship-list"
259 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
260 AND related-to = vpn-binding" ><outcome value='failure'>
263 <parameter name="error-code" value="500"/>
264 <parameter name="tmp.error-message" value="An error occurred while deleting l3-network vpn-binding relationship from AnAI"/></set><return status='success'>
265 <parameter name='execute_failure' value='true' />
266 </return></block></outcome></delete><switch test="`$execute_failure`"><outcome value='false'>
267 <block atomic='true'><switch test="`$preload-data.network-topology-information.vpn-bindings_length`"><outcome value=''><set>
268 <parameter name="preload-data.network-topology-information.vpn-bindings_length" value="0" />
269 </set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.vpn-bindings_length`">
270 <block atomic='true'><set>
271 <parameter name="tmp.vpn-binding-id" value="" />
272 </set><switch test="`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`"><outcome value='Other'>
274 <parameter name="tmp.vpn-binding-id" value="`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`" />
275 </set></outcome></switch><switch test="`$preload-data.network-topology-information.vpn-bindings[$i].global-route-target != ''`" ><outcome value='true'>
276 <get-resource plugin="org.openecomp.sdnc.sli.aai.AAIService"
277 resource="vpn-binding"
278 key="vpn-binding.global-route-target = $preload-data.network-topology-information.vpn-bindings[$i].global-route-target"
279 pfx="tmp.AnAI.vpn-binding"><outcome value='not-found'>
281 <parameter name="error-code" value="500"/>
282 <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`"/></set><return status='success'>
283 <parameter name='execute_failure' value='true' />
284 </return></block></outcome><outcome value='failure'>
286 <parameter name="error-code" value="500"/>
287 <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`"/></set><return status='success'>
288 <parameter name='execute_failure' value='true' />
289 </return></block></outcome><outcome value='success'>
291 <parameter name="tmp.vpn-binding-id" value="`$tmp.AnAI.vpn-binding.vpn-id`" />
292 </set></outcome></get-resource></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
293 <switch test="`$tmp.vpn-binding-id != ''`"><outcome value='true'>
294 <save plugin="org.openecomp.sdnc.sli.aai.AAIService"
295 resource="l3-network:relationship-list"
296 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
297 <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
298 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
299 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" /><outcome value='failure'>
301 <parameter name="error-code" value="500"/>
302 <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`"/></set><set>
303 <parameter name="i" value = "`$preload-data.network-topology-information.vpn-bindings_length + 1`" />
305 </set><return status='success'>
306 <parameter name='execute_failure' value='true' />
307 </return></block></outcome><outcome value='not-found'>
309 <parameter name="error-code" value="500"/>
310 <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`"/></set><set>
311 <parameter name="i" value = "`$preload-data.network-topology-information.vpn-bindings_length + 1`" />
313 </set><return status='success'>
314 <parameter name='execute_failure' value='true' />
315 </return></block></outcome><outcome value='success'>
317 <parameter name='tmp.vpn-binding.updated' value='1' />
318 </set></outcome></save></outcome></switch></outcome></switch></block></for></block></outcome></switch></block></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
319 <block atomic='true'><delete plugin="org.openecomp.sdnc.sli.aai.AAIService"
320 resource="l3-network:relationship-list"
321 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
322 AND related-to = network-policy" ><outcome value='failure'>
325 <parameter name="error-code" value="500"/>
326 <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."/></set><return status='success'>
327 <parameter name='execute_failure' value='true' />
328 </return></block></outcome></delete><switch test="`$execute_failure`"><outcome value='false'>
329 <block atomic='true'><switch test="`$preload-data.network-topology-information.network-policy_length`"><outcome value=''><set>
330 <parameter name='preload-data.network-topology-information.network-policy_length' value='0' />
331 </set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.network-policy_length`">
332 <switch test="`$preload-data.network-topology-information.network-policy[$i].network-policy-fqdn != NULL`"><outcome value='true'>
333 <get-resource plugin="org.openecomp.sdnc.sli.aai.AAIService"
334 resource="network-policy"
335 key="network-policy.network-policy-fqdn = $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn"
336 pfx="tmp.AnAI.network-policy" ><outcome value='not-found'>
338 <parameter name="error-code" value="500"/>
339 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
340 <parameter name='execute_failure' value='true' />
341 </return></block></outcome><outcome value='failure'>
343 <parameter name="error-code" value="500"/>
344 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
345 <parameter name='execute_failure' value='true' />
346 </return></block></outcome><outcome value='success'>
347 <save plugin="org.openecomp.sdnc.sli.aai.AAIService"
348 resource="l3-network:relationship-list"
349 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
350 <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
351 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
352 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" /><outcome value='failure'>
354 <parameter name="error-code" value="500"/>
355 <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`"/></set><return status='success'>
356 <parameter name='execute_failure' value='true' />
357 </return></block></outcome><outcome value='not-found'>
358 </outcome><outcome value='success'>
360 <parameter name='tmp.network-policy.updated' value='1' />
361 </set></outcome></save></outcome></get-resource></outcome></switch></for></block></outcome></switch></block></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
362 <block atomic='true'><delete plugin="org.openecomp.sdnc.sli.aai.AAIService"
363 resource="l3-network:relationship-list"
364 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
365 AND related-to = route-table-reference" ><outcome value='failure'>
368 <parameter name="error-code" value="500"/>
369 <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."/></set><return status='success'>
370 <parameter name='execute_failure' value='true' />
371 </return></block></outcome></delete><switch test="`$execute_failure`"><outcome value='false'>
372 <block atomic='true'><switch test="`$preload-data.network-topology-information.route-table-reference_length`"><outcome value=''><set>
373 <parameter name='preload-data.network-topology-information.route-table-reference_length' value='0' />
374 </set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.route-table-reference_length`">
375 <switch test="`$preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`"><outcome value='true'>
376 <get-resource plugin="org.openecomp.sdnc.sli.aai.AAIService"
377 resource="route-table-reference"
378 key="route-table-reference.route-table-reference-fqdn = $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn"
379 pfx="tmp.AnAI.route-table-reference"><outcome value='not-found'>
381 <parameter name="error-code" value="500"/>
382 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
383 <parameter name='execute_failure' value='true' />
384 </return></block></outcome><outcome value='failure'>
386 <parameter name="error-code" value="500"/>
387 <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
388 <parameter name='execute_failure' value='true' />
389 </return></block></outcome><outcome value='success'>
390 <save plugin="org.openecomp.sdnc.sli.aai.AAIService"
391 resource="l3-network:relationship-list"
392 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
393 <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
394 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
395 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" /><outcome value='failure'>
397 <parameter name="error-code" value="500"/>
398 <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`"/></set><return status='success'>
399 <parameter name='execute_failure' value='true' />
400 </return></block></outcome><outcome value='not-found'>
401 </outcome><outcome value='success'>
403 <parameter name='tmp.route-table-reference.updated' value='1' />
404 </set></outcome></save></outcome></get-resource></outcome></switch></for></block></outcome></switch></block></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
405 <switch test="`$tmp.l3networkUpdate == 1`">
406 <outcome value='true'>
407 <update plugin="org.openecomp.sdnc.sli.aai.AAIService"
408 resource="l3-network"
409 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
410 <parameter name="orchestration-status" value="pending-update" /><outcome value='failure'>
412 <parameter name="error-code" value="500"/>
413 <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/></set><return status='success'>
414 <parameter name='execute_failure' value='true' />
415 </return></block></outcome><outcome value='not-found'>
417 <parameter name="error-code" value="500"/>
418 <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/></set><return status='success'>
419 <parameter name='execute_failure' value='true' />
420 </return></block></outcome><outcome value='success'>
422 <parameter name='tmp.l3network.status.updated' value='1' />
423 </set></outcome></update></outcome></switch></outcome></switch><switch test="`$execute_failure`"><outcome value="true"><block atomic='true'><for index="z" start="0" end="`$tmp.AnAI.l3network.relationship-list.relationship_length`">
424 <switch test="`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`"><outcome value='vpn-binding'>
425 <switch test="`$tmp.vpn-binding.updated == 1`"><outcome value='true'>
426 <save plugin="org.openecomp.sdnc.sli.aai.AAIService"
427 resource="l3-network:relationship-list"
428 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
429 <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
430 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
431 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" /><outcome value='failure'>
433 <parameter name="error-code" value="500"/>
434 <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.'`"/></set></outcome><outcome value='not-found'>
436 <parameter name="error-code" value="500"/>
437 <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.'`"/></set></outcome></save></outcome></switch></outcome><outcome value='network-policy'>
438 <switch test="`$tmp.network-policy.updated == 1`"><outcome value='true'>
439 <save plugin="org.openecomp.sdnc.sli.aai.AAIService"
440 resource="l3-network:relationship-list"
441 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
442 <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
443 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
444 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" /><outcome value='failure'>
446 <parameter name="error-code" value="500"/>
447 <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.'`"/></set></outcome><outcome value='not-found'>
449 <parameter name="error-code" value="500"/>
450 <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.'`"/></set></outcome></save></outcome></switch></outcome><outcome value='route-table-reference'>
451 <switch test="`$tmp.route-table-reference.updated == 1`"><outcome value='true'>
452 <save plugin="org.openecomp.sdnc.sli.aai.AAIService"
453 resource="l3-network:relationship-list"
454 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
455 <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
456 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
457 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" /><outcome value='failure'>
459 <parameter name="error-code" value="500"/>
460 <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.'`"/></set></outcome><outcome value='not-found'>
462 <parameter name="error-code" value="500"/>
463 <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.'`"/></set></outcome></save></outcome></switch></outcome></switch></for><for index="j" start="0" end="`$x`">
464 <block atomic='true'><set>
465 <parameter name="tmp.rollback.match" value="0"/></set><for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
466 <switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`"><outcome value='true'>
467 <block atomic='true'><switch test="`$tmp.subnetRollback[$j].type`"><outcome value='delete'>
468 <update plugin="org.openecomp.sdnc.sli.aai.AAIService"
470 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
471 AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >
472 <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />
473 <outcome value='not-found'>
475 <parameter name="error-code" value="500"/>
476 <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.'`"/></set></outcome><outcome value='failure'>
478 <parameter name="error-code" value="500"/>
479 <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.'`"/></set></outcome></update></outcome><outcome value='update'>
480 <update plugin="org.openecomp.sdnc.sli.aai.AAIService"
482 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
483 AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id" >
484 <parameter name="subnet-name" value="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`"/>
485 <parameter name="gateway-address" value="`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`"/>
486 <parameter name="cidr-mask" value="`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`"/>
487 <parameter name="dhcp-start" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`"/>
488 <parameter name="dhcp-end" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`"/>
489 <parameter name="dhcp-enabled" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`"/>
490 <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />
491 <outcome value='failure'>
493 <parameter name="error-code" value="500"/>
494 <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.'`"/></set></outcome><outcome value='not-found'>
496 <parameter name="error-code" value="500"/>
497 <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.'`"/></set></outcome></update></outcome></switch><set>
498 <parameter name="tmp.rollback.match" value="1"/></set></block></outcome></switch></for><switch test="`$tmp.rollback.match == 0`"><outcome value='true'>
499 <switch test="`$tmp.subnetRollback[$j].type`"><outcome value='create'>
500 <delete plugin="org.openecomp.sdnc.sli.aai.AAIService"
502 key="l3-network.network-id = $tmp.AnAI.l3network.network-id
503 AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" ><outcome value='failure'>
505 <parameter name="error-code" value="500"/>
506 <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.'`"/></set></outcome><outcome value='not-found'>
508 <parameter name="error-code" value="500"/>
509 <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.'`"/></set></outcome></delete></outcome></switch></outcome></switch></block></for><switch test="`$tmp.l3network.status.updated == 1`">
510 <outcome value='true'>
511 <update plugin="org.openecomp.sdnc.sli.aai.AAIService"
512 resource="l3-network"
513 key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
514 <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.orchestration-status`" /><outcome value='failure'>
516 <parameter name="error-code" value="500"/>
517 <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.'`"/></set></outcome><outcome value='not-found'>
519 <parameter name="error-code" value="500"/>
520 <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.'`"/></set></outcome></update></outcome></switch><return status='failure'>
521 <parameter name='error-code' value='500'/>
522 <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`"/></return></block></outcome></switch><set>
523 <parameter name="ack-final" value="Y"/></set><return status="success">
524 <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id`" />
525 <parameter name="error-code" value="200" /></return></block></method></service-logic>