Remove active printContexts from DGs
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vnf-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='${project.version}'>\r
2     <method rpc='vnf-topology-operation-assign' mode='sync'>\r
3         <block atomic="true">\r
4             <switch test='`$vnf-topology-operation-input.request-information.request-action`'>\r
5                 <outcome value='CreateVnfInstance'>\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 'CreateVnfInstance'" />\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_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\r
18                           pfx='db.vf-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_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 VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />\r
31                     </return>\r
32                 </outcome>\r
33             </get-resource>\r
34             <switch test='`$service-data.vnfs.vnf_length`'>\r
35                 <outcome value=''>\r
36                     <set>\r
37                         <parameter name='vnf-index' value='0' />\r
38                     </set>\r
39                 </outcome>\r
40                 <outcome value='Other'>\r
41                     <block>\r
42                         <set>\r
43                             <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\r
44                         </set>\r
45                         <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
46                             <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\r
47                                 <outcome value='true'>\r
48                                     <return status='failure'>\r
49                                         <parameter name='ack-final' value='Y'/>\r
50                                         <parameter name="error-code" value="500" />\r
51                                         <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />\r
52                                     </return>\r
53                                 </outcome>\r
54                             </switch>\r
55                         </for>\r
56                     </block>\r
57                 </outcome>\r
58             </switch>\r
59             <set>\r
60                 <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\r
61             </set>\r
62             <set>\r
63                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'\r
64                            value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
65                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'\r
66                            value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />\r
67                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'\r
68                            value='`$db.vf-model.nf-type`' />\r
69                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'\r
70                            value='`$db.vf-model.nf-role`' />\r
71                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'\r
72                            value='`$db.vf-model.nf-function`' />\r
73                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'\r
74                            value='`$db.vf-model.nf-code`' />\r
75                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'\r
76                            value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />\r
77                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'\r
78                            value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />\r
79             </set>\r
80             <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-name`'>\r
81                 <outcome value=''>\r
82                     <block atomic="true">\r
83                         <switch test='`$db.vf-model.ecomp-generated-naming`'>\r
84                             <outcome value='Y'>\r
85                                 <block></block>\r
86                             </outcome>\r
87                             <outcome value='N'>\r
88                                 <return status='failure'>\r
89                                     <parameter name='ack-final' value='Y'/>\r
90                                     <parameter name="error-code" value="500" />\r
91                                     <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />\r
92                                 </return>\r
93                             </outcome>\r
94                             <outcome value='Other'>\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="No vnf-name was received but ecomp-generated-naming is not Y" />\r
99                                 </return>\r
100                             </outcome>\r
101                         </switch>\r
102                         <set>\r
103                             <parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />\r
104                             <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\r
105                             <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />\r
106                             <parameter name='generate-unique-name-input.prefix' value="`'z' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + $db.vf-model.nf-code`" />\r
107                             <parameter name='generate-unique-name-input.index-length' value='2' />\r
108                         </set>\r
109                         <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
110                             <outcome value='failure'>\r
111                                 <return status='failure'>\r
112                                     <parameter name='ack-final' value='Y'/>\r
113                                     <parameter name="error-code" value="500" />\r
114                                     <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
115                                 </return>\r
116                             </outcome>\r
117                             <outcome value='success'>\r
118                                 <set>\r
119                                     <parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />\r
120                                 </set>\r
121                             </outcome>\r
122                         </call>\r
123                     </block>\r
124                 </outcome>\r
125                 <outcome value='Other'>\r
126                     <block atomic="true">\r
127                         <set>\r
128                             <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />\r
129                             <parameter name='generate-unique-name-input.supplied-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-name`' />\r
130                         </set>\r
131                         <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\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="`$generate-unique-name-output.error-message`" />\r
137                                 </return>\r
138                             </outcome>\r
139                             <outcome value='success'>\r
140                                 <set>\r
141                                     <parameter name='tmp.vnf-name' value="`$vnf-topology-operation-input.vnf-request-input.vnf-name`" />\r
142                                 </set>\r
143                             </outcome>\r
144                         </call>\r
145                     </block>\r
146                 </outcome>\r
147             </switch>\r
148             <set>\r
149                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'\r
150                            value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
151             </set>\r
152             <set>\r
153                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'\r
154                            value='`$tmp.vnf-name`' />\r
155             </set>\r
156             <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>\r
157                 <outcome value=''>\r
158                     <set>\r
159                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\r
160                                    value='`$db.vf-model.invariant-uuid`' />\r
161                     </set>\r
162                 </outcome>\r
163                 <outcome value='Other'>\r
164                     <set>\r
165                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\r
166                                    value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
167                     </set>\r
168                 </outcome>\r
169             </switch>\r
170             <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>\r
171                 <outcome value=''>\r
172                     <set>\r
173                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\r
174                                    value='`$db.vf-model.uuid`' />\r
175                     </set>\r
176                 </outcome>\r
177                 <outcome value='Other'>\r
178                     <set>\r
179                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\r
180                                    value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
181                     </set>\r
182                 </outcome>\r
183             </switch>\r
184             <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>\r
185                 <outcome value=''>\r
186                     <set>\r
187                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\r
188                                    value='`$db.vf-model.version`' />\r
189                     </set>\r
190                 </outcome>\r
191                 <outcome value='Other'>\r
192                     <set>\r
193                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\r
194                                    value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />\r
195                     </set>\r
196                 </outcome>\r
197             </switch>\r
198             <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>\r
199                 <outcome value=''>\r
200                     <set>\r
201                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\r
202                                    value='`$db.vf-model.name`' />\r
203                     </set>\r
204                 </outcome>\r
205                 <outcome value='Other'>\r
206                     <set>\r
207                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\r
208                                    value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />\r
209                     </set>\r
210                 </outcome>\r
211             </switch>\r
212             <set>\r
213                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\r
214                            value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
215             </set>\r
216             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
217                           resource="cloud-region"\r
218                           key="cloud-region.cloud-owner = 'CloudOwner' AND\r
219              cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\r
220              depth='0'"\r
221                           pfx='aai.cloud-region' local-only='false' >\r
222                 <outcome value='not-found'>\r
223                     <return status='failure'>\r
224                         <parameter name='ack-final' value='Y'/>\r
225                         <parameter name="error-code" value="500" />\r
226                         <parameter name="error-message" value="Cloud region not found in AAI" />\r
227                     </return>\r
228                 </outcome>\r
229                 <outcome value='failure'>\r
230                     <return status='failure'>\r
231                         <parameter name='ack-final' value='Y'/>\r
232                         <parameter name="error-code" value="500" />\r
233                         <parameter name="error-message" value="Error retrieving cloud region from AAI" />\r
234                     </return>\r
235                 </outcome>\r
236             </get-resource>\r
237             <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\r
238                 <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\r
239                     <outcome value='complex'>\r
240                         <block atomic="true">\r
241                             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\r
242                                 <parameter name='ctx_memory_result_key' value='aai-uid-split' />\r
243                                 <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\r
244                                 <parameter name='regex' value='/' />\r
245                             </execute>\r
246                             <set>\r
247                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli'\r
248                                            value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\r
249                             </set>\r
250                             <break></break>\r
251                         </block>\r
252                     </outcome>\r
253                 </switch>\r
254             </for>\r
255             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
256                           resource="availability-zones"\r
257                           key="cloud-region.cloud-owner = 'CloudOwner' AND\r
258              cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\r
259              depth='0'"\r
260                           pfx='aai.az' local-only='false' >\r
261                 <outcome value='failure'>\r
262                     <return status='failure'>\r
263                         <parameter name='ack-final' value='Y'/>\r
264                         <parameter name="error-code" value="500" />\r
265                         <parameter name="error-message" value="Error retrieving availability zones from AAI" />\r
266                     </return>\r
267                 </outcome>\r
268             </get-resource>\r
269             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>\r
270                 <outcome value=''>\r
271                     <return status='failure'>\r
272                         <parameter name='ack-final' value='Y'/>\r
273                         <parameter name="error-code" value="500" />\r
274                         <parameter name="error-message" value="`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
275                     </return>\r
276                 </outcome>\r
277             </switch>\r
278             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
279                           key='SELECT * from VF_TO_NETWORK_ROLE_MAPPING WHERE vf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\r
280                           pfx='db.vf-network-role-mapping[]'>\r
281                 <outcome value='failure'>\r
282                     <return status='failure'>\r
283                         <parameter name='ack-final' value='Y'/>\r
284                         <parameter name="error-code" value="500" />\r
285                         <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />\r
286                     </return>\r
287                 </outcome>\r
288                 <outcome value='not-found'>\r
289                     <set>\r
290                         <parameter name='db.vf-network-role-mapping_length' value='0' />\r
291                     </set>\r
292                 </outcome>\r
293             </get-resource>\r
294             <set>\r
295                 <parameter name='network-index' value='0' />\r
296             </set>\r
297             <for index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'>\r
298                 <block atomic="true">\r
299                     <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
300                                   resource="l3-networks"\r
301                                   key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"\r
302                                   pfx='aai.l3-network' local-only='false'\r
303                     >\r
304                         <outcome value='not-found'>\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="`'No active l3-network found in AAI with cloud_region_id ' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + ' and network_role ' + $db.vf-network-role-mapping[$network-index].network-role`" />\r
309                             </return>\r
310                         </outcome>\r
311                         <outcome value='failure'>\r
312                             <return status='failure'>\r
313                                 <parameter name='ack-final' value='Y'/>\r
314                                 <parameter name="error-code" value="500" />\r
315                                 <parameter name="error-message" value="Error retrieving l3-network from AAI" />\r
316                             </return>\r
317                         </outcome>\r
318                     </get-resource>\r
319                     <set>\r
320                         <parameter name='l3-network-id' value='-1' />\r
321                     </set>\r
322                     <block>\r
323                         <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >\r
324                             <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>\r
325                                 <outcome value='PendingCreate'>\r
326                                     <block></block>\r
327                                 </outcome>\r
328                                 <outcome value='Pending Create'>\r
329                                     <block></block>\r
330                                 </outcome>\r
331                                 <outcome value='PendingDelete'>\r
332                                     <block></block>\r
333                                 </outcome>\r
334                                 <outcome value='Pending Delete'>\r
335                                     <block></block>\r
336                                 </outcome>\r
337                                 <outcome value='Other'>\r
338                                     <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >\r
339                                         <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>\r
340                                             <outcome value='cloud-region'>\r
341                                                 <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >\r
342                                                     <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\r
343                                                         <outcome value='cloud-region.cloud-region-id'>\r
344                                                             <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>\r
345                                                                 <outcome value='true'>\r
346                                                                     <block atomic="true">\r
347                                                                         <set>\r
348                                                                             <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
349                                                                         </set>\r
350                                                                         <return status='failure'></return>\r
351                                                                     </block>\r
352                                                                 </outcome>\r
353                                                             </switch>\r
354                                                         </outcome>\r
355                                                     </switch>\r
356                                                 </for>\r
357                                             </outcome>\r
358                                         </switch>\r
359                                     </for>\r
360                                 </outcome>\r
361                             </switch>\r
362                         </for>\r
363                         <return status='success'></return>\r
364                     </block>\r
365                     <switch test='`$l3-network-id`'>\r
366                         <outcome value='-1'>\r
367                             <return status='failure'>\r
368                                 <parameter name='ack-final' value='Y'/>\r
369                                 <parameter name="error-code" value="500" />\r
370                                 <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />\r
371                             </return>\r
372                         </outcome>\r
373                     </switch>\r
374                     <set>\r
375                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'\r
376                                    value='`$db.vf-network-role-mapping[$role-index].network-role`' />\r
377                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'\r
378                                    value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />\r
379                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'\r
380                                    value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />\r
381                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'\r
382                                    value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
383                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].contrail-network-fqdn'\r
384                                    value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />\r
385                     </set>\r
386                     <for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[0].subnets.subnet_length`' >\r
387                         <set>\r
388                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].ip-version'\r
389                                        value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`' />\r
390                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-id'\r
391                                        value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />\r
392                         </set>\r
393                     </for>\r
394                     <set>\r
395                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'\r
396                                    value='`$aai.l3-network.l3-network[0].subnets.subnet_length`' />\r
397                     </set>\r
398                     <set>\r
399                         <parameter name='network-index' value='`$network-index + 1`' />\r
400                     </set>\r
401                 </block>\r
402             </for>\r
403             <set>\r
404                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\r
405                            value='`$network-index`' />\r
406             </set>\r
407             <set>\r
408                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'\r
409                            value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />\r
410             </set>\r
411             <switch test='`$aai.az.availability-zone_length`'>\r
412                 <outcome value=''>\r
413                     <switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>\r
414                         <outcome value='true'>\r
415                             <return status='failure'>\r
416                                 <parameter name='ack-final' value='Y'/>\r
417                                 <parameter name="error-code" value="500" />\r
418                                 <parameter name="error-message" value="`'No availability zones found in AAI for cloud region ' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
419                             </return>\r
420                         </outcome>\r
421                         <outcome value='false'>\r
422                             <set>\r
423                                 <parameter name='aai.az.availability-zone_length' value='0' />\r
424                             </set>\r
425                         </outcome>\r
426                     </switch>\r
427                 </outcome>\r
428             </switch>\r
429             <for index='idx' start='0' end='`$aai.az.availability-zone_length`' >\r
430                 <block atomic="true">\r
431                     <set>\r
432                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'\r
433                                    value='`$aai.az.availability-zone[$idx].availability-zone-name`' />\r
434                     </set>\r
435                     <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
436                           resource="generic-vnf:relationship-list"\r
437                           key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
438                           force="true" pfx="tmp.AnAI-data">\r
439                         <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />\r
440                         <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />\r
441                         <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="CloudOwner" />\r
442                         <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />\r
443                         <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
444                         <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" />\r
445                         <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$aai.az.availability-zone[$idx].availability-zone-name`" />\r
446                         <outcome value='failure'>\r
447                             <return status='failure'>\r
448                                 <parameter name='ack-final' value='Y'/>\r
449                                 <parameter name="error-code" value="500" />\r
450                                 <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
451                             </return>\r
452                         </outcome>\r
453                         <outcome value='not-found'>\r
454                             <return status='failure'>\r
455                                 <parameter name='ack-final' value='Y'/>\r
456                                 <parameter name="error-code" value="500" />\r
457                                 <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
458                             </return>\r
459                         </outcome>\r
460                     </save>\r
461                 </block>\r
462             </for>\r
463             <set>\r
464                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'\r
465                            value='`$db.vf-model.avail-zone-max-count`' />\r
466                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'\r
467                            value='`$aai.az.availability-zone_length`' />\r
468             </set>\r
469             <for index='vnf-nw-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\r
470                 <block atomic="true">\r
471                     <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
472                           resource="generic-vnf:relationship-list"\r
473                           key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
474                           force="true" pfx="tmp.AnAI-data">\r
475                         <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
476                         <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />\r
477                         <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-nw-index].network-id`" />\r
478                         <outcome value='failure'>\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="Error updating generic-vnf in AAI" />\r
483                             </return>\r
484                         </outcome>\r
485                         <outcome value='not-found'>\r
486                             <return status='failure'>\r
487                                 <parameter name='ack-final' value='Y'/>\r
488                                 <parameter name="error-code" value="500" />\r
489                                 <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
490                             </return>\r
491                         </outcome>\r
492                     </save>\r
493                 </block>\r
494             </for>\r
495             <set>\r
496                 <parameter name='vnf-object-path'\r
497                            value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $vnf-topology-operation-input.service-information.service-instance-id + '/service-data/vnfs/vnf/' + $service-data.vnfs.vnf[$vnf-index].vnf-id + '/vnf-data/vnf-topology'`"/>\r
498             </set>\r
499             <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
500                     resource="generic-vnf"\r
501                     key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"\r
502                     force="true" pfx="tmp.AnAI-data">\r
503                 <parameter name="vnf-name" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`" />\r
504                 <parameter name="prov-status" value="PREPROV" />\r
505                 <parameter name="operational-status" value="out-of-service-path" />\r
506                 <parameter name="equipment-role" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`" />\r
507                 <parameter name="model-invariant-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`" />\r
508                 <parameter name="model-version-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`" />\r
509                 <parameter name="model-customization-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />\r
510                 <parameter name="selflink" value="`$vnf-object-path`" />\r
511                 <outcome value='failure'>\r
512                     <return status='failure'>\r
513                         <parameter name='ack-final' value='Y'/>\r
514                         <parameter name="error-code" value="500" />\r
515                         <parameter name="error-message" value="Error updating selflink in generic-vnf in AAI" />\r
516                     </return>\r
517                 </outcome>\r
518                 <outcome value='not-found'>\r
519                     <return status='failure'>\r
520                         <parameter name='ack-final' value='Y'/>\r
521                         <parameter name="error-code" value="500" />\r
522                         <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
523                     </return>\r
524                 </outcome>\r
525             </update>\r
526             <set>\r
527                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
528                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
529                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
530                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\r
531                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\r
532             </set>\r
533             <set>\r
534                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\r
535                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\r
536                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\r
537             </set>\r
538             <return status='success'>\r
539                 <parameter name="ack-final-indicator" value="Y" />\r
540                 <parameter name="error-code" value="200" />\r
541                 <parameter name="error-message" value="`$error-message`" />\r
542             </return>\r
543         </block>\r
544     </method>\r
545 </service-logic>