Merge "Fixes to getpathsegment composite and VNF assign"
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vnf-topology-operation-assign.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' mode='sync'>\r
5         <block atomic="true">\r
6             <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
7                 <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
8                 <parameter name='contextPrefix' value='prop' />\r
9             </execute>\r
10             <switch test='`$vnf-topology-operation-input.request-information.request-action`'>\r
11                 <outcome value='CreateVnfInstance'>\r
12                     <block></block>\r
13                 </outcome>\r
14                 <outcome value='Other'>\r
15                     <return status='failure'>\r
16                         <parameter name='ack-final' value='Y'/>\r
17                         <parameter name="error-code" value="500" />\r
18                         <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVnfInstance'" />\r
19                     </return>\r
20                 </outcome>\r
21             </switch>\r
22             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
23   key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\r
24   pfx='db.vf-model'>\r
25                 <outcome value='failure'>\r
26                     <return status='failure'>\r
27                         <parameter name='ack-final' value='Y'/>\r
28                         <parameter name="error-code" value="500" />\r
29                         <parameter name="error-message" value="Error reading VF_MODEL table" />\r
30                     </return>\r
31                 </outcome>\r
32                 <outcome value='not-found'>\r
33                     <return status='failure'>\r
34                         <parameter name='ack-final' value='Y'/>\r
35                         <parameter name="error-code" value="500" />\r
36                         <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
37                     </return>\r
38                 </outcome>\r
39             </get-resource>\r
40             <block atomic="true">\r
41                 <set>\r
42                     <parameter name='tmp.exist.sdnc-model-name' value='false' />\r
43                     <parameter name='tmp.exist.sdnc-artifact-name' value='false' />\r
44                 </set>\r
45                 <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">\r
46                     <outcome value=''>\r
47                         <set>\r
48                             <parameter name='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length' value='0' />\r
49                         </set>\r
50                     </outcome>\r
51                 </switch>\r
52                 <for silentFailure='true' index='p' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >\r
53                     <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$p].name`">\r
54                         <outcome value='sdnc_model_name'>\r
55                             <set>\r
56                                 <parameter name='tmp.exist.sdnc-model-name' value='true' />\r
57                             </set>\r
58                         </outcome>\r
59                         <outcome value='sdnc_artifact_name'>\r
60                             <set>\r
61                                 <parameter name='tmp.exist.sdnc-artifact-name' value='true' />\r
62                             </set>\r
63                         </outcome>\r
64                     </switch>\r
65                 </for>\r
66                 <switch test="`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.sdnc-artifact-name == 'true'`">\r
67                     <outcome value='true'>\r
68                         <block atomic="true">\r
69                             <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-assign' mode='sync' >\r
70                                 <outcome value='failure'>\r
71                                     <return status='failure'>\r
72                                         <parameter name='ack-final' value='Y'/>\r
73                                         <parameter name="error-code" value="500" />\r
74                                         <parameter name="error-message" value="`'Failed to create self-serve assignment for vnf with vnf-id=' + $vnf-topology-operation-input.vnf-information.vnf-id`" />\r
75                                     </return>\r
76                                 </outcome>\r
77                             </call>\r
78                             <set>\r
79                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\r
80                                 <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
81                                 <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
82                             </set>\r
83                             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
84                                 <parameter name='filename' value='/var/tmp/ss-vnfend.log' />\r
85                             </execute>\r
86                             <return status='success'>\r
87                                 <parameter name="ack-final-indicator" value="Y" />\r
88                                 <parameter name="error-code" value="200" />\r
89                                 <parameter name="error-message" value="`$error-message`" />\r
90                             </return>\r
91                         </block>\r
92                     </outcome>\r
93                     <outcome value='false'>\r
94                         <switch test="`$db.vf-model.sdnc-model-name != '' and $db.vf-model.sdnc-artifact-name != ''`">\r
95                             <outcome value='true'>\r
96                                 <block atomic="true">\r
97                                     <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-assign' mode='sync' >\r
98                                         <outcome value='failure'>\r
99                                             <return status='failure'>\r
100                                                 <parameter name='ack-final' value='Y'/>\r
101                                                 <parameter name="error-code" value="500" />\r
102                                                 <parameter name="error-message" value="`'Failed to create self-serve assignment for vnf with vnf-id=' + $vnf-topology-operation-input.vnf-information.vnf-id`" />\r
103                                             </return>\r
104                                         </outcome>\r
105                                     </call>\r
106                                     <set>\r
107                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\r
108                                         <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
109                                         <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
110                                     </set>\r
111                                     <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
112                                         <parameter name='filename' value='/var/tmp/ss-vnfend.log' />\r
113                                     </execute>\r
114                                     <return status='success'>\r
115                                         <parameter name="ack-final-indicator" value="Y" />\r
116                                         <parameter name="error-code" value="200" />\r
117                                         <parameter name="error-message" value="`$error-message`" />\r
118                                     </return>\r
119                                 </block>\r
120                             </outcome>\r
121                             <outcome value='false'>\r
122                                 <block atomic="true">\r
123                                     <switch test='`$service-data.vnfs.vnf_length`'>\r
124                                         <outcome value=''>\r
125                                             <set>\r
126                                                 <parameter name='vnf-index' value='0' />\r
127                                             </set>\r
128                                         </outcome>\r
129                                         <outcome value='Other'>\r
130                                             <block>\r
131                                                 <set>\r
132                                                     <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\r
133                                                 </set>\r
134                                                 <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
135                                                     <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\r
136                                                         <outcome value='true'>\r
137                                                             <return status='failure'>\r
138                                                                 <parameter name='ack-final' value='Y'/>\r
139                                                                 <parameter name="error-code" value="500" />\r
140                                                                 <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\r
141       + ' already exists'`" />\r
142                                                             </return>\r
143                                                         </outcome>\r
144                                                     </switch>\r
145                                                 </for>\r
146                                             </block>\r
147                                         </outcome>\r
148                                     </switch>\r
149                                     <set>\r
150                                         <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\r
151                                     </set>\r
152                                     <set>\r
153                                         <parameter name='tmp.vnf-network-collection_length' value='0' />\r
154                                     </set>\r
155                                     <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >\r
156                                         <block atomic="true">\r
157                                             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
158                 resource="instance-group" \r
159                 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
160         pfx='aai.instance-group' local-only='false' >\r
161                                                 <outcome value='not-found'>\r
162                                                     <return status='failure'>\r
163                                                         <parameter name='ack-final' value='Y'/>\r
164                                                         <parameter name="error-code" value="500" />\r
165                                                         <parameter name="error-message" value="`'Cannot find instance group id ' +\r
166       $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\r
167       + ' in AAI'`" />\r
168                                                     </return>\r
169                                                 </outcome>\r
170                                                 <outcome value='failure'>\r
171                                                     <return status='failure'>\r
172                                                         <parameter name='ack-final' value='Y'/>\r
173                                                         <parameter name="error-code" value="500" />\r
174                                                         <parameter name="error-message" value="Error retrieving instance-group from AAI" />\r
175                                                     </return>\r
176                                                 </outcome>\r
177                                             </get-resource>\r
178                                             <for index='rel-index' start='0' end='`$aai.instance-group.relationship-list.relationship_length`' >\r
179                                                 <switch test='`$aai.instance-group.relationship-list.relationship[$rel-index].related-to`'>\r
180                                                     <outcome value='collection'>\r
181                                                         <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
182                 resource="collection" \r
183                 key="collection.collection-id = $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value"\r
184         pfx='aai.collection' local-only='false' >\r
185                                                             <outcome value='not-found'>\r
186                                                                 <return status='failure'>\r
187                                                                     <parameter name='ack-final' value='Y'/>\r
188                                                                     <parameter name="error-code" value="500" />\r
189                                                                     <parameter name="error-message" value="`'Cannot find collection ' +\r
190       $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value\r
191       + ' in AAI'`" />\r
192                                                                 </return>\r
193                                                             </outcome>\r
194                                                             <outcome value='failure'>\r
195                                                                 <return status='failure'>\r
196                                                                     <parameter name='ack-final' value='Y'/>\r
197                                                                     <parameter name="error-code" value="500" />\r
198                                                                     <parameter name="error-message" value="System error retrieving collection from AAI" />\r
199                                                                 </return>\r
200                                                             </outcome>\r
201                                                             <outcome value='success'>\r
202                                                                 <block atomic="true">\r
203                                                                     <set>\r
204                                                                         <parameter name='found-network-instance-group' value='false' />\r
205                                                                     </set>\r
206                                                                     <for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\r
207                                                                         <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\r
208   == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\r
209                                                                             <outcome value='true'>\r
210                                                                                 <block>\r
211                                                                                     <set>\r
212                                                                                         <parameter name='found-network-instance-group' value='true' />\r
213                                                                                     </set>\r
214                                                                                     <break/>\r
215                                                                                 </block>\r
216                                                                             </outcome>\r
217                                                                         </switch>\r
218                                                                     </for>\r
219                                                                     <switch test='`$found-network-instance-group`'>\r
220                                                                         <outcome value='false'>\r
221                                                                             <return status='failure'>\r
222                                                                                 <parameter name='ack-final' value='Y'/>\r
223                                                                                 <parameter name="error-code" value="500" />\r
224                                                                                 <parameter name="error-message" value="`'Could not find network instance group ' +\r
225       $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\r
226       + ' in MD-SAL'`" />\r
227                                                                             </return>\r
228                                                                         </outcome>\r
229                                                                     </switch>\r
230                                                                     <set>\r
231                                                                         <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
232   value='`$aai.instance-group.instance-group-function`' />\r
233                                                                         <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
234   value='`$aai.instance-group.id`' />\r
235                                                                         <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
236   value='`$service-data.network-instance-groups.network-instance-group[$nig-index].service-instance-id`' />\r
237                                                                         <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
238   value='`$aai.collection.collection-customization-id`' />\r
239                                                                     </set>\r
240                                                                     <set>\r
241                                                                         <parameter name='tmp.vnf-network-collection_length' value='`$tmp.vnf-network-collection_length + 1`' />\r
242                                                                     </set>\r
243                                                                 </block>\r
244                                                             </outcome>\r
245                                                         </get-resource>\r
246                                                     </outcome>\r
247                                                 </switch>\r
248                                             </for>\r
249                                         </block>\r
250                                     </for>\r
251                                     <set>\r
252                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length'\r
253   value='`$tmp.vnf-network-collection_length`' />\r
254                                     </set>\r
255                                     <set>\r
256                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'\r
257  value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
258                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'\r
259  value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />\r
260                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'\r
261  value='`$db.vf-model.nf-type`' />\r
262                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'\r
263  value='`$db.vf-model.nf-role`' />\r
264                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'\r
265  value='`$db.vf-model.nf-function`' />\r
266                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'\r
267  value='`$db.vf-model.nf-code`' />\r
268                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'\r
269  value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />\r
270                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'\r
271  value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />\r
272                                     </set>\r
273                                     <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-name`'>\r
274                                         <outcome value=''>\r
275                                             <block atomic="true">\r
276                                                 <switch test='`$db.vf-model.ecomp-generated-naming`'>\r
277                                                     <outcome value='Y'>\r
278                                                         <block></block>\r
279                                                     </outcome>\r
280                                                     <outcome value='N'>\r
281                                                         <return status='failure'>\r
282                                                             <parameter name='ack-final' value='Y'/>\r
283                                                             <parameter name="error-code" value="500" />\r
284                                                             <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />\r
285                                                         </return>\r
286                                                     </outcome>\r
287                                                     <outcome value='Other'>\r
288                                                         <return status='failure'>\r
289                                                             <parameter name='ack-final' value='Y'/>\r
290                                                             <parameter name="error-code" value="500" />\r
291                                                             <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />\r
292                                                         </return>\r
293                                                     </outcome>\r
294                                                 </switch>\r
295                                                 <switch test='`$db.vf-model.naming-policy`'>\r
296                                                     <outcome value=''>\r
297                                                         <block atomic="true">\r
298                                                             <set>\r
299                                                                 <parameter name='generate-unique-name-input.action' value='ASSIGN' />\r
300                                                                 <parameter name='generate-unique-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
301                                                                 <parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />\r
302                                                                 <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\r
303                                                                 <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />\r
304                                                                 <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
305                                                             </set>\r
306                                                             <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
307                                                                 <outcome value='failure'>\r
308                                                                     <return status='failure'>\r
309                                                                         <parameter name='ack-final' value='Y'/>\r
310                                                                         <parameter name="error-code" value="500" />\r
311                                                                         <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
312                                                                     </return>\r
313                                                                 </outcome>\r
314                                                                 <outcome value='success'>\r
315                                                                     <set>\r
316                                                                         <parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />\r
317                                                                     </set>\r
318                                                                 </outcome>\r
319                                                             </call>\r
320                                                         </block>\r
321                                                     </outcome>\r
322                                                     <outcome value='Other'>\r
323                                                         <block atomic="true">\r
324                                                             <set>\r
325                                                                 <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vf-model.naming-policy`' />\r
326                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
327                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
328                                                                 <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\r
329                                                                 <parameter name='naming-policy-generate-name-input.query-parameter' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
330                                                             </set>\r
331                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\r
332                                                                 <outcome value='failure'>\r
333                                                                     <return status='failure'>\r
334                                                                         <parameter name='ack-final' value='Y'/>\r
335                                                                         <parameter name="error-code" value="500" />\r
336                                                                         <parameter name="error-message" value="Unable to generate VNF name" />\r
337                                                                     </return>\r
338                                                                 </outcome>\r
339                                                                 <outcome value='success'>\r
340                                                                     <set>\r
341                                                                         <parameter name='tmp.vnf-name' value='`$naming-policy-generate-name-output.vnf-name`' />\r
342                                                                     </set>\r
343                                                                 </outcome>\r
344                                                             </call>\r
345                                                         </block>\r
346                                                     </outcome>\r
347                                                 </switch>\r
348                                             </block>\r
349                                         </outcome>\r
350                                         <outcome value='Other'>\r
351                                             <set>\r
352                                                 <parameter name='tmp.vnf-name' value="`$vnf-topology-operation-input.vnf-request-input.vnf-name`" />\r
353                                             </set>\r
354                                         </outcome>\r
355                                     </switch>\r
356                                     <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
357                                         <parameter name='filename' value='/var/tmp/bgb-vnf.log' />\r
358                                     </execute>\r
359                                     <set>\r
360                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'\r
361    value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
362                                     </set>\r
363                                     <set>\r
364                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'\r
365    value='`$tmp.vnf-name`' />\r
366                                     </set>\r
367                                     <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>\r
368                                         <outcome value=''>\r
369                                             <set>\r
370                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\r
371   value='`$db.vf-model.invariant-uuid`' />\r
372                                             </set>\r
373                                         </outcome>\r
374                                         <outcome value='Other'>\r
375                                             <set>\r
376                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\r
377   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
378                                             </set>\r
379                                         </outcome>\r
380                                     </switch>\r
381                                     <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>\r
382                                         <outcome value=''>\r
383                                             <set>\r
384                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\r
385   value='`$db.vf-model.uuid`' />\r
386                                             </set>\r
387                                         </outcome>\r
388                                         <outcome value='Other'>\r
389                                             <set>\r
390                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\r
391   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
392                                             </set>\r
393                                         </outcome>\r
394                                     </switch>\r
395                                     <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>\r
396                                         <outcome value=''>\r
397                                             <set>\r
398                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\r
399   value='`$db.vf-model.version`' />\r
400                                             </set>\r
401                                         </outcome>\r
402                                         <outcome value='Other'>\r
403                                             <set>\r
404                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\r
405   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />\r
406                                             </set>\r
407                                         </outcome>\r
408                                     </switch>\r
409                                     <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>\r
410                                         <outcome value=''>\r
411                                             <set>\r
412                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\r
413   value='`$db.vf-model.name`' />\r
414                                             </set>\r
415                                         </outcome>\r
416                                         <outcome value='Other'>\r
417                                             <set>\r
418                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\r
419   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />\r
420                                             </set>\r
421                                         </outcome>\r
422                                     </switch>\r
423                                     <set>\r
424                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\r
425   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
426                                     </set>\r
427                                     <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
428                 resource="cloud-region" \r
429                 key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \r
430                      cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\r
431                      depth='all'"\r
432         pfx='aai.cloud-region' local-only='false' >\r
433                                         <outcome value='not-found'>\r
434                                             <block>\r
435                                                 <block atomic="true">\r
436                                                     <set>\r
437                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
438                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
439                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
440                                                     </set>\r
441                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
442                                                 </block>\r
443                                                 <return status='failure'>\r
444                                                     <parameter name='ack-final' value='Y'/>\r
445                                                     <parameter name="error-code" value="500" />\r
446                                                     <parameter name="error-message" value="Cloud region not found in AAI" />\r
447                                                 </return>\r
448                                             </block>\r
449                                         </outcome>\r
450                                         <outcome value='failure'>\r
451                                             <block>\r
452                                                 <block atomic="true">\r
453                                                     <set>\r
454                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
455                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
456                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
457                                                     </set>\r
458                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
459                                                 </block>\r
460                                                 <return status='failure'>\r
461                                                     <parameter name='ack-final' value='Y'/>\r
462                                                     <parameter name="error-code" value="500" />\r
463                                                     <parameter name="error-message" value="Error retrieving cloud region from AAI" />\r
464                                                 </return>\r
465                                             </block>\r
466                                         </outcome>\r
467                                     </get-resource>\r
468                                     <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\r
469                                         <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\r
470                                             <outcome value='complex'>\r
471                                                 <block atomic="true">\r
472                                                     <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\r
473                                                         <parameter name='ctx_memory_result_key' value='aai-uid-split' />\r
474                                                         <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\r
475                                                         <parameter name='regex' value='/' />\r
476                                                     </execute>\r
477                                                     <set>\r
478                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli'\r
479   value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\r
480                                                     </set>\r
481                                                     <break/>\r
482                                                 </block>\r
483                                             </outcome>\r
484                                         </switch>\r
485                                     </for>\r
486                                     <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>\r
487                                         <outcome value=''>\r
488                                             <block>\r
489                                                 <block atomic="true">\r
490                                                     <set>\r
491                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
492                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
493                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
494                                                     </set>\r
495                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
496                                                 </block>\r
497                                                 <return status='failure'>\r
498                                                     <parameter name='ack-final' value='Y'/>\r
499                                                     <parameter name="error-code" value="500" />\r
500                                                     <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
501                                                 </return>\r
502                                             </block>\r
503                                         </outcome>\r
504                                     </switch>\r
505                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
506   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
507   pfx='db.vf-network-role-mapping[]'>\r
508                                         <outcome value='failure'>\r
509                                             <block>\r
510                                                 <block atomic="true">\r
511                                                     <set>\r
512                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
513                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
514                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
515                                                     </set>\r
516                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
517                                                 </block>\r
518                                                 <return status='failure'>\r
519                                                     <parameter name='ack-final' value='Y'/>\r
520                                                     <parameter name="error-code" value="500" />\r
521                                                     <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />\r
522                                                 </return>\r
523                                             </block>\r
524                                         </outcome>\r
525                                         <outcome value='not-found'>\r
526                                             <set>\r
527                                                 <parameter name='db.vf-network-role-mapping_length' value='0' />\r
528                                             </set>\r
529                                         </outcome>\r
530                                     </get-resource>\r
531                                     <set>\r
532                                         <parameter name='network-index' value='0' />\r
533                                     </set>\r
534                                     <for index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'>\r
535                                         <switch test='`$db.vf-network-role-mapping[$role-index].network-role`'>\r
536                                             <outcome value=''>\r
537                                                 <block></block>\r
538                                             </outcome>\r
539                                             <outcome value='Other'>\r
540                                                 <block atomic="true">\r
541                                                     <set>\r
542                                                         <parameter name='aai.l3-network.' value='' />\r
543                                                     </set>\r
544                                                     <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
545                 resource="l3-networks" \r
546                 key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"\r
547         pfx='aai.l3-network' local-only='false'\r
548 >\r
549                                                         <outcome value='not-found'>\r
550                                                             <block>\r
551                                                                 <block atomic="true">\r
552                                                                     <set>\r
553                                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
554                                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
555                                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
556                                                                     </set>\r
557                                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
558                                                                 </block>\r
559                                                                 <return status='failure'>\r
560                                                                     <parameter name='ack-final' value='Y'/>\r
561                                                                     <parameter name="error-code" value="500" />\r
562                                                                     <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '\r
563           + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + ' and network_role '\r
564           + $db.vf-network-role-mapping[$network-index].network-role`" />\r
565                                                                 </return>\r
566                                                             </block>\r
567                                                         </outcome>\r
568                                                         <outcome value='failure'>\r
569                                                             <block>\r
570                                                                 <block atomic="true">\r
571                                                                     <set>\r
572                                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
573                                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
574                                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
575                                                                     </set>\r
576                                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
577                                                                 </block>\r
578                                                                 <return status='failure'>\r
579                                                                     <parameter name='ack-final' value='Y'/>\r
580                                                                     <parameter name="error-code" value="500" />\r
581                                                                     <parameter name="error-message" value="Error retrieving l3-network from AAI" />\r
582                                                                 </return>\r
583                                                             </block>\r
584                                                         </outcome>\r
585                                                     </get-resource>\r
586                                                     <set>\r
587                                                         <parameter name='l3-network-id' value='-1' />\r
588                                                     </set>\r
589                                                     <block>\r
590                                                         <set>\r
591                                                             <parameter name='found-network' value='false' />\r
592                                                         </set>\r
593                                                         <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >\r
594                                                             <block atomic="true">\r
595                                                                 <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>\r
596                                                                     <outcome value='PendingCreate'>\r
597                                                                         <block></block>\r
598                                                                     </outcome>\r
599                                                                     <outcome value='Pending Create'>\r
600                                                                         <block></block>\r
601                                                                     </outcome>\r
602                                                                     <outcome value='PendingDelete'>\r
603                                                                         <block></block>\r
604                                                                     </outcome>\r
605                                                                     <outcome value='Pending Delete'>\r
606                                                                         <block></block>\r
607                                                                     </outcome>\r
608                                                                     <outcome value='Other'>\r
609                                                                         <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >\r
610                                                                             <block atomic="true">\r
611                                                                                 <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>\r
612                                                                                     <outcome value='cloud-region'>\r
613                                                                                         <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
614                                                                                             <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\r
615                                                                                                 <outcome value='cloud-region.cloud-region-id'>\r
616                                                                                                     <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
617                                                                                                         <outcome value='true'>\r
618                                                                                                             <block atomic="true">\r
619                                                                                                                 <set>\r
620                                                                                                                     <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
621                                                                                                                 </set>\r
622                                                                                                                 <set>\r
623                                                                                                                     <parameter name='found-network' value='true' />\r
624                                                                                                                 </set>\r
625                                                                                                                 <break/>\r
626                                                                                                             </block>\r
627                                                                                                         </outcome>\r
628                                                                                                     </switch>\r
629                                                                                                 </outcome>\r
630                                                                                             </switch>\r
631                                                                                         </for>\r
632                                                                                     </outcome>\r
633                                                                                 </switch>\r
634                                                                                 <switch test='`$found-network`'>\r
635                                                                                     <outcome value='true'>\r
636                                                                                         <break/>\r
637                                                                                     </outcome>\r
638                                                                                 </switch>\r
639                                                                             </block>\r
640                                                                         </for>\r
641                                                                     </outcome>\r
642                                                                 </switch>\r
643                                                                 <switch test='`$found-network`'>\r
644                                                                     <outcome value='true'>\r
645                                                                         <break/>\r
646                                                                     </outcome>\r
647                                                                 </switch>\r
648                                                             </block>\r
649                                                         </for>\r
650                                                     </block>\r
651                                                     <switch test='`$l3-network-id`'>\r
652                                                         <outcome value='-1'>\r
653                                                             <block>\r
654                                                                 <block atomic="true">\r
655                                                                     <set>\r
656                                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
657                                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
658                                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
659                                                                     </set>\r
660                                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
661                                                                 </block>\r
662                                                                 <return status='failure'>\r
663                                                                     <parameter name='ack-final' value='Y'/>\r
664                                                                     <parameter name="error-code" value="500" />\r
665                                                                     <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
666                                                                 </return>\r
667                                                             </block>\r
668                                                         </outcome>\r
669                                                     </switch>\r
670                                                     <set>\r
671                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'\r
672     value='`$db.vf-network-role-mapping[$role-index].network-role`' />\r
673                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'\r
674     value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />\r
675                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'\r
676     value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />\r
677                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'\r
678     value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
679                                                         <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
680     value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />\r
681                                                     </set>\r
682                                                     <switch test='`$aai.l3-network.l3-network[0].subnets.subnet_length`'>\r
683                                                         <outcome value=''>\r
684                                                             <set>\r
685                                                                 <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
686    value='0' />\r
687                                                             </set>\r
688                                                         </outcome>\r
689                                                         <outcome value='0'>\r
690                                                             <set>\r
691                                                                 <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
692    value='0' />\r
693                                                             </set>\r
694                                                         </outcome>\r
695                                                         <outcome value='Other'>\r
696                                                             <block>\r
697                                                                 <for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[0].subnets.subnet_length`' >\r
698                                                                     <block>\r
699                                                                         <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`'>\r
700                                                                             <outcome value=''>\r
701                                                                                 <set>\r
702                                                                                     <parameter name='aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role' value='NONE' />\r
703                                                                                 </set>\r
704                                                                             </outcome>\r
705                                                                         </switch>\r
706                                                                         <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`'>\r
707                                                                             <outcome value='4'>\r
708                                                                                 <set>\r
709                                                                                     <parameter name='tmp.ip-version' value='ipv4' />\r
710                                                                                 </set>\r
711                                                                             </outcome>\r
712                                                                             <outcome value='6'>\r
713                                                                                 <set>\r
714                                                                                     <parameter name='tmp.ip-version' value='ipv6' />\r
715                                                                                 </set>\r
716                                                                             </outcome>\r
717                                                                         </switch>\r
718                                                                         <set>\r
719                                                                             <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
720    value='`$tmp.ip-version`' />\r
721                                                                             <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
722    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].neutron-subnet-id`' />\r
723                                                                             <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
724    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />\r
725                                                                             <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
726    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`' />\r
727                                                                             <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
728    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-name`' />\r
729                                                                         </set>\r
730                                                                         <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].dhcp-enabled`'>\r
731                                                                             <outcome value='true'>\r
732                                                                                 <set>\r
733                                                                                     <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
734    value='Y' />\r
735                                                                                 </set>\r
736                                                                             </outcome>\r
737                                                                             <outcome value='false'>\r
738                                                                                 <set>\r
739                                                                                     <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
740    value='N' />\r
741                                                                                 </set>\r
742                                                                             </outcome>\r
743                                                                         </switch>\r
744                                                                     </block>\r
745                                                                 </for>\r
746                                                                 <set>\r
747                                                                     <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
748    value='`$aai.l3-network.l3-network[0].subnets.subnet_length`' />\r
749                                                                 </set>\r
750                                                             </block>\r
751                                                         </outcome>\r
752                                                     </switch>\r
753                                                     <set>\r
754                                                         <parameter name='network-index' value='`$network-index + 1`' />\r
755                                                     </set>\r
756                                                 </block>\r
757                                             </outcome>\r
758                                         </switch>\r
759                                     </for>\r
760                                     <set>\r
761                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\r
762   value='`$network-index`' />\r
763                                     </set>\r
764                                     <set>\r
765                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'\r
766   value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />\r
767                                     </set>\r
768                                     <switch test='`$aai.cloud-region.availability-zones.availability-zone_length`'>\r
769                                         <outcome value=''>\r
770                                             <switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>\r
771                                                 <outcome value='true'>\r
772                                                     <block>\r
773                                                         <block atomic="true">\r
774                                                             <set>\r
775                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
776                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
777                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
778                                                             </set>\r
779                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
780                                                         </block>\r
781                                                         <return status='failure'>\r
782                                                             <parameter name='ack-final' value='Y'/>\r
783                                                             <parameter name="error-code" value="500" />\r
784                                                             <parameter name="error-message" value="`'No availability zones found in AAI for cloud region '\r
785        + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
786                                                         </return>\r
787                                                     </block>\r
788                                                 </outcome>\r
789                                                 <outcome value='false'>\r
790                                                     <set>\r
791                                                         <parameter name='aai.cloud-region.availability-zones.availability-zone_length' value='0' />\r
792                                                     </set>\r
793                                                 </outcome>\r
794                                             </switch>\r
795                                         </outcome>\r
796                                     </switch>\r
797                                     <for index='idx' start='0' end='`$aai.cloud-region.availability-zones.availability-zone_length`' >\r
798                                         <block atomic="true">\r
799                                             <set>\r
800                                                 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'\r
801   value='`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`' />\r
802                                             </set>\r
803                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
804    resource="generic-vnf:relationship-list"\r
805    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
806    force="true" pfx="tmp.AnAI-data">\r
807                                                 <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />\r
808                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />\r
809                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />\r
810                                                 <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />\r
811                                                 <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
812                                                 <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" />\r
813                                                 <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`" />\r
814                                                 <outcome value='failure'>\r
815                                                     <block>\r
816                                                         <block atomic="true">\r
817                                                             <set>\r
818                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
819                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
820                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
821                                                             </set>\r
822                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
823                                                         </block>\r
824                                                         <return status='failure'>\r
825                                                             <parameter name='ack-final' value='Y'/>\r
826                                                             <parameter name="error-code" value="500" />\r
827                                                             <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
828                                                         </return>\r
829                                                     </block>\r
830                                                 </outcome>\r
831                                                 <outcome value='not-found'>\r
832                                                     <block>\r
833                                                         <block atomic="true">\r
834                                                             <set>\r
835                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
836                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
837                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
838                                                             </set>\r
839                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
840                                                         </block>\r
841                                                         <return status='failure'>\r
842                                                             <parameter name='ack-final' value='Y'/>\r
843                                                             <parameter name="error-code" value="500" />\r
844                                                             <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
845                                                         </return>\r
846                                                     </block>\r
847                                                 </outcome>\r
848                                             </save>\r
849                                         </block>\r
850                                     </for>\r
851                                     <set>\r
852                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'\r
853    value='`$db.vf-model.avail-zone-max-count`' />\r
854                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'\r
855    value='`$aai.cloud-region.availability-zones.availability-zone_length`' />\r
856                                     </set>\r
857                                     <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
858                                         <block atomic="true">\r
859                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
860    resource="generic-vnf:relationship-list"\r
861    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
862    force="true" pfx="tmp.AnAI-data">\r
863                                                 <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
864                                                 <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />\r
865                                                 <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
866                                                 <outcome value='failure'>\r
867                                                     <block>\r
868                                                         <block atomic="true">\r
869                                                             <set>\r
870                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
871                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
872                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
873                                                             </set>\r
874                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
875                                                         </block>\r
876                                                         <return status='failure'>\r
877                                                             <parameter name='ack-final' value='Y'/>\r
878                                                             <parameter name="error-code" value="500" />\r
879                                                             <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
880                                                         </return>\r
881                                                     </block>\r
882                                                 </outcome>\r
883                                                 <outcome value='not-found'>\r
884                                                     <block>\r
885                                                         <block atomic="true">\r
886                                                             <set>\r
887                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
888                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
889                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
890                                                             </set>\r
891                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
892                                                         </block>\r
893                                                         <return status='failure'>\r
894                                                             <parameter name='ack-final' value='Y'/>\r
895                                                             <parameter name="error-code" value="500" />\r
896                                                             <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
897                                                         </return>\r
898                                                     </block>\r
899                                                 </outcome>\r
900                                             </save>\r
901                                         </block>\r
902                                     </for>\r
903                                     <set>\r
904                                         <parameter name='vnf-object-path'\r
905  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
906  + $vnf-topology-operation-input.service-information.service-instance-id\r
907  + '/service-data/vnfs/vnf/'\r
908  + $service-data.vnfs.vnf[$vnf-index].vnf-id\r
909  + '/vnf-data/vnf-topology'`"/>\r
910                                     </set>\r
911                                     <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
912    resource="generic-vnf"\r
913    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"\r
914    force="true" pfx="tmp.AnAI-data">\r
915                                         <parameter name="vnf-name" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`" />\r
916                                         <parameter name="prov-status" value="PREPROV" />\r
917                                         <!-- <parameter name="operational-status" value="out-of-service-path" /> -->\r
918                                         <parameter name="equipment-role" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`" />\r
919                                         <parameter name="model-invariant-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`" />\r
920                                         <parameter name="model-version-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`" />\r
921                                         <parameter name="model-customization-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />\r
922                                         <parameter name="selflink" value="`$vnf-object-path`" />\r
923                                         <outcome value='failure'>\r
924                                             <block>\r
925                                                 <block atomic="true">\r
926                                                     <set>\r
927                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
928                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
929                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
930                                                     </set>\r
931                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
932                                                 </block>\r
933                                                 <return status='failure'>\r
934                                                     <parameter name='ack-final' value='Y'/>\r
935                                                     <parameter name="error-code" value="500" />\r
936                                                     <parameter name="error-message" value="Error updating selflink in generic-vnf in AAI" />\r
937                                                 </return>\r
938                                             </block>\r
939                                         </outcome>\r
940                                         <outcome value='not-found'>\r
941                                             <block>\r
942                                                 <block atomic="true">\r
943                                                     <set>\r
944                                                         <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
945                                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
946                                                         <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
947                                                     </set>\r
948                                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
949                                                 </block>\r
950                                                 <return status='failure'>\r
951                                                     <parameter name='ack-final' value='Y'/>\r
952                                                     <parameter name="error-code" value="500" />\r
953                                                     <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
954                                                 </return>\r
955                                             </block>\r
956                                         </outcome>\r
957                                     </update>\r
958                                     <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >\r
959                                         <block atomic="true">\r
960                                             <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
961    resource="generic-vnf:relationship-list"\r
962    key="generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-information.vnf-id"\r
963    force="true" pfx="tmp.AnAI-data">\r
964                                                 <parameter name="relationship-list.relationship[0].related-to" value="instance-group" />\r
965                                                 <parameter name="relationship-list.relationship[0].related-link"\r
966       value="`'/aai/v$/network/instance-groups/instance-group/'\r
967         + $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id`" />\r
968                                                 <outcome value='failure'>\r
969                                                     <block>\r
970                                                         <block atomic="true">\r
971                                                             <set>\r
972                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
973                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
974                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
975                                                             </set>\r
976                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
977                                                         </block>\r
978                                                         <return status='failure'>\r
979                                                             <parameter name='ack-final' value='Y'/>\r
980                                                             <parameter name="error-code" value="500" />\r
981                                                             <parameter name="error-message" value="Error updating relationship in generic-vnf in AAI" />\r
982                                                         </return>\r
983                                                     </block>\r
984                                                 </outcome>\r
985                                                 <outcome value='not-found'>\r
986                                                     <block>\r
987                                                         <block atomic="true">\r
988                                                             <set>\r
989                                                                 <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
990                                                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
991                                                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
992                                                             </set>\r
993                                                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
994                                                         </block>\r
995                                                         <return status='failure'>\r
996                                                             <parameter name='ack-final' value='Y'/>\r
997                                                             <parameter name="error-code" value="500" />\r
998                                                             <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
999                                                         </return>\r
1000                                                     </block>\r
1001                                                 </outcome>\r
1002                                             </save>\r
1003                                         </block>\r
1004                                     </for>\r
1005                                     <set>\r
1006                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
1007                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
1008                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
1009                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\r
1010                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\r
1011                                     </set>\r
1012                                     <set>\r
1013                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\r
1014                                         <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
1015                                         <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
1016                                     </set>\r
1017                                     <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
1018                                         <parameter name='filename' value='/var/tmp/bgb-viprend.log' />\r
1019                                     </execute>\r
1020                                     <return status='success'>\r
1021                                         <parameter name="ack-final-indicator" value="Y" />\r
1022                                         <parameter name="error-code" value="200" />\r
1023                                         <parameter name="error-message" value="`$error-message`" />\r
1024                                     </return>\r
1025                                 </block>\r
1026                             </outcome>\r
1027                         </switch>\r
1028                     </outcome>\r
1029                 </switch>\r
1030             </block>\r
1031         </block>\r
1032     </method>\r
1033 </service-logic>