5260147912abdc46d8e9c008cf9fd50e3d23dd2d
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vf-module-topology-operation-assign-sync.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='vf-module-topology-operation-assign-sync' mode='sync'>\r
5         <block atomic="true">\r
6             <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
7                 <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
8                 <parameter name='contextPrefix' value='prop' />\r
9             </execute>\r
10             <switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>\r
11                 <outcome value=''>\r
12                     <block></block>\r
13                 </outcome>\r
14                 <outcome value='Other'>\r
15                     <set>\r
16                         <parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />\r
17                     </set>\r
18                 </outcome>\r
19             </switch>\r
20             <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
21                 <outcome value='CreateVfModuleInstance'>\r
22                     <block></block>\r
23                 </outcome>\r
24                 <outcome value='Other'>\r
25                     <return status='failure'>\r
26                         <parameter name='ack-final' value='Y'/>\r
27                         <parameter name="error-code" value="500" />\r
28                         <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVfModuleInstance'" />\r
29                     </return>\r
30                 </outcome>\r
31             </switch>\r
32             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
33   key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\r
34   pfx='db.vf-module-model'>\r
35                 <outcome value='failure'>\r
36                     <return status='failure'>\r
37                         <parameter name='ack-final' value='Y'/>\r
38                         <parameter name="error-code" value="500" />\r
39                         <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />\r
40                     </return>\r
41                 </outcome>\r
42                 <outcome value='not-found'>\r
43                     <return status='failure'>\r
44                         <parameter name='ack-final' value='Y'/>\r
45                         <parameter name="error-code" value="500" />\r
46                         <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />\r
47                     </return>\r
48                 </outcome>\r
49             </get-resource>\r
50             <set>\r
51                 <parameter name='vnf-index' value='-1' />\r
52             </set>\r
53             <switch test='`$service-data.vnfs.vnf_length`'>\r
54                 <outcome value=''>\r
55                     <return status='failure'>\r
56                         <parameter name='ack-final' value='Y'/>\r
57                         <parameter name="error-code" value="500" />\r
58                         <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />\r
59                     </return>\r
60                 </outcome>\r
61                 <outcome value='Other'>\r
62                     <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
63                         <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\r
64                             <outcome value='true'>\r
65                                 <block>\r
66                                     <set>\r
67                                         <parameter name='vnf-index' value='`$idx`' />\r
68                                     </set>\r
69                                     <break/>\r
70                                 </block>\r
71                             </outcome>\r
72                         </switch>\r
73                     </for>\r
74                 </outcome>\r
75             </switch>\r
76             <switch test='`$vnf-index`'>\r
77                 <outcome value='-1'>\r
78                     <return status='failure'>\r
79                         <parameter name='ack-final' value='Y'/>\r
80                         <parameter name="error-code" value="500" />\r
81                         <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />\r
82                     </return>\r
83                 </outcome>\r
84             </switch>\r
85             <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>\r
86             <switch test="`$ss.self-serve-flag`">\r
87                 <outcome value='true'>\r
88                     <block atomic="true">\r
89                         <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-assign' mode='sync' >\r
90                             <outcome value='failure'>\r
91                                 <return status='failure'>\r
92                                     <parameter name='ack-final' value='Y'/>\r
93                                     <parameter name="error-code" value="500" />\r
94                                     <parameter name="error-message" value="`'Failed to create self-serve assignment for vf-module with vf-module-id=' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' with error: ' + $error-message`" />\r
95                                 </return>\r
96                             </outcome>\r
97                         </call>\r
98                         <set>\r
99                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\r
100   value='PendingCreate' />\r
101                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\r
102   value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\r
103                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'\r
104   value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\r
105                         </set>\r
106                         <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
107                             <parameter name='filename' value='/var/tmp/ss-vnfend.log' />\r
108                         </execute>\r
109                         <return status='success'>\r
110                             <parameter name="ack-final-indicator" value="Y" />\r
111                             <parameter name="error-code" value="200" />\r
112                             <parameter name="error-message" value="`$error-message`" />\r
113                         </return>\r
114                     </block>\r
115                 </outcome>\r
116                 <outcome value='false'>\r
117                     <block atomic="true">\r
118                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
119                             <outcome value=''>\r
120                                 <set>\r
121                                     <parameter name='vf-module-index' value='0' />\r
122                                 </set>\r
123                             </outcome>\r
124                             <outcome value='Other'>\r
125                                 <block>\r
126                                     <set>\r
127                                         <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\r
128                                     </set>\r
129                                     <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
130                                         <switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>\r
131                                             <outcome value='true'>\r
132                                                 <return status='failure'>\r
133                                                     <parameter name='ack-final' value='Y'/>\r
134                                                     <parameter name="error-code" value="500" />\r
135                                                     <parameter name="error-message" value="`'VF module id ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id\r
136        + ' already exists, and status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-level-oper-status.order-status`" />\r
137                                                 </return>\r
138                                             </outcome>\r
139                                         </switch>\r
140                                     </for>\r
141                                 </block>\r
142                             </outcome>\r
143                         </switch>\r
144                         <set>\r
145                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />\r
146                         </set>\r
147                         <set>\r
148                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'\r
149    value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\r
150                         </set>\r
151                         <set>\r
152                             <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\r
153                             <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />\r
154                             <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-type' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />\r
155                             <parameter name='tmp.vf-module-topology.tenant' value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />\r
156                             <parameter name='tmp.vf-module-topology.aic-cloud-region' value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />\r
157                         </set>\r
158                         <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
159                 resource="cloud-region" \r
160                 key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \r
161                      cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region"\r
162         pfx='aai.cloud-region' local-only='false' >\r
163                             <outcome value='not-found'>\r
164                                 <return status='failure'>\r
165                                     <parameter name='ack-final' value='Y'/>\r
166                                     <parameter name="error-code" value="500" />\r
167                                     <parameter name="error-message" value="Cloud region not found in AAI" />\r
168                                 </return>\r
169                             </outcome>\r
170                             <outcome value='failure'>\r
171                                 <return status='failure'>\r
172                                     <parameter name='ack-final' value='Y'/>\r
173                                     <parameter name="error-code" value="500" />\r
174                                     <parameter name="error-message" value="Error retrieving cloud region from AAI" />\r
175                                 </return>\r
176                             </outcome>\r
177                         </get-resource>\r
178                         <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\r
179                             <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\r
180                                 <outcome value='complex'>\r
181                                     <block atomic="true">\r
182                                         <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\r
183                                             <parameter name='ctx_memory_result_key' value='aai-uid-split' />\r
184                                             <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\r
185                                             <parameter name='regex' value='/' />\r
186                                         </execute>\r
187                                         <set>\r
188                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'\r
189    value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\r
190                                         </set>\r
191                                         <break/>\r
192                                     </block>\r
193                                 </outcome>\r
194                             </switch>\r
195                         </for>\r
196                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli`'>\r
197                             <outcome value=''>\r
198                                 <return status='failure'>\r
199                                     <parameter name='ack-final' value='Y'/>\r
200                                     <parameter name="error-code" value="500" />\r
201                                     <parameter name="error-message" value="`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`" />\r
202                                 </return>\r
203                             </outcome>\r
204                         </switch>\r
205                         <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>\r
206                             <outcome value=''>\r
207                                 <set>\r
208                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'\r
209   value='`$db.vf-module-model.invariant-uuid`' />\r
210                                 </set>\r
211                             </outcome>\r
212                             <outcome value='Other'>\r
213                                 <set>\r
214                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'\r
215   value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\r
216                                 </set>\r
217                             </outcome>\r
218                         </switch>\r
219                         <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>\r
220                             <outcome value=''>\r
221                                 <set>\r
222                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'\r
223   value='`$db.vf-module-model.uuid`' />\r
224                                 </set>\r
225                             </outcome>\r
226                             <outcome value='Other'>\r
227                                 <set>\r
228                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'\r
229   value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />\r
230                                 </set>\r
231                             </outcome>\r
232                         </switch>\r
233                         <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>\r
234                             <outcome value=''>\r
235                                 <set>\r
236                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-version'\r
237   value='`$db.vf-module-model.version`' />\r
238                                 </set>\r
239                             </outcome>\r
240                             <outcome value='Other'>\r
241                                 <set>\r
242                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-version'\r
243   value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\r
244                                 </set>\r
245                             </outcome>\r
246                         </switch>\r
247                         <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>\r
248                             <outcome value=''>\r
249                                 <set>\r
250                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-name'\r
251   value='`$db.vf-module-model.name`' />\r
252                                 </set>\r
253                             </outcome>\r
254                             <outcome value='Other'>\r
255                                 <set>\r
256                                     <parameter name='tmp.vf-module-topology.onap-model-information.model-name'\r
257   value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />\r
258                                 </set>\r
259                             </outcome>\r
260                         </switch>\r
261                         <set>\r
262                             <parameter name='tmp.vf-module-topology.onap-model-information.model-customization-uuid'\r
263   value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\r
264                         </set>\r
265                         <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`'>\r
266                             <outcome value=''>\r
267                                 <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >\r
268                                     <outcome value='failure'>\r
269                                         <block atomic="true">\r
270                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
271                                             <return status='failure'></return>\r
272                                         </block>\r
273                                     </outcome>\r
274                                 </call>\r
275                             </outcome>\r
276                             <outcome value='Other'>\r
277                                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
278                                     <parameter name='restapiUrl' value="`$prop.controller.url + $prop.restapi.preloadinformation + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name + '/vf-module'`" />\r
279                                     <parameter name='restapiUser' value='`$prop.controller.user`' />\r
280                                     <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\r
281                                     <parameter name='format' value='json' />\r
282                                     <parameter name='httpMethod' value='GET' />\r
283                                     <parameter name="responsePrefix" value="mdsal-preload" />\r
284                                     <outcome value='failure'>\r
285                                         <block>\r
286                                             <switch test='`$mdsal-preload.response-code`'>\r
287                                                 <outcome value='404'>\r
288                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >\r
289                                                         <outcome value='failure'>\r
290                                                             <block atomic="true">\r
291                                                                 <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
292                                                                 <return status='failure'></return>\r
293                                                             </block>\r
294                                                         </outcome>\r
295                                                     </call>\r
296                                                 </outcome>\r
297                                                 <outcome value='Other'>\r
298                                                     <block atomic="true">\r
299                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
300                                                         <return status='failure'>\r
301                                                             <parameter name='ack-final' value='Y'/>\r
302                                                             <parameter name="error-code" value="500" />\r
303                                                             <parameter name="error-message" value="Error retrieving preload-information" />\r
304                                                         </return>\r
305                                                     </block>\r
306                                                 </outcome>\r
307                                             </switch>\r
308                                         </block>\r
309                                     </outcome>\r
310                                     <outcome value='success'>\r
311                                         <block>\r
312                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-preload' mode='sync' >\r
313                                                 <outcome value='failure'>\r
314                                                     <block atomic="true">\r
315                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
316                                                         <return status='failure'></return>\r
317                                                     </block>\r
318                                                 </outcome>\r
319                                             </call>\r
320                                         </block>\r
321                                     </outcome>\r
322                                 </execute>\r
323                             </outcome>\r
324                         </switch>\r
325                         <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
326                             <parameter name='filename' value='/var/tmp/bgb-vfmoduleb.log' />\r
327                         </execute>\r
328                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>\r
329                             <outcome value='false'>\r
330                                 <set>\r
331                                     <parameter name='automated-assignment' value='true' />\r
332                                 </set>\r
333                             </outcome>\r
334                             <outcome value='true'>\r
335                                 <set>\r
336                                     <parameter name='automated-assignment' value='false' />\r
337                                 </set>\r
338                             </outcome>\r
339                         </switch>\r
340                         <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
341                             <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\r
342                                 <for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\r
343                                     <block atomic="true">\r
344                                         <set>\r
345                                             <parameter name='vnf-network-index' value='-1' />\r
346                                         </set>\r
347                                         <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\r
348                                             <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role\r
349   == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-role`'>\r
350                                                 <outcome value='true'>\r
351                                                     <block atomic="true">\r
352                                                         <set>\r
353                                                             <parameter name='vnf-network-index' value='`$idx`' />\r
354                                                         </set>\r
355                                                         <set>\r
356                                                             <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].network-id'\r
357   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-id`' />\r
358                                                         </set>\r
359                                                         <break/>\r
360                                                     </block>\r
361                                                 </outcome>\r
362                                             </switch>\r
363                                         </for>\r
364                                         <switch test='`$vnf-network-index`'>\r
365                                             <outcome value='-1'>\r
366                                                 <block atomic="true">\r
367                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
368                                                     <return status='failure'>\r
369                                                         <parameter name='ack-final' value='Y'/>\r
370                                                         <parameter name="error-code" value="500" />\r
371                                                         <parameter name="error-message" value="`'VNFC network role '\r
372       + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role\r
373       + ' is not found in VNF network list'\r
374       `" />\r
375                                                     </return>\r
376                                                 </block>\r
377                                             </outcome>\r
378                                         </switch>\r
379                                         <for index='subnet-role-index' start='0'\r
380   end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >\r
381                                             <for index='address-family-index' start='0'\r
382   end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >\r
383                                                 <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`'>\r
384                                                     <outcome value=''>\r
385                                                         <block></block>\r
386                                                     </outcome>\r
387                                                     <outcome value='0'>\r
388                                                         <block></block>\r
389                                                     </outcome>\r
390                                                     <outcome value='Other'>\r
391                                                         <block atomic="true">\r
392                                                             <set>\r
393                                                                 <parameter name='tmp.address-family'\r
394   value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />\r
395                                                             </set>\r
396                                                             <block atomic="true">\r
397                                                                 <set>\r
398                                                                     <parameter name='af-count' value='0' />\r
399                                                                 </set>\r
400                                                                 <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >\r
401                                                                     <switch test='`$tmp.address-family\r
402   == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>\r
403                                                                         <outcome value='true'>\r
404                                                                             <block atomic="true">\r
405                                                                                 <set>\r
406                                                                                     <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />\r
407                                                                                 </set>\r
408                                                                                 <set>\r
409                                                                                     <parameter name='af-count' value='`$af-count + 1`' />\r
410                                                                                 </set>\r
411                                                                             </block>\r
412                                                                         </outcome>\r
413                                                                     </switch>\r
414                                                                 </for>\r
415                                                                 <switch test='`$af-count`'>\r
416                                                                     <outcome value='1'>\r
417                                                                         <set>\r
418                                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id'\r
419   value='`$subnet-id`' />\r
420                                                                         </set>\r
421                                                                     </outcome>\r
422                                                                     <outcome value='Other'>\r
423                                                                         <block atomic="true">\r
424                                                                             <set>\r
425                                                                                 <parameter name='subnet-id' value='-1' />\r
426                                                                             </set>\r
427                                                                             <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >\r
428                                                                                 <switch test='`$tmp.address-family\r
429   == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>\r
430                                                                                     <outcome value='true'>\r
431                                                                                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`'>\r
432                                                                                             <outcome value=''>\r
433                                                                                                 <block atomic="true">\r
434                                                                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
435                                                                                                     <return status='failure'>\r
436                                                                                                         <parameter name='ack-final' value='Y'/>\r
437                                                                                                         <parameter name="error-code" value="500" />\r
438                                                                                                         <parameter name="error-message" value="`'SDNC subnet id '\r
439       + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id\r
440       + ' does not have network-start-address populated'`" />\r
441                                                                                                     </return>\r
442                                                                                                 </block>\r
443                                                                                             </outcome>\r
444                                                                                             <outcome value='Other'>\r
445                                                                                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`'>\r
446                                                                                                     <outcome value=''>\r
447                                                                                                         <block atomic="true">\r
448                                                                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
449                                                                                                             <return status='failure'>\r
450                                                                                                                 <parameter name='ack-final' value='Y'/>\r
451                                                                                                                 <parameter name="error-code" value="500" />\r
452                                                                                                                 <parameter name="error-message" value="`'SDNC subnet id '\r
453       + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id\r
454       + ' does not have cidr-mask populated'`" />\r
455                                                                                                             </return>\r
456                                                                                                         </block>\r
457                                                                                                     </outcome>\r
458                                                                                                     <outcome value='Other'>\r
459                                                                                                         <block atomic="true">\r
460                                                                                                             <switch test='`$tmp.address-family`'>\r
461                                                                                                                 <outcome value='ipv4'>\r
462                                                                                                                     <set>\r
463                                                                                                                         <parameter name='ip-type' value='IPv4' />\r
464                                                                                                                     </set>\r
465                                                                                                                 </outcome>\r
466                                                                                                                 <outcome value='ipv6'>\r
467                                                                                                                     <set>\r
468                                                                                                                         <parameter name='ip-type' value='IPv6' />\r
469                                                                                                                     </set>\r
470                                                                                                                 </outcome>\r
471                                                                                                             </switch>\r
472                                                                                                             <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="isInSameSubnet">\r
473                                                                                                                 <parameter name="firstIPAddr" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`" />\r
474                                                                                                                 <parameter name="secondIPAddr" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address`" />\r
475                                                                                                                 <parameter name="subnet" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`" />\r
476                                                                                                                 <parameter name="ipType" value="`$ip-type`" />\r
477                                                                                                                 <outcome value='success'>\r
478                                                                                                                     <block atomic="true">\r
479                                                                                                                         <set>\r
480                                                                                                                             <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />\r
481                                                                                                                         </set>\r
482                                                                                                                         <break/>\r
483                                                                                                                     </block>\r
484                                                                                                                 </outcome>\r
485                                                                                                             </execute>\r
486                                                                                                         </block>\r
487                                                                                                     </outcome>\r
488                                                                                                 </switch>\r
489                                                                                             </outcome>\r
490                                                                                         </switch>\r
491                                                                                     </outcome>\r
492                                                                                 </switch>\r
493                                                                             </for>\r
494                                                                             <switch test='`$subnet-id`'>\r
495                                                                                 <outcome value='-1'>\r
496                                                                                     <block atomic="true">\r
497                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
498                                                                                         <return status='failure'>\r
499                                                                                             <parameter name='ack-final' value='Y'/>\r
500                                                                                             <parameter name="error-code" value="500" />\r
501                                                                                             <parameter name="error-message" value="`'Not able to find VNF network subnet that contains address '\r
502       + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address\r
503       `" />\r
504                                                                                         </return>\r
505                                                                                     </block>\r
506                                                                                 </outcome>\r
507                                                                             </switch>\r
508                                                                             <set>\r
509                                                                                 <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id' value='`$subnet-id`' />\r
510                                                                             </set>\r
511                                                                         </block>\r
512                                                                     </outcome>\r
513                                                                 </switch>\r
514                                                             </block>\r
515                                                         </block>\r
516                                                     </outcome>\r
517                                                 </switch>\r
518                                             </for>\r
519                                         </for>\r
520                                     </block>\r
521                                 </for>\r
522                             </for>\r
523                         </for>\r
524                         <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
525                             <parameter name='filename' value='/var/tmp/bgb-vfmodulec.log' />\r
526                         </execute>\r
527                         <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
528                             <block atomic="true">\r
529                                 <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\r
530                                     <block atomic="true">\r
531                                         <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
532   key='SELECT * from VFC_RELATED_NETWORK_ROLE where vfc_customization_uuid = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid\r
533     and network_role = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'\r
534   pfx='db.vnf-related-network-role[]'>\r
535                                             <outcome value='failure'>\r
536                                                 <block>\r
537                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
538                                                     <return status='failure'>\r
539                                                         <parameter name='ack-final' value='Y'/>\r
540                                                         <parameter name="error-code" value="500" />\r
541                                                         <parameter name="error-message" value="Error reading VFC_RELATED_NETWORK_ROLE table" />\r
542                                                     </return>\r
543                                                 </block>\r
544                                             </outcome>\r
545                                             <outcome value='success'>\r
546                                                 <for index='db-related-network-index' start='0' end='`$db.vnf-related-network-role_length`' >\r
547                                                     <block atomic="true">\r
548                                                         <set>\r
549                                                             <parameter name='found-related-network' value='false' />\r
550                                                         </set>\r
551                                                         <for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\r
552                                                             <block atomic="true">\r
553                                                                 <for silentFailure='true' index='related-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network_length`' >\r
554                                                                     <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network[$related-network-index].network-role\r
555   == $db.vnf-related-network-role[$db-related-network-index].related-network-role`'>\r
556                                                                         <outcome value='true'>\r
557                                                                             <block atomic="true">\r
558                                                                                 <set>\r
559                                                                                     <parameter name='found-related-network' value='true' />\r
560                                                                                 </set>\r
561                                                                                 <set>\r
562                                                                                     <parameter name='saved-vnf-network-index' value='`$vnf-network-index`' />\r
563                                                                                     <parameter name='saved-related-network-index' value='`$related-network-index`' />\r
564                                                                                 </set>\r
565                                                                                 <break/>\r
566                                                                             </block>\r
567                                                                         </outcome>\r
568                                                                     </switch>\r
569                                                                 </for>\r
570                                                                 <switch test='`$found-related-network`'>\r
571                                                                     <outcome value='true'>\r
572                                                                         <break/>\r
573                                                                     </outcome>\r
574                                                                 </switch>\r
575                                                             </block>\r
576                                                         </for>\r
577                                                         <switch test='`$found-related-network`'>\r
578                                                             <outcome value='false'>\r
579                                                                 <block>\r
580                                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
581                                                                     <return status='failure'>\r
582                                                                         <parameter name='ack-final' value='Y'/>\r
583                                                                         <parameter name="error-code" value="500" />\r
584                                                                         <parameter name="error-message" value="`'Unable to find related network '\r
585       + $db.vnf-related-network-role[$db-related-network-index].related-network-role + ' in vnf-networks'`" />\r
586                                                                     </return>\r
587                                                                 </block>\r
588                                                             </outcome>\r
589                                                         </switch>\r
590                                                         <set>\r
591                                                             <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].is-trunked'\r
592   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].is-trunked`' />\r
593                                                             <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id'\r
594   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].segmentation-id`' />\r
595                                                         </set>\r
596                                                         <set>\r
597                                                             <parameter name='rn-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' />\r
598                                                         </set>\r
599                                                         <switch test='`$rn-index`'>\r
600                                                             <outcome value=''>\r
601                                                                 <set>\r
602                                                                     <parameter name='rn-index' value='0' />\r
603                                                                 </set>\r
604                                                             </outcome>\r
605                                                         </switch>\r
606                                                         <set>\r
607                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-id'\r
608   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-id`' />\r
609                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-role'\r
610   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-role`' />\r
611                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'\r
612   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.vlan-interface`' />\r
613                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'\r
614   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.lower-tag-id`' />\r
615                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'\r
616   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.upper-tag-id`' />\r
617                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.is-private'\r
618   value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.is-private`' />\r
619                                                         </set>\r
620                                                         <set>\r
621                                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length'\r
622   value='`$rn-index + 1`' />\r
623                                                         </set>\r
624                                                     </block>\r
625                                                 </for>\r
626                                             </outcome>\r
627                                         </get-resource>\r
628                                     </block>\r
629                                 </for>\r
630                             </block>\r
631                         </for>\r
632                         <set>\r
633                             <parameter name='vf-module-object-path'\r
634  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
635  + $vf-module-topology-operation-input.service-information.service-instance-id\r
636  + '/service-data/vnfs/vnf/'\r
637  + $service-data.vnfs.vnf[$vnf-index].vnf-id\r
638  + '/vnf-data/vf-modules/vf-module/'\r
639  + $vf-module-topology-operation-input.vf-module-information.vf-module-id\r
640  + '/vf-module-data/vf-module-topology/'`"/>\r
641                             <parameter name='vnf-object-path'\r
642  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
643  + $vf-module-topology-operation-input.service-information.service-instance-id\r
644  + '/service-data/vnfs/vnf/'\r
645  + $service-data.vnfs.vnf[$vnf-index].vnf-id\r
646  + '/vnf-data/vnf-topology/'`"/>\r
647                             <parameter name='service-object-path'\r
648  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
649  + $vf-module-topology-operation-input.service-information.service-instance-id\r
650  + '/service-data/service-topology/'`"/>\r
651                         </set>\r
652                         <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
653    resource="vf-module"\r
654    key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\r
655       AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
656    force="true" pfx="tmp.AnAI-data">\r
657                             <parameter name="vf-module-name" value="`$tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name`" />\r
658                             <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.onap-model-information.model-invariant-uuid`" />\r
659                             <parameter name="model-version-id" value="`$tmp.vf-module-topology.onap-model-information.model-uuid`" />\r
660                             <parameter name="model-customization-id" value="`$tmp.vf-module-topology.onap-model-information.model-customization-uuid`" />\r
661                             <parameter name="selflink" value="`$vf-module-object-path`" />\r
662                             <parameter name="automated-assignment" value="`$automated-assignment`" />\r
663                             <outcome value='failure'>\r
664                                 <block atomic="true">\r
665                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
666                                     <return status='failure'>\r
667                                         <parameter name='ack-final' value='Y'/>\r
668                                         <parameter name="error-code" value="500" />\r
669                                         <parameter name="error-message" value="Error updating vf-module in AAI" />\r
670                                     </return>\r
671                                 </block>\r
672                             </outcome>\r
673                             <outcome value='not-found'>\r
674                                 <block atomic="true">\r
675                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
676                                     <return status='failure'>\r
677                                         <parameter name='ack-final' value='Y'/>\r
678                                         <parameter name="error-code" value="500" />\r
679                                         <parameter name="error-message" value="`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />\r
680                                     </return>\r
681                                 </block>\r
682                             </outcome>\r
683                         </update>\r
684                         <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
685                             <block atomic="true">\r
686                                 <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\r
687                                     <block atomic="true">\r
688                                         <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`'>\r
689                                             <outcome value=''>\r
690                                                 <set>\r
691                                                     <parameter name='tmp.nfc-naming-code' value='DEFAULT' />\r
692                                                 </set>\r
693                                             </outcome>\r
694                                             <outcome value='Other'>\r
695                                                 <set>\r
696                                                     <parameter name='tmp.nfc-naming-code' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`' />\r
697                                                 </set>\r
698                                             </outcome>\r
699                                         </switch>\r
700                                         <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`'>\r
701                                             <outcome value=''>\r
702                                                 <set>\r
703                                                     <parameter name='tmp.nfc-function' value='DEFAULT' />\r
704                                                 </set>\r
705                                             </outcome>\r
706                                             <outcome value='Other'>\r
707                                                 <set>\r
708                                                     <parameter name='tmp.nfc-function' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`' />\r
709                                                 </set>\r
710                                             </outcome>\r
711                                         </switch>\r
712                                         <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`'>\r
713                                             <outcome value=''>\r
714                                                 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
715         resource="vnfc" \r
716         key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >\r
717                                                     <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />\r
718                                                     <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />\r
719                                                     <parameter name="nfc-function" value="`$tmp.nfc-function`" />\r
720                                                     <parameter name="orchestration-status" value="`PendingCreate`" />\r
721                                                     <parameter name="in-maint" value="true" />\r
722                                                     <parameter name="prov-status" value="`PREPROV`" />\r
723                                                     <outcome value='failure'>\r
724                                                         <block atomic="true">\r
725                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
726                                                             <return status='failure'>\r
727                                                                 <parameter name='ack-final' value='Y'/>\r
728                                                                 <parameter name="error-code" value="500" />\r
729                                                                 <parameter name="error-message" value="Error saving vnfc to AAI" />\r
730                                                             </return>\r
731                                                         </block>\r
732                                                     </outcome>\r
733                                                     <outcome value='not-found'>\r
734                                                         <block atomic="true">\r
735                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
736                                                             <return status='failure'>\r
737                                                                 <parameter name='ack-final' value='Y'/>\r
738                                                                 <parameter name="error-code" value="500" />\r
739                                                                 <parameter name="error-message" value="Error saving vnfc to AAI" />\r
740                                                             </return>\r
741                                                         </block>\r
742                                                     </outcome>\r
743                                                 </save>\r
744                                             </outcome>\r
745                                             <outcome value='Other'>\r
746                                                 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
747         resource="vnfc" \r
748         key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >\r
749                                                     <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />\r
750                                                     <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />\r
751                                                     <parameter name="nfc-function" value="`$tmp.nfc-function`" />\r
752                                                     <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`" />\r
753                                                     <parameter name="model-version-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid`" />\r
754                                                     <parameter name="model-customization-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid`" />\r
755                                                     <parameter name="orchestration-status" value="`PendingCreate`" />\r
756                                                     <parameter name="in-maint" value="true" />\r
757                                                     <parameter name="prov-status" value="`PREPROV`" />\r
758                                                     <outcome value='failure'>\r
759                                                         <block atomic="true">\r
760                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
761                                                             <return status='failure'>\r
762                                                                 <parameter name='ack-final' value='Y'/>\r
763                                                                 <parameter name="error-code" value="500" />\r
764                                                                 <parameter name="error-message" value="Error saving vnfc to AAI" />\r
765                                                             </return>\r
766                                                         </block>\r
767                                                     </outcome>\r
768                                                     <outcome value='not-found'>\r
769                                                         <block atomic="true">\r
770                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
771                                                             <return status='failure'>\r
772                                                                 <parameter name='ack-final' value='Y'/>\r
773                                                                 <parameter name="error-code" value="500" />\r
774                                                                 <parameter name="error-message" value="Error saving vnfc to AAI" />\r
775                                                             </return>\r
776                                                         </block>\r
777                                                     </outcome>\r
778                                                 </save>\r
779                                             </outcome>\r
780                                         </switch>\r
781                                         <set>\r
782                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag' value='true' />\r
783                                         </set>\r
784                                         <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
785    resource="vnfc:relationship-list"\r
786    key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"\r
787    force="true" pfx="tmp.AnAI-data">\r
788                                             <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />\r
789                                             <parameter name="relationship-list.relationship[0].related-link"\r
790       value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +\r
791         $vf-module-topology-operation-input.vnf-information.vnf-id`" />\r
792                                             <parameter name="relationship-list.relationship[1].related-to" value="vf-module" />\r
793                                             <parameter name="relationship-list.relationship[1].related-link"\r
794       value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +\r
795         $vf-module-topology-operation-input.vnf-information.vnf-id +\r
796         '/vf-modules/vf-module/' +\r
797         $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />\r
798                                             <outcome value='failure'>\r
799                                                 <block atomic="true">\r
800                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
801                                                     <return status='failure'>\r
802                                                         <parameter name='ack-final' value='Y'/>\r
803                                                         <parameter name="error-code" value="500" />\r
804                                                         <parameter name="error-message" value="Error updating vnfc relationships in AAI" />\r
805                                                     </return>\r
806                                                 </block>\r
807                                             </outcome>\r
808                                             <outcome value='not-found'>\r
809                                                 <block atomic="true">\r
810                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
811                                                     <return status='failure'>\r
812                                                         <parameter name='ack-final' value='Y'/>\r
813                                                         <parameter name="error-code" value="500" />\r
814                                                         <parameter name="error-message" value="Not-found error updating vnfc relationships" />\r
815                                                     </return>\r
816                                                 </block>\r
817                                             </outcome>\r
818                                         </save>\r
819                                         <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\r
820                                             <block atomic="true">\r
821                                                 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >\r
822                                                     <parameter name="ctx-destination" value="cp-instance-id" />\r
823                                                 </execute>\r
824                                                 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
825         resource="cp" \r
826         key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
827           AND cp.cp-instance-id = $cp-instance-id" >\r
828                                                     <parameter name="cp-instance-id" value="`$cp-instance-id`" />\r
829                                                     <parameter name="port-id" value="0" />\r
830                                                     <outcome value='failure'>\r
831                                                         <block atomic="true">\r
832                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
833                                                             <return status='failure'>\r
834                                                                 <parameter name='ack-final' value='Y'/>\r
835                                                                 <parameter name="error-code" value="500" />\r
836                                                                 <parameter name="error-message" value="Error creating cp object in AAI" />\r
837                                                             </return>\r
838                                                         </block>\r
839                                                     </outcome>\r
840                                                     <outcome value='not-found'>\r
841                                                         <block atomic="true">\r
842                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
843                                                             <return status='failure'>\r
844                                                                 <parameter name='ack-final' value='Y'/>\r
845                                                                 <parameter name="error-code" value="500" />\r
846                                                                 <parameter name="error-message" value="Error creating cp object in AAI" />\r
847                                                             </return>\r
848                                                         </block>\r
849                                                     </outcome>\r
850                                                 </save>\r
851                                                 <set>\r
852                                                     <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.connection-point-id'\r
853   value='`$cp-instance-id`' />\r
854                                                     <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.port-id'\r
855   value='0' />\r
856                                                 </set>\r
857                                                 <for silentFailure='true' index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >\r
858                                                     <for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >\r
859                                                         <block atomic="true">\r
860                                                             <set>\r
861                                                                 <parameter name='tmp.address-family'\r
862   value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />\r
863                                                             </set>\r
864                                                             <for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >\r
865                                                                 <switch test='`$tmp.address-family`'>\r
866                                                                     <outcome value='ipv4'>\r
867                                                                         <block atomic="true">\r
868                                                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
869         resource="l3-interface-ipv4-address-list" \r
870         key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
871           AND cp.cp-instance-id = $cp-instance-id\r
872           AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >\r
873                                                                                 <parameter name="l3-interface-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />\r
874                                                                                 <parameter name="l3-interface-ipv4-prefix-length" value="32" />\r
875                                                                                 <parameter name="is-floating" value="false" />\r
876                                                                                 <outcome value='failure'>\r
877                                                                                     <block atomic="true">\r
878                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
879                                                                                         <return status='failure'>\r
880                                                                                             <parameter name='ack-final' value='Y'/>\r
881                                                                                             <parameter name="error-code" value="500" />\r
882                                                                                             <parameter name="error-message" value="Error creating l3-interface-ipv4-address-list object in AAI" />\r
883                                                                                         </return>\r
884                                                                                     </block>\r
885                                                                                 </outcome>\r
886                                                                             </save>\r
887                                                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
888    resource="l3-interface-ipv4-address-list:relationship-list"\r
889    key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
890           AND cp.cp-instance-id = $cp-instance-id\r
891           AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"\r
892    force="true" pfx="tmp.AnAI-data">\r
893                                                                                 <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
894                                                                                 <parameter name="relationship-list.relationship[0].related-link"\r
895       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
896         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />\r
897                                                                                 <parameter name="relationship-list.relationship[1].related-to" value="subnet" />\r
898                                                                                 <parameter name="relationship-list.relationship[1].related-link"\r
899       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
900         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +\r
901         '/subnets/subnet/' +\r
902         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />\r
903                                                                                 <outcome value='failure'>\r
904                                                                                     <block atomic="true">\r
905                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
906                                                                                         <return status='failure'>\r
907                                                                                             <parameter name='ack-final' value='Y'/>\r
908                                                                                             <parameter name="error-code" value="500" />\r
909                                                                                             <parameter name="error-message" value="Error updating l3-interface-ipv4-address-list relationships in AAI" />\r
910                                                                                         </return>\r
911                                                                                     </block>\r
912                                                                                 </outcome>\r
913                                                                                 <outcome value='not-found'>\r
914                                                                                     <block atomic="true">\r
915                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
916                                                                                         <return status='failure'>\r
917                                                                                             <parameter name='ack-final' value='Y'/>\r
918                                                                                             <parameter name="error-code" value="500" />\r
919                                                                                             <parameter name="error-message" value="Not-found error updating l3-interface-ipv4-address-list relationships" />\r
920                                                                                         </return>\r
921                                                                                     </block>\r
922                                                                                 </outcome>\r
923                                                                             </save>\r
924                                                                         </block>\r
925                                                                     </outcome>\r
926                                                                     <outcome value='ipv6'>\r
927                                                                         <block atomic="true">\r
928                                                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
929         resource="l3-interface-ipv6-address-list" \r
930         key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
931           AND cp.cp-instance-id = $cp-instance-id\r
932           AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >\r
933                                                                                 <parameter name="l3-interface-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />\r
934                                                                                 <parameter name="l3-interface-ipv6-prefix-length" value="128" />\r
935                                                                                 <parameter name="is-floating" value="false" />\r
936                                                                                 <outcome value='failure'>\r
937                                                                                     <block atomic="true">\r
938                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
939                                                                                         <return status='failure'>\r
940                                                                                             <parameter name='ack-final' value='Y'/>\r
941                                                                                             <parameter name="error-code" value="500" />\r
942                                                                                             <parameter name="error-message" value="Error creating l3-interface-ipv6-address-list object in AAI" />\r
943                                                                                         </return>\r
944                                                                                     </block>\r
945                                                                                 </outcome>\r
946                                                                             </save>\r
947                                                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
948    resource="l3-interface-ipv6-address-list:relationship-list"\r
949    key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
950           AND cp.cp-instance-id = $cp-instance-id\r
951           AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"\r
952    force="true" pfx="tmp.AnAI-data">\r
953                                                                                 <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
954                                                                                 <parameter name="relationship-list.relationship[0].related-link"\r
955       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
956         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />\r
957                                                                                 <parameter name="relationship-list.relationship[1].related-to" value="subnet" />\r
958                                                                                 <parameter name="relationship-list.relationship[1].related-link"\r
959       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
960         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +\r
961         '/subnets/subnet/' +\r
962         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />\r
963                                                                                 <outcome value='failure'>\r
964                                                                                     <block atomic="true">\r
965                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
966                                                                                         <return status='failure'>\r
967                                                                                             <parameter name='ack-final' value='Y'/>\r
968                                                                                             <parameter name="error-code" value="500" />\r
969                                                                                             <parameter name="error-message" value="Error updating l3-interface-ipv6-address-list relationships in AAI" />\r
970                                                                                         </return>\r
971                                                                                     </block>\r
972                                                                                 </outcome>\r
973                                                                                 <outcome value='not-found'>\r
974                                                                                     <block atomic="true">\r
975                                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
976                                                                                         <return status='failure'>\r
977                                                                                             <parameter name='ack-final' value='Y'/>\r
978                                                                                             <parameter name="error-code" value="500" />\r
979                                                                                             <parameter name="error-message" value="Not-found error updating l3-interface-ipv6-address-list relationships" />\r
980                                                                                         </return>\r
981                                                                                     </block>\r
982                                                                                 </outcome>\r
983                                                                             </save>\r
984                                                                         </block>\r
985                                                                     </outcome>\r
986                                                                 </switch>\r
987                                                             </for>\r
988                                                         </block>\r
989                                                     </for>\r
990                                                 </for>\r
991                                                 <for index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\r
992                                                     <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role\r
993   == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>\r
994                                                         <outcome value='true'>\r
995                                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
996    resource="cp:relationship-list"\r
997    key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
998      AND cp.cp-instance-id = $cp-instance-id"\r
999    force="true" pfx="tmp.AnAI-data">\r
1000                                                                 <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
1001                                                                 <parameter name="relationship-list.relationship[0].related-link"\r
1002       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
1003         $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`" />\r
1004                                                                 <outcome value='failure'>\r
1005                                                                     <block atomic="true">\r
1006                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1007                                                                         <return status='failure'>\r
1008                                                                             <parameter name='ack-final' value='Y'/>\r
1009                                                                             <parameter name="error-code" value="500" />\r
1010                                                                             <parameter name="error-message" value="Error updating cp relationship to l3-network in AAI" />\r
1011                                                                         </return>\r
1012                                                                     </block>\r
1013                                                                 </outcome>\r
1014                                                                 <outcome value='not-found'>\r
1015                                                                     <block atomic="true">\r
1016                                                                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1017                                                                         <return status='failure'>\r
1018                                                                             <parameter name='ack-final' value='Y'/>\r
1019                                                                             <parameter name="error-code" value="500" />\r
1020                                                                             <parameter name="error-message" value="Not-found error updating cp relationship to l3-network" />\r
1021                                                                         </return>\r
1022                                                                     </block>\r
1023                                                                 </outcome>\r
1024                                                             </save>\r
1025                                                         </outcome>\r
1026                                                     </switch>\r
1027                                                 </for>\r
1028                                                 <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\r
1029                                                     <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role\r
1030   == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>\r
1031                                                         <outcome value='true'>\r
1032                                                             <for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >\r
1033                                                                 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
1034    resource="cp:relationship-list"\r
1035    key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
1036      AND cp.cp-instance-id = $cp-instance-id"\r
1037    force="true" pfx="tmp.AnAI-data">\r
1038                                                                     <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
1039                                                                     <parameter name="relationship-list.relationship[0].related-link"\r
1040       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
1041         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].network-id`" />\r
1042                                                                     <parameter name="relationship-list.relationship[1].related-to" value="vlan-tag" />\r
1043                                                                     <parameter name="relationship-list.relationship[1].related-link"\r
1044       value="`'/aai/v$/network/vlan-tags/vlan-tag/' +\r
1045         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.vlan-interface`" />\r
1046                                                                     <outcome value='failure'>\r
1047                                                                         <block atomic="true">\r
1048                                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1049                                                                             <return status='failure'>\r
1050                                                                                 <parameter name='ack-final' value='Y'/>\r
1051                                                                                 <parameter name="error-code" value="500" />\r
1052                                                                                 <parameter name="error-message" value="Error updating cp relationship to l3-network and vlan-tag in AAI" />\r
1053                                                                             </return>\r
1054                                                                         </block>\r
1055                                                                     </outcome>\r
1056                                                                     <outcome value='not-found'>\r
1057                                                                         <block atomic="true">\r
1058                                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1059                                                                             <return status='failure'>\r
1060                                                                                 <parameter name='ack-final' value='Y'/>\r
1061                                                                                 <parameter name="error-code" value="500" />\r
1062                                                                                 <parameter name="error-message" value="Not-found error updating cp relationship to l3-network and vlan-tag" />\r
1063                                                                             </return>\r
1064                                                                         </block>\r
1065                                                                     </outcome>\r
1066                                                                 </save>\r
1067                                                             </for>\r
1068                                                         </outcome>\r
1069                                                     </switch>\r
1070                                                 </for>\r
1071                                             </block>\r
1072                                         </for>\r
1073                                     </block>\r
1074                                 </for>\r
1075                                 <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\r
1076                                     <block atomic="true">\r
1077                                         <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
1078    resource="vf-module:relationship-list"\r
1079    key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\r
1080       AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
1081    force="true" pfx="tmp.AnAI-data">\r
1082                                             <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
1083                                             <parameter name="relationship-list.relationship[0].related-link"\r
1084       value="`'/aai/v$/network/l3-networks/l3-network/' +\r
1085         $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />\r
1086                                             <outcome value='failure'>\r
1087                                                 <block atomic="true">\r
1088                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1089                                                     <return status='failure'>\r
1090                                                         <parameter name='ack-final' value='Y'/>\r
1091                                                         <parameter name="error-code" value="500" />\r
1092                                                         <parameter name="error-message" value="Error updating vf-module relationships in AAI" />\r
1093                                                     </return>\r
1094                                                 </block>\r
1095                                             </outcome>\r
1096                                             <outcome value='not-found'>\r
1097                                                 <block atomic="true">\r
1098                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1099                                                     <return status='failure'>\r
1100                                                         <parameter name='ack-final' value='Y'/>\r
1101                                                         <parameter name="error-code" value="500" />\r
1102                                                         <parameter name="error-message" value="`'No l3-network found in AAI for network ID '\r
1103       + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />\r
1104                                                     </return>\r
1105                                                 </block>\r
1106                                             </outcome>\r
1107                                         </save>\r
1108                                         <set>\r
1109                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag' value='true' />\r
1110                                         </set>\r
1111                                         <for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >\r
1112                                             <block atomic="true">\r
1113                                                 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1114         resource="vip-ipv4-address-list" \r
1115         key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\r
1116           AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\r
1117           AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" >\r
1118                                                     <parameter name="vip-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]`" />\r
1119                                                     <parameter name="vip-ipv4-prefix-length" value="32" />\r
1120                                                     <parameter name="is-floating" value="false" />\r
1121                                                     <outcome value='failure'>\r
1122                                                         <block atomic="true">\r
1123                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1124                                                             <return status='failure'>\r
1125                                                                 <parameter name='ack-final' value='Y'/>\r
1126                                                                 <parameter name="error-code" value="500" />\r
1127                                                                 <parameter name="error-message" value="Error saving vip-ipv4-address-list in AAI" />\r
1128                                                             </return>\r
1129                                                         </block>\r
1130                                                     </outcome>\r
1131                                                     <outcome value='not-found'>\r
1132                                                         <block atomic="true">\r
1133                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1134                                                             <return status='failure'>\r
1135                                                                 <parameter name='ack-final' value='Y'/>\r
1136                                                                 <parameter name="error-code" value="500" />\r
1137                                                                 <parameter name="error-message" value="Not-found error saving vip-ipv4-address-list" />\r
1138                                                             </return>\r
1139                                                         </block>\r
1140                                                     </outcome>\r
1141                                                 </save>\r
1142                                                 <set>\r
1143                                                     <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag' value='true' />\r
1144                                                 </set>\r
1145                                                 <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\r
1146                                                     <block atomic="true">\r
1147                                                         <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
1148    resource="vip-ipv4-address-list:relationship-list"\r
1149    key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\r
1150           AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\r
1151           AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"\r
1152    force="true" pfx="tmp.AnAI-data">\r
1153                                                             <parameter name="relationship-list.relationship[0].related-to" value="subnet" />\r
1154                                                             <parameter name="relationship-list.relationship[0].related-link"\r
1155       value="`'/aai/v$/network/l3-networks/l3-network/'\r
1156         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id\r
1157         + '/subnets/subnet/'\r
1158         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv4-subnet-id`" />\r
1159                                                             <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />\r
1160                                                             <parameter name="relationship-list.relationship[1].related-link"\r
1161       value="`'/aai/v$/network/vnfcs/vnfc/'\r
1162         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />\r
1163                                                             <outcome value='failure'>\r
1164                                                                 <block atomic="true">\r
1165                                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1166                                                                     <return status='failure'>\r
1167                                                                         <parameter name='ack-final' value='Y'/>\r
1168                                                                         <parameter name="error-code" value="500" />\r
1169                                                                         <parameter name="error-message" value="Error updating vip-ipv4-address-list relationships in AAI" />\r
1170                                                                     </return>\r
1171                                                                 </block>\r
1172                                                             </outcome>\r
1173                                                             <outcome value='not-found'>\r
1174                                                                 <block atomic="true">\r
1175                                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1176                                                                     <return status='failure'>\r
1177                                                                         <parameter name='ack-final' value='Y'/>\r
1178                                                                         <parameter name="error-code" value="500" />\r
1179                                                                         <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationships" />\r
1180                                                                     </return>\r
1181                                                                 </block>\r
1182                                                             </outcome>\r
1183                                                         </save>\r
1184                                                         <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\r
1185                                                             <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role\r
1186   == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>\r
1187                                                                 <outcome value='true'>\r
1188                                                                     <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
1189    resource="vip-ipv4-address-list:relationship-list"\r
1190    key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\r
1191           AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\r
1192           AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"\r
1193    force="true" pfx="tmp.AnAI-data">\r
1194                                                                         <parameter name="relationship-list.relationship[0].related-to" value="cp" />\r
1195                                                                         <parameter name="relationship-list.relationship[0].related-link"\r
1196       value="`'/aai/v$/network/vnfcs/vnfc/'\r
1197         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
1198         + '/cps/cp/'\r
1199         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />\r
1200                                                                         <outcome value='failure'>\r
1201                                                                             <block atomic="true">\r
1202                                                                                 <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1203                                                                                 <return status='failure'>\r
1204                                                                                     <parameter name='ack-final' value='Y'/>\r
1205                                                                                     <parameter name="error-code" value="500" />\r
1206                                                                                     <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />\r
1207                                                                                 </return>\r
1208                                                                             </block>\r
1209                                                                         </outcome>\r
1210                                                                         <outcome value='not-found'>\r
1211                                                                             <block atomic="true">\r
1212                                                                                 <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1213                                                                                 <return status='failure'>\r
1214                                                                                     <parameter name='ack-final' value='Y'/>\r
1215                                                                                     <parameter name="error-code" value="500" />\r
1216                                                                                     <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />\r
1217                                                                                 </return>\r
1218                                                                             </block>\r
1219                                                                         </outcome>\r
1220                                                                     </save>\r
1221                                                                 </outcome>\r
1222                                                             </switch>\r
1223                                                         </for>\r
1224                                                     </block>\r
1225                                                 </for>\r
1226                                             </block>\r
1227                                         </for>\r
1228                                         <for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >\r
1229                                             <block atomic="true">\r
1230                                                 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
1231         resource="vip-ipv6-address-list" \r
1232         key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\r
1233           AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\r
1234           AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" >\r
1235                                                     <parameter name="vip-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]`" />\r
1236                                                     <parameter name="vip-ipv6-prefix-length" value="128" />\r
1237                                                     <parameter name="is-floating" value="false" />\r
1238                                                     <outcome value='failure'>\r
1239                                                         <block atomic="true">\r
1240                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1241                                                             <return status='failure'>\r
1242                                                                 <parameter name='ack-final' value='Y'/>\r
1243                                                                 <parameter name="error-code" value="500" />\r
1244                                                                 <parameter name="error-message" value="Error saving vip-ipv6-address-list in AAI" />\r
1245                                                             </return>\r
1246                                                         </block>\r
1247                                                     </outcome>\r
1248                                                     <outcome value='not-found'>\r
1249                                                         <block atomic="true">\r
1250                                                             <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1251                                                             <return status='failure'>\r
1252                                                                 <parameter name='ack-final' value='Y'/>\r
1253                                                                 <parameter name="error-code" value="500" />\r
1254                                                                 <parameter name="error-message" value="Not-found error saving vip-ipv6-address-list" />\r
1255                                                             </return>\r
1256                                                         </block>\r
1257                                                     </outcome>\r
1258                                                 </save>\r
1259                                                 <set>\r
1260                                                     <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag' value='true' />\r
1261                                                 </set>\r
1262                                                 <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\r
1263                                                     <block atomic="true">\r
1264                                                         <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
1265    resource="vip-ipv6-address-list:relationship-list"\r
1266    key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\r
1267           AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\r
1268           AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"\r
1269    force="true" pfx="tmp.AnAI-data">\r
1270                                                             <parameter name="relationship-list.relationship[0].related-to" value="subnet" />\r
1271                                                             <parameter name="relationship-list.relationship[0].related-link"\r
1272       value="`'/aai/v$/network/l3-networks/l3-network/'\r
1273         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id\r
1274         + '/subnets/subnet/'\r
1275         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv6-subnet-id`" />\r
1276                                                             <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />\r
1277                                                             <parameter name="relationship-list.relationship[1].related-link"\r
1278       value="`'/aai/v$/network/vnfcs/vnfc/'\r
1279         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />\r
1280                                                             <outcome value='failure'>\r
1281                                                                 <block atomic="true">\r
1282                                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1283                                                                     <return status='failure'>\r
1284                                                                         <parameter name='ack-final' value='Y'/>\r
1285                                                                         <parameter name="error-code" value="500" />\r
1286                                                                         <parameter name="error-message" value="Error updating vip-ipv6-address-list relationships in AAI" />\r
1287                                                                     </return>\r
1288                                                                 </block>\r
1289                                                             </outcome>\r
1290                                                             <outcome value='not-found'>\r
1291                                                                 <block atomic="true">\r
1292                                                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1293                                                                     <return status='failure'>\r
1294                                                                         <parameter name='ack-final' value='Y'/>\r
1295                                                                         <parameter name="error-code" value="500" />\r
1296                                                                         <parameter name="error-message" value="Not-found error updating vip-ipv6-address-list relationships" />\r
1297                                                                     </return>\r
1298                                                                 </block>\r
1299                                                             </outcome>\r
1300                                                         </save>\r
1301                                                         <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\r
1302                                                             <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role\r
1303   == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>\r
1304                                                                 <outcome value='true'>\r
1305                                                                     <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
1306    resource="vip-ipv6-address-list:relationship-list"\r
1307    key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\r
1308           AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\r
1309           AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"\r
1310    force="true" pfx="tmp.AnAI-data">\r
1311                                                                         <parameter name="relationship-list.relationship[0].related-to" value="cp" />\r
1312                                                                         <parameter name="relationship-list.relationship[0].related-link"\r
1313       value="`'/aai/v$/network/vnfcs/vnfc/'\r
1314         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\r
1315         + '/cps/cp/'\r
1316         + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />\r
1317                                                                         <outcome value='failure'>\r
1318                                                                             <block atomic="true">\r
1319                                                                                 <return status='failure'>\r
1320                                                                                     <parameter name='ack-final' value='Y'/>\r
1321                                                                                     <parameter name="error-code" value="500" />\r
1322                                                                                     <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />\r
1323                                                                                 </return>\r
1324                                                                             </block>\r
1325                                                                         </outcome>\r
1326                                                                         <outcome value='not-found'>\r
1327                                                                             <block atomic="true">\r
1328                                                                                 <return status='failure'>\r
1329                                                                                     <parameter name='ack-final' value='Y'/>\r
1330                                                                                     <parameter name="error-code" value="500" />\r
1331                                                                                     <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />\r
1332                                                                                 </return>\r
1333                                                                             </block>\r
1334                                                                         </outcome>\r
1335                                                                     </save>\r
1336                                                                 </outcome>\r
1337                                                             </switch>\r
1338                                                         </for>\r
1339                                                     </block>\r
1340                                                 </for>\r
1341                                             </block>\r
1342                                         </for>\r
1343                                     </block>\r
1344                                 </for>\r
1345                             </block>\r
1346                         </for>\r
1347                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-assign' mode='sync' >\r
1348                             <outcome value='failure'>\r
1349                                 <block atomic="true">\r
1350                                     <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>\r
1351                                     <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
1352                                         <parameter name='filename' value='/var/tmp/bgb-vlantaggingfailure.log' />\r
1353                                     </execute>\r
1354                                     <return status='failure'></return>\r
1355                                 </block>\r
1356                             </outcome>\r
1357                         </call>\r
1358                         <call module='GENERIC-RESOURCE-API' rpc='vf-module-generate-heat-parameters' mode='sync' ></call>\r
1359                         <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
1360                             <parameter name='filename' value='/var/tmp/bgb-vfmoduleheat.log' />\r
1361                         </execute>\r
1362                         <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
1363                             <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >\r
1364                                 <block atomic="true">\r
1365                                     <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
1366   key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id\r
1367      AND ecomp_service_instance_id = $service-data.service-information.service-instance-id\r
1368      AND vm_name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >\r
1369                                         <outcome value='failure'>\r
1370                                             <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
1371                                                 <parameter name="logger" value="message-log"/>\r
1372                                                 <parameter name="field1" value="__TIMESTAMP__"/>\r
1373                                                 <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>\r
1374                                                 <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>\r
1375                                                 <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>\r
1376                                             </record>\r
1377                                         </outcome>\r
1378                                     </delete>\r
1379                                     <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
1380 key="INSERT INTO VIPR_CONFIGURATION (vnf_id, vnf_name, ecomp_service_instance_id, vm_name, cloud_region_id, cloud_owner) VALUES ( $service-data.vnfs.vnf[$vnf-index].vnf-id , $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name , $service-data.service-information.service-instance-id , $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index] , $tmp.vf-module-topology.aic-cloud-region , $prop.cloud-region.cloud-owner )" >\r
1381                                         <outcome value='failure'>\r
1382                                             <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
1383                                                 <parameter name="logger" value="message-log"/>\r
1384                                                 <parameter name="field1" value="__TIMESTAMP__"/>\r
1385                                                 <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>\r
1386                                                 <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>\r
1387                                                 <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>\r
1388                                             </record>\r
1389                                         </outcome>\r
1390                                     </save>\r
1391                                 </block>\r
1392                             </for>\r
1393                         </for>\r
1394                         <set>\r
1395                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.' value='tmp.vf-module-topology.' />\r
1396                         </set>\r
1397                         <set>\r
1398                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'\r
1399    value='$vf-module-topology-operation-input.sdnc-request-header.' />\r
1400                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'\r
1401    value='$vf-module-topology-operation-input.request-information.' />\r
1402                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'\r
1403    value='$vf-module-topology-operation-input.service-information.' />\r
1404                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'\r
1405    value='$vf-module-topology-operation-input.vnf-information.' />\r
1406                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'\r
1407    value='$vf-module-topology-operation-input.vf-module-information.' />\r
1408                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.'\r
1409    value='$vf-module-topology-operation-input.vf-module-request-input.' />\r
1410                         </set>\r
1411                         <call module='GENERIC-RESOURCE-API' rpc='gw-vfmodule-update' mode='sync' ></call>\r
1412                         <set>\r
1413                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\r
1414   value='PendingCreate' />\r
1415                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\r
1416   value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\r
1417                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-action'\r
1418   value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\r
1419                         </set>\r
1420                         <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
1421                             <parameter name='filename' value='/var/tmp/bgb-vfmodule.log' />\r
1422                         </execute>\r
1423                         <return status='success'>\r
1424                             <parameter name="ack-final-indicator" value="Y" />\r
1425                             <parameter name="error-code" value="200" />\r
1426                             <parameter name="error-message" value="`$error-message`" />\r
1427                         </return>\r
1428                     </block>\r
1429                 </outcome>\r
1430             </switch>\r
1431         </block>\r
1432     </method>\r
1433 </service-logic>\r