Remove active printContexts from DGs
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml
1 <service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='1.2.0-SNAPSHOT-INT110901'>\r
2     <method rpc='vf-module-topology-operation-assign' mode='sync'>\r
3         <block atomic="true">\r
4             <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
5                 <outcome value='CreateVfModuleInstance'>\r
6                     <block></block>\r
7                 </outcome>\r
8                 <outcome value='Other'>\r
9                     <return status='failure'>\r
10                         <parameter name='ack-final' value='Y'/>\r
11                         <parameter name="error-code" value="500" />\r
12                         <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVfModuleInstance'" />\r
13                     </return>\r
14                 </outcome>\r
15             </switch>\r
16             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
17                           key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\r
18                           pfx='db.vf-module-model'>\r
19                 <outcome value='failure'>\r
20                     <return status='failure'>\r
21                         <parameter name='ack-final' value='Y'/>\r
22                         <parameter name="error-code" value="500" />\r
23                         <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />\r
24                     </return>\r
25                 </outcome>\r
26                 <outcome value='not-found'>\r
27                     <return status='failure'>\r
28                         <parameter name='ack-final' value='Y'/>\r
29                         <parameter name="error-code" value="500" />\r
30                         <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
31                     </return>\r
32                 </outcome>\r
33             </get-resource>\r
34             <set>\r
35                 <parameter name='vnf-index' value='-1' />\r
36             </set>\r
37             <switch test='`$service-data.vnfs.vnf_length`'>\r
38                 <outcome value=''>\r
39                     <return status='failure'>\r
40                         <parameter name='ack-final' value='Y'/>\r
41                         <parameter name="error-code" value="500" />\r
42                         <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />\r
43                     </return>\r
44                 </outcome>\r
45                 <outcome value='Other'>\r
46                     <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
47                         <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\r
48                             <outcome value='true'>\r
49                                 <block>\r
50                                     <set>\r
51                                         <parameter name='vnf-index' value='`$idx`' />\r
52                                     </set>\r
53                                     <break></break>\r
54                                 </block>\r
55                             </outcome>\r
56                         </switch>\r
57                     </for>\r
58                 </outcome>\r
59             </switch>\r
60             <switch test='`$vnf-index`'>\r
61                 <outcome value='-1'>\r
62                     <return status='failure'>\r
63                         <parameter name='ack-final' value='Y'/>\r
64                         <parameter name="error-code" value="500" />\r
65                         <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />\r
66                     </return>\r
67                 </outcome>\r
68             </switch>\r
69             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status`'>\r
70                 <outcome value='Created'>\r
71                     <block></block>\r
72                 </outcome>\r
73                 <outcome value='Other'>\r
74                     <return status='failure'>\r
75                         <parameter name='ack-final' value='Y'/>\r
76                         <parameter name="error-code" value="500" />\r
77                         <parameter name="error-message" value="`'VNF order status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status + ' but should be Created'`" />\r
78                     </return>\r
79                 </outcome>\r
80             </switch>\r
81             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
82                 <outcome value=''>\r
83                     <set>\r
84                         <parameter name='vf-module-index' value='0' />\r
85                     </set>\r
86                 </outcome>\r
87                 <outcome value='Other'>\r
88                     <block>\r
89                         <set>\r
90                             <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\r
91                         </set>\r
92                         <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
93                             <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
94                                 <outcome value='true'>\r
95                                     <return status='failure'>\r
96                                         <parameter name='ack-final' value='Y'/>\r
97                                         <parameter name="error-code" value="500" />\r
98                                         <parameter name="error-message" value="`'VF module id ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id + ' 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
99                                     </return>\r
100                                 </outcome>\r
101                             </switch>\r
102                         </for>\r
103                     </block>\r
104                 </outcome>\r
105             </switch>\r
106             <set>\r
107                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />\r
108             </set>\r
109             <set>\r
110                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'\r
111                            value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\r
112             </set>\r
113             <set>\r
114                 <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
115                 <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
116                 <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
117                 <parameter name='tmp.vf-module-topology.tenant' value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />\r
118                 <parameter name='tmp.vf-module-topology.aic-cloud-region' value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />\r
119             </set>\r
120             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
121                           resource="cloud-region"\r
122                           key="cloud-region.cloud-owner = 'CloudOwner' AND\r
123              cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region"\r
124                           pfx='aai.cloud-region' local-only='false' >\r
125                 <outcome value='not-found'>\r
126                     <return status='failure'>\r
127                         <parameter name='ack-final' value='Y'/>\r
128                         <parameter name="error-code" value="500" />\r
129                         <parameter name="error-message" value="Cloud region not found in AAI" />\r
130                     </return>\r
131                 </outcome>\r
132                 <outcome value='failure'>\r
133                     <return status='failure'>\r
134                         <parameter name='ack-final' value='Y'/>\r
135                         <parameter name="error-code" value="500" />\r
136                         <parameter name="error-message" value="Error retrieving cloud region from AAI" />\r
137                     </return>\r
138                 </outcome>\r
139             </get-resource>\r
140             <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\r
141                 <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\r
142                     <outcome value='complex'>\r
143                         <block atomic="true">\r
144                             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\r
145                                 <parameter name='ctx_memory_result_key' value='aai-uid-split' />\r
146                                 <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\r
147                                 <parameter name='regex' value='/' />\r
148                             </execute>\r
149                             <set>\r
150                                 <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
151                                            value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\r
152                             </set>\r
153                             <break></break>\r
154                         </block>\r
155                     </outcome>\r
156                 </switch>\r
157             </for>\r
158             <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
159                 <outcome value=''>\r
160                     <return status='failure'>\r
161                         <parameter name='ack-final' value='Y'/>\r
162                         <parameter name="error-code" value="500" />\r
163                         <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
164                     </return>\r
165                 </outcome>\r
166             </switch>\r
167             <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>\r
168                 <outcome value=''>\r
169                     <set>\r
170                         <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'\r
171                                    value='`$db.vf-module-model.invariant-uuid`' />\r
172                     </set>\r
173                 </outcome>\r
174                 <outcome value='Other'>\r
175                     <set>\r
176                         <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'\r
177                                    value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\r
178                     </set>\r
179                 </outcome>\r
180             </switch>\r
181             <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>\r
182                 <outcome value=''>\r
183                     <set>\r
184                         <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'\r
185                                    value='`$db.vf-module-model.uuid`' />\r
186                     </set>\r
187                 </outcome>\r
188                 <outcome value='Other'>\r
189                     <set>\r
190                         <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'\r
191                                    value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />\r
192                     </set>\r
193                 </outcome>\r
194             </switch>\r
195             <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>\r
196                 <outcome value=''>\r
197                     <set>\r
198                         <parameter name='tmp.vf-module-topology.onap-model-information.model-version'\r
199                                    value='`$db.vf-module-model.version`' />\r
200                     </set>\r
201                 </outcome>\r
202                 <outcome value='Other'>\r
203                     <set>\r
204                         <parameter name='tmp.vf-module-topology.onap-model-information.model-version'\r
205                                    value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\r
206                     </set>\r
207                 </outcome>\r
208             </switch>\r
209             <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>\r
210                 <outcome value=''>\r
211                     <set>\r
212                         <parameter name='tmp.vf-module-topology.onap-model-information.model-name'\r
213                                    value='`$db.vf-module-model.name`' />\r
214                     </set>\r
215                 </outcome>\r
216                 <outcome value='Other'>\r
217                     <set>\r
218                         <parameter name='tmp.vf-module-topology.onap-model-information.model-name'\r
219                                    value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />\r
220                     </set>\r
221                 </outcome>\r
222             </switch>\r
223             <set>\r
224                 <parameter name='tmp.vf-module-topology.onap-model-information.model-customization-uuid'\r
225                            value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\r
226             </set>\r
227             <set>\r
228                 <parameter name='tmp.vf-module-topology.vf-module-parameters.'\r
229                            value='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.' />\r
230             </set>\r
231             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
232                           key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\r
233                           pfx='db.vf-module-to-vfc-mapping[]'>\r
234                 <outcome value='failure'>\r
235                     <return status='failure'>\r
236                         <parameter name='ack-final' value='Y'/>\r
237                         <parameter name="error-code" value="500" />\r
238                         <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />\r
239                     </return>\r
240                 </outcome>\r
241                 <outcome value='not-found'>\r
242                     <set>\r
243                         <parameter name='db.vf-module-to-vfc-mapping_length' value='0' />\r
244                     </set>\r
245                 </outcome>\r
246             </get-resource>\r
247             <set>\r
248                 <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm_length'\r
249                            value='`$db.vf-module-to-vfc-mapping_length`' />\r
250             </set>\r
251             <for index='vm-type-index' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >\r
252                 <block atomic="true">\r
253                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
254                                   key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\r
255                                   pfx='db.vfc-model'>\r
256                         <outcome value='failure'>\r
257                             <return status='failure'>\r
258                                 <parameter name='ack-final' value='Y'/>\r
259                                 <parameter name="error-code" value="500" />\r
260                                 <parameter name="error-message" value="Error reading VFC_MODEL table" />\r
261                             </return>\r
262                         </outcome>\r
263                         <outcome value='not-found'>\r
264                             <return status='failure'>\r
265                                 <parameter name='ack-final' value='Y'/>\r
266                                 <parameter name="error-code" value="500" />\r
267                                 <parameter name="error-message" value="`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />\r
268                             </return>\r
269                         </outcome>\r
270                     </get-resource>\r
271                     <switch test="$db.vfc-model.ecomp-generated-naming == 'Y'">\r
272                         <outcome value='false'>\r
273                             <return status='failure'>\r
274                                 <parameter name='ack-final' value='Y'/>\r
275                                 <parameter name="error-code" value="500" />\r
276                                 <parameter name="error-message" value="`'ECOMP generated naming is not Y for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />\r
277                             </return>\r
278                         </outcome>\r
279                     </switch>\r
280                     <set>\r
281                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type'\r
282                                    value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />\r
283                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'\r
284                                    value='`$db.vfc-model.nfc-naming-code`' />\r
285                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type-tag'\r
286                                    value='`$db.vfc-model.vm-type-tag`' />\r
287                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count'\r
288                                    value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\r
289                     </set>\r
290                     <set>\r
291                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length'\r
292                                    value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\r
293                     </set>\r
294                     <for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >\r
295                         <block atomic="true">\r
296                             <set>\r
297                                 <parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />\r
298                                 <parameter name='generate-unique-name-input.index-table-prefix-column' value='vm_name_prefix' />\r
299                                 <parameter name='generate-unique-name-input.name-table-type' value='VM_INSTANCE' />\r
300                                 <parameter name='generate-unique-name-input.prefix' value="`$service-data.vnfs.vnf[$vnf-index].vnf-name + $db.vfc-model.nfc-naming-code`" />\r
301                                 <parameter name='generate-unique-name-input.index-length' value='3' />\r
302                             </set>\r
303                             <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
304                                 <outcome value='failure'>\r
305                                     <return status='failure'>\r
306                                         <parameter name='ack-final' value='Y'/>\r
307                                         <parameter name="error-code" value="500" />\r
308                                         <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
309                                     </return>\r
310                                 </outcome>\r
311                                 <outcome value='success'>\r
312                                     <set>\r
313                                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' value='`$generate-unique-name-output.generated-name`' />\r
314                                     </set>\r
315                                 </outcome>\r
316                             </call>\r
317                         </block>\r
318                     </for>\r
319                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
320                                   key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\r
321                                   pfx='db.vfc-to-network-role-mapping[]'>\r
322                         <outcome value='failure'>\r
323                             <return status='failure'>\r
324                                 <parameter name='ack-final' value='Y'/>\r
325                                 <parameter name="error-code" value="500" />\r
326                                 <parameter name="error-message" value="Error reading VFC_TO_NETWORK_ROLE_MAPPING table" />\r
327                             </return>\r
328                         </outcome>\r
329                         <outcome value='not-found'>\r
330                             <set>\r
331                                 <parameter name='db.vfc-to-network-role-mapping_length' value='0' />\r
332                             </set>\r
333                         </outcome>\r
334                     </get-resource>\r
335                     <for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >\r
336                         <block atomic="true">\r
337                             <set>\r
338                                 <parameter name='network-index' value='-1' />\r
339                             </set>\r
340                             <for silentFailure='true' index='idx' start='0' end='`$service-data.networks.network_length`' >\r
341                                 <switch test='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-role == $db.vfc-to-network-role-mapping[$network-role-index].network-role`'>\r
342                                     <outcome value='true'>\r
343                                         <block>\r
344                                             <set>\r
345                                                 <parameter name='network-index' value='`$idx`' />\r
346                                             </set>\r
347                                             <break></break>\r
348                                         </block>\r
349                                     </outcome>\r
350                                 </switch>\r
351                             </for>\r
352                             <switch test='`$network-index`'>\r
353                                 <outcome value='-1'>\r
354                                     <return status='failure'>\r
355                                         <parameter name='ack-final' value='Y'/>\r
356                                         <parameter name="error-code" value="500" />\r
357                                         <parameter name="error-message" value="`'No network found in MD-SAL with network-role ' + $db.vfc-to-network-role-mapping[$network-role-index].network-role`" />\r
358                                     </return>\r
359                                 </outcome>\r
360                             </switch>\r
361                             <!--This isn't a node in MD-SAL, but we need to save this for later when we are doing EIPAM processing-->\r
362                             <set>\r
363                                 <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id'\r
364                                            value='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-id`' />\r
365                             </set>\r
366                             <set>\r
367                                 <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'\r
368                                            value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' />\r
369                                 <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag'\r
370                                            value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />\r
371                             </set>\r
372                             <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>\r
373                                 <outcome value=''>\r
374                                     <set>\r
375                                         <parameter name='network-information-index' value='-1' />\r
376                                     </set>\r
377                                 </outcome>\r
378                                 <outcome value='4'>\r
379                                     <block atomic="true">\r
380                                         <set>\r
381                                             <parameter name='network-information-index' value='0' />\r
382                                         </set>\r
383                                         <set>\r
384                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'\r
385                                                        value='4' />\r
386                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'\r
387                                                        value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />\r
388                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'\r
389                                                        value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' />\r
390                                         </set>\r
391                                     </block>\r
392                                 </outcome>\r
393                             </switch>\r
394                             <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>\r
395                                 <outcome value=''>\r
396                                     <block></block>\r
397                                 </outcome>\r
398                                 <outcome value='6'>\r
399                                     <block atomic="true">\r
400                                         <set>\r
401                                             <parameter name='network-information-index' value='`$network-information-index + 1`' />\r
402                                         </set>\r
403                                         <set>\r
404                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'\r
405                                                        value='6' />\r
406                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'\r
407                                                        value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />\r
408                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'\r
409                                                        value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' />\r
410                                         </set>\r
411                                     </block>\r
412                                 </outcome>\r
413                             </switch>\r
414                             <switch test='`$network-information-index`'>\r
415                                 <outcome value='-1'>\r
416                                     <block></block>\r
417                                 </outcome>\r
418                                 <outcome value='Other'>\r
419                                     <set>\r
420                                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length'\r
421                                                    value='`$network-information-index + 1`' />\r
422                                     </set>\r
423                                 </outcome>\r
424                             </switch>\r
425                         </block>\r
426                     </for>\r
427                     <set>\r
428                         <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\r
429                                    value='`$db.vfc-to-network-role-mapping_length`' />\r
430                     </set>\r
431                 </block>\r
432             </for>\r
433             <set>\r
434                 <parameter name='plans-index' value='0' />\r
435             </set>\r
436             <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
437                 <block atomic="true">\r
438                     <for 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
439                         <block atomic="true">\r
440                             <for index='ip-version-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length`' >\r
441                                 <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].use-dhcp`'>\r
442                                     <outcome value='N'>\r
443                                         <block atomic="true">\r
444                                             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
445                                                           key='SELECT * from EIPAM_IP_SUBNETS WHERE network_id = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id\r
446                                                           AND address_family = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version'\r
447                                                           pfx='db.eipam-ip-subnets[]'>\r
448                                                 <outcome value='failure'>\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="Error reading EIPAM_IP_SUBNETS table" />\r
453                                                     </return>\r
454                                                 </outcome>\r
455                                                 <outcome value='not-found'>\r
456                                                     <return status='failure'>\r
457                                                         <parameter name='ack-final' value='Y'/>\r
458                                                         <parameter name="error-code" value="500" />\r
459                                                         <parameter name="error-message" value="`'No entries found in EIPAM_IP_SUBNETS table for network ID ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id + ' and address family ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version`" />\r
460                                                     </return>\r
461                                                 </outcome>\r
462                                             </get-resource>\r
463                                             <set>\r
464                                                 <parameter name='max-level' value='-1' />\r
465                                             </set>\r
466                                             <for index='subnets-index' start='0' end='`$db.eipam-ip-subnets_length`' >\r
467                                                 <block atomic="true">\r
468                                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
469                                                                   key='SELECT * from EIPAM_IP_SUBNET_KEYS WHERE entity_id = $db.eipam-ip-subnets[$subnets-index].entity-id'\r
470                                                                   pfx='db.eipam-ip-subnet-keys[]'>\r
471                                                         <outcome value='failure'>\r
472                                                             <return status='failure'>\r
473                                                                 <parameter name='ack-final' value='Y'/>\r
474                                                                 <parameter name="error-code" value="500" />\r
475                                                                 <parameter name="error-message" value="Error reading EIPAM_IP_SUBNET_KEYS table" />\r
476                                                             </return>\r
477                                                         </outcome>\r
478                                                         <outcome value='not-found'>\r
479                                                             <return status='failure'>\r
480                                                                 <parameter name='ack-final' value='Y'/>\r
481                                                                 <parameter name="error-code" value="500" />\r
482                                                                 <parameter name="error-message" value="`'No entries found in EIPAM_IP_SUBNET_KEYS table for entity ID ' + $db.eipam-ip-subnets[$subnets-index].entity-id`" />\r
483                                                             </return>\r
484                                                         </outcome>\r
485                                                     </get-resource>\r
486                                                     <for index='keys-index' start='0' end='`$db.eipam-ip-subnet-keys_length`' >\r
487                                                         <block atomic="true">\r
488                                                             <switch test='`$db.eipam-ip-subnet-keys[$keys-index].level &gt; $max-level`'>\r
489                                                                 <outcome value='true'>\r
490                                                                     <set>\r
491                                                                         <parameter name='max-level' value='`$db.eipam-ip-subnet-keys[$keys-index].level`' />\r
492                                                                         <parameter name='selected-entity-id' value='`$db.eipam-ip-subnet-keys[$keys-index].entity-id`' />\r
493                                                                         <parameter name='selected-plan-name' value='`$db.eipam-ip-subnets[$subnets-index].plan-name`' />\r
494                                                                     </set>\r
495                                                                 </outcome>\r
496                                                             </switch>\r
497                                                         </block>\r
498                                                     </for>\r
499                                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
500                                                                   key='SELECT * from EIPAM_IP_SUBNET_KEYS WHERE entity_id = $selected-entity-id order by level'\r
501                                                                   pfx='db.eipam-ip-subnet-keys[]'>\r
502                                                         <outcome value='failure'>\r
503                                                             <return status='failure'>\r
504                                                                 <parameter name='ack-final' value='Y'/>\r
505                                                                 <parameter name="error-code" value="500" />\r
506                                                                 <parameter name="error-message" value="Error reading EIPAM_IP_SUBNET_KEYS table" />\r
507                                                             </return>\r
508                                                         </outcome>\r
509                                                         <outcome value='not-found'>\r
510                                                             <return status='failure'>\r
511                                                                 <parameter name='ack-final' value='Y'/>\r
512                                                                 <parameter name="error-code" value="500" />\r
513                                                                 <parameter name="error-message" value="`'No entries found in EIPAM_IP_SUBNET_KEYS table for entity ID ' + $selected-entity-id`" />\r
514                                                             </return>\r
515                                                         </outcome>\r
516                                                     </get-resource>\r
517                                                     <for index='request-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-count`' >\r
518                                                         <block atomic="true">\r
519                                                             <for index='level-index' start='0' end='`$db.eipam-ip-subnet-keys_length`' >\r
520                                                                 <set>\r
521                                                                     <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].pools[$level-index].key-name'\r
522                                                                                value='`$db.eipam-ip-subnet-keys[$level-index].key-name`' />\r
523                                                                     <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].pools[$level-index].key-value'\r
524                                                                                value='`$db.eipam-ip-subnet-keys[$level-index].key-value`' />\r
525                                                                 </set>\r
526                                                             </for>\r
527                                                             <set>\r
528                                                                 <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].pools_length'\r
529                                                                            value='`$db.eipam-ip-subnet-keys_length`' />\r
530                                                             </set>\r
531                                                             <set>\r
532                                                                 <parameter name='generate-unique-name-input.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />\r
533                                                                 <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\r
534                                                                 <parameter name='generate-unique-name-input.name-table-type' value='CLIENT_KEY' />\r
535                                                                 <parameter name='generate-unique-name-input.prefix' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code + ':' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id + ':' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version + ':'`" />\r
536                                                                 <parameter name='generate-unique-name-input.index-length' value='' />\r
537                                                             </set>\r
538                                                             <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
539                                                                 <outcome value='failure'>\r
540                                                                     <return status='failure'>\r
541                                                                         <parameter name='ack-final' value='Y'/>\r
542                                                                         <parameter name="error-code" value="500" />\r
543                                                                         <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
544                                                                     </return>\r
545                                                                 </outcome>\r
546                                                             </call>\r
547                                                             <set>\r
548                                                                 <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].client-key'\r
549                                                                            value='`$generate-unique-name-output.generated-name`' />\r
550                                                                 <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].info'\r
551                                                                            value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />\r
552                                                                 <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].mask'\r
553                                                                            value='32' />\r
554                                                             </set>\r
555                                                         </block>\r
556                                                     </for>\r
557                                                     <set>\r
558                                                         <parameter name='eipam-ip-block.plans[$plans-index].requests_length'\r
559                                                                    value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-count`' />\r
560                                                     </set>\r
561                                                 </block>\r
562                                             </for>\r
563                                             <set>\r
564                                                 <parameter name='eipam-ip-block.plans[$plans-index].plan-name' value='`$selected-plan-name`' />\r
565                                                 <parameter name='eipam-ip-block.plans[$plans-index].address-family'\r
566                                                            value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version`' />\r
567                                             </set>\r
568                                             <set>\r
569                                                 <parameter name='plans-index' value='`$plans-index + 1`' />\r
570                                             </set>\r
571                                         </block>\r
572                                     </outcome>\r
573                                 </switch>\r
574                             </for>\r
575                         </block>\r
576                     </for>\r
577                 </block>\r
578             </for>\r
579             <set>\r
580                 <parameter name='eipam-ip-block.plans_length' value='`$plans-index`' />\r
581             </set>\r
582             <!--EIPAM plug-in needs this attribute set with this name-->\r
583             <set>\r
584                 <parameter name='service-data.service-information.service-type' value='`$service-data.service-information.subscription-service-type`' />\r
585             </set>\r
586             <switch test='`$plans-index &gt; 0`'>\r
587                 <outcome value='true'>\r
588                     <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">\r
589                         <outcome value='failure'>\r
590                             <return status="failure">\r
591                                 <parameter name="ack-final" value="Y" />\r
592                                 <parameter name="error-code" value="500"/>\r
593                                 <parameter name="error-message" value="An error occured while obtaining new address blocks from EIPAM." />\r
594                             </return>\r
595                         </outcome>\r
596                     </execute>\r
597                 </outcome>\r
598             </switch>\r
599             <set>\r
600                 <parameter name='plans-index' value='0' />\r
601             </set>\r
602             <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
603                 <for 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
604                     <for index='ip-version-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length`' >\r
605                         <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].use-dhcp`'>\r
606                             <outcome value='N'>\r
607                                 <block atomic="true">\r
608                                     <for index='ip-index' start='0' end='`$eipam-ip-block.plans[$plans-index].requests_length`' >\r
609                                         <set>\r
610                                             <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip[$ip-index]'\r
611                                                        value='`$eipam-ip-block.plans[$plans-index].requests[$ip-index].ip-prefix`' />\r
612                                         </set>\r
613                                     </for>\r
614                                     <set>\r
615                                         <parameter name='plans-index' value='`$plans-index + 1`' />\r
616                                     </set>\r
617                                 </block>\r
618                             </outcome>\r
619                         </switch>\r
620                     </for>\r
621                 </for>\r
622             </for>\r
623             <set>\r
624                 <parameter name='vf-module-object-path'\r
625                            value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $service-data.service-topology.service-topology-identifier.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vf-modules/vf-module/' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id + '/vf-module-data/vf-module-topology/'`"/>\r
626             </set>\r
627             <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
628                     resource="vf-module"\r
629                     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
630                     AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
631                     force="true" pfx="tmp.AnAI-data">\r
632                 <parameter name="vf-module-name" value="`$tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name`" />\r
633                 <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.onap-model-information.model-invariant-uuid`" />\r
634                 <parameter name="model-version-id" value="`$tmp.vf-module-topology.onap-model-information.model-uuid`" />\r
635                 <parameter name="model-customization-id" value="`$tmp.vf-module-topology.onap-model-information.model-customization-uuid`" />\r
636                 <parameter name="selflink" value="`$vf-module-object-path`" />\r
637                 <outcome value='failure'>\r
638                     <block atomic="true">\r
639                         <switch test='`$plans-index &gt; 0`'>\r
640                             <outcome value='true'>\r
641                                 <block atomic="true">\r
642                                     <set>\r
643                                         <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />\r
644                                     </set>\r
645                                     <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
646                                             key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" >\r
647                                         <outcome value='failure'>\r
648                                             <return status='failure'>\r
649                                                 <parameter name='ack-final' value='Y'/>\r
650                                                 <parameter name="error-code" value="500" />\r
651                                                 <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table on rollback" />\r
652                                             </return>\r
653                                         </outcome>\r
654                                     </update>\r
655                                     <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
656                                         <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
657                                         <outcome value='failure'>\r
658                                             <return status='failure'>\r
659                                                 <parameter name='ack-final' value='Y'/>\r
660                                                 <parameter name="error-code" value="500" />\r
661                                                 <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback" />\r
662                                             </return>\r
663                                         </outcome>\r
664                                     </execute>\r
665                                 </block>\r
666                             </outcome>\r
667                         </switch>\r
668                         <return status='failure'>\r
669                             <parameter name='ack-final' value='Y'/>\r
670                             <parameter name="error-code" value="500" />\r
671                             <parameter name="error-message" value="Error updating vf-module in AAI" />\r
672                         </return>\r
673                     </block>\r
674                 </outcome>\r
675                 <outcome value='not-found'>\r
676                     <block atomic="true">\r
677                         <switch test='`$plans-index &gt; 0`'>\r
678                             <outcome value='true'>\r
679                                 <block atomic="true">\r
680                                     <set>\r
681                                         <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />\r
682                                     </set>\r
683                                     <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
684                                             key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" >\r
685                                         <outcome value='failure'>\r
686                                             <return status='failure'>\r
687                                                 <parameter name='ack-final' value='Y'/>\r
688                                                 <parameter name="error-code" value="500" />\r
689                                                 <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table on rollback" />\r
690                                             </return>\r
691                                         </outcome>\r
692                                     </update>\r
693                                     <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
694                                         <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
695                                         <outcome value='failure'>\r
696                                             <return status='failure'>\r
697                                                 <parameter name='ack-final' value='Y'/>\r
698                                                 <parameter name="error-code" value="500" />\r
699                                                 <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback" />\r
700                                             </return>\r
701                                         </outcome>\r
702                                     </execute>\r
703                                 </block>\r
704                             </outcome>\r
705                         </switch>\r
706                         <return status='failure'>\r
707                             <parameter name='ack-final' value='Y'/>\r
708                             <parameter name="error-code" value="500" />\r
709                             <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
710                         </return>\r
711                     </block>\r
712                 </outcome>\r
713             </update>\r
714             <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
715                 <for 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
716                     <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
717                           resource="vf-module:relationship-list"\r
718                           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
719                           AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
720                           force="true" pfx="tmp.AnAI-data">\r
721                         <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
722                         <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />\r
723                         <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />\r
724                         <outcome value='failure'>\r
725                             <block atomic="true">\r
726                                 <switch test='`$plans-index &gt; 0`'>\r
727                                     <outcome value='true'>\r
728                                         <block atomic="true">\r
729                                             <set>\r
730                                                 <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />\r
731                                             </set>\r
732                                             <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
733                                                     key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" >\r
734                                                 <outcome value='failure'>\r
735                                                     <return status='failure'>\r
736                                                         <parameter name='ack-final' value='Y'/>\r
737                                                         <parameter name="error-code" value="500" />\r
738                                                         <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table on rollback" />\r
739                                                     </return>\r
740                                                 </outcome>\r
741                                             </update>\r
742                                             <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
743                                                 <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
744                                                 <outcome value='failure'>\r
745                                                     <return status='failure'>\r
746                                                         <parameter name='ack-final' value='Y'/>\r
747                                                         <parameter name="error-code" value="500" />\r
748                                                         <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback" />\r
749                                                     </return>\r
750                                                 </outcome>\r
751                                             </execute>\r
752                                         </block>\r
753                                     </outcome>\r
754                                 </switch>\r
755                                 <return status='failure'>\r
756                                     <parameter name='ack-final' value='Y'/>\r
757                                     <parameter name="error-code" value="500" />\r
758                                     <parameter name="error-message" value="Error updating vf-module relationships in AAI" />\r
759                                 </return>\r
760                             </block>\r
761                         </outcome>\r
762                         <outcome value='not-found'>\r
763                             <block atomic="true">\r
764                                 <switch test='`$plans-index &gt; 0`'>\r
765                                     <outcome value='true'>\r
766                                         <block atomic="true">\r
767                                             <set>\r
768                                                 <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />\r
769                                             </set>\r
770                                             <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
771                                                     key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" >\r
772                                                 <outcome value='failure'>\r
773                                                     <return status='failure'>\r
774                                                         <parameter name='ack-final' value='Y'/>\r
775                                                         <parameter name="error-code" value="500" />\r
776                                                         <parameter name="error-message" value="Error updating EIPAM_IP_ASSIGNMENTS table on rollback" />\r
777                                                     </return>\r
778                                                 </outcome>\r
779                                             </update>\r
780                                             <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
781                                                 <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
782                                                 <outcome value='failure'>\r
783                                                     <return status='failure'>\r
784                                                         <parameter name='ack-final' value='Y'/>\r
785                                                         <parameter name="error-code" value="500" />\r
786                                                         <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback" />\r
787                                                     </return>\r
788                                                 </outcome>\r
789                                             </execute>\r
790                                         </block>\r
791                                     </outcome>\r
792                                 </switch>\r
793                                 <return status='failure'>\r
794                                     <parameter name='ack-final' value='Y'/>\r
795                                     <parameter name="error-code" value="500" />\r
796                                     <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
797                                 </return>\r
798                             </block>\r
799                         </outcome>\r
800                     </save>\r
801                 </for>\r
802             </for>\r
803             <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
804                 <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >\r
805                     <block atomic="true">\r
806                         <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
807                                 key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id\r
808                                 AND ecomp_service_instance_id = $service-data.service-information.service-instance-id\r
809                                 AND vm_name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >\r
810                             <outcome value='failure'>\r
811                                 <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
812                                     <parameter name="logger" value="message-log"/>\r
813                                     <parameter name="field1" value="__TIMESTAMP__"/>\r
814                                     <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>\r
815                                     <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>\r
816                                     <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>\r
817                                 </record>\r
818                             </outcome>\r
819                         </delete>\r
820                         <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
821                               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 , 'CloudOwner')" >\r
822                             <outcome value='failure'>\r
823                                 <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
824                                     <parameter name="logger" value="message-log"/>\r
825                                     <parameter name="field1" value="__TIMESTAMP__"/>\r
826                                     <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>\r
827                                     <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>\r
828                                     <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>\r
829                                 </record>\r
830                             </outcome>\r
831                         </save>\r
832                     </block>\r
833                 </for>\r
834             </for>\r
835             <set>\r
836                 <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
837             </set>\r
838             <set>\r
839                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'\r
840                            value='$vf-module-topology-operation-input.sdnc-request-header.' />\r
841                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.'\r
842                            value='$vf-module-topology-operation-input.request-information.' />\r
843                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'\r
844                            value='$vf-module-topology-operation-input.service-information.' />\r
845                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'\r
846                            value='$vf-module-topology-operation-input.vnf-information.' />\r
847                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'\r
848                            value='$vf-module-topology-operation-input.vf-module-information.' />\r
849                 <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
850                            value='$vf-module-topology-operation-input.vf-module-request-input.' />\r
851             </set>\r
852             <call module='GENERIC-RESOURCE-API' rpc='gw-vfmodule-update' mode='sync' ></call>\r
853             <set>\r
854                 <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
855                            value='PendingCreate' />\r
856                 <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
857                            value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\r
858                 <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
859                            value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\r
860             </set>\r
861             <return status='success'>\r
862                 <parameter name="ack-final-indicator" value="Y" />\r
863                 <parameter name="error-code" value="200" />\r
864                 <parameter name="error-message" value="`$error-message`" />\r
865             </return>\r
866         </block>\r
867     </method>\r
868 </service-logic>