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