Fix Service-object-path
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml
1 <service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'><method rpc='vnf-topology-operation-assign' mode='sync'>\r
2 <block atomic="true"><switch test='`$vnf-topology-operation-input.request-information.request-action`'>\r
3 <outcome value='CreateVnfInstance'>\r
4 <block>\r
5 </block></outcome><outcome value='Other'>\r
6 <return status='failure'>\r
7         <parameter name='ack-final' value='Y'/>\r
8         <parameter name="error-code" value="500" />\r
9     <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVnfInstance'" />\r
10 </return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
11   key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\r
12   pfx='db.vf-model'>\r
13 \r
14 <outcome value='failure'>\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="Error reading VF_MODEL table" />\r
19 </return></outcome><outcome value='not-found'>\r
20 <return status='failure'>\r
21         <parameter name='ack-final' value='Y'/>\r
22         <parameter name="error-code" value="500" />\r
23     <parameter name="error-message" value="`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />\r
24 </return></outcome></get-resource><switch test='`$service-data.vnfs.vnf_length`'>\r
25 <outcome value=''>\r
26 <set>\r
27 <parameter name='vnf-index' value='0' />\r
28 </set></outcome><outcome value='Other'>\r
29 <block>\r
30 <set>\r
31 <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\r
32 </set><for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
33 <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\r
34 <outcome value='true'>\r
35 <return status='failure'>\r
36         <parameter name='ack-final' value='Y'/>\r
37         <parameter name="error-code" value="500" />\r
38     <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\r
39       + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />\r
40 </return></outcome></switch></for></block></outcome></switch><set>\r
41 <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\r
42 </set><set>\r
43 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'\r
44  value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
45 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'\r
46  value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />\r
47 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'\r
48  value='`$db.vf-model.nf-type`' />\r
49 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'\r
50  value='`$db.vf-model.nf-role`' />\r
51 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'\r
52  value='`$db.vf-model.nf-function`' />\r
53 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'\r
54  value='`$db.vf-model.nf-code`' />\r
55 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'\r
56  value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />\r
57 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'\r
58  value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />\r
59  \r
60 </set><switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-name`'>\r
61 <outcome value=''><block atomic="true"><switch test='`$db.vf-model.ecomp-generated-naming`'>\r
62 <outcome value='Y'><block>\r
63 </block></outcome><outcome value='N'><return status='failure'>\r
64         <parameter name='ack-final' value='Y'/>\r
65         <parameter name="error-code" value="500" />\r
66     <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />\r
67 </return></outcome><outcome value='Other'>\r
68 <return status='failure'>\r
69         <parameter name='ack-final' value='Y'/>\r
70         <parameter name="error-code" value="500" />\r
71     <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />\r
72 </return></outcome></switch><set>\r
73 <parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />\r
74 <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\r
75 <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />\r
76 <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
77 <parameter name='generate-unique-name-input.index-length' value='2' />\r
78 </set><call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
79 <outcome value='failure'>\r
80 <return status='failure'>\r
81         <parameter name='ack-final' value='Y'/>\r
82         <parameter name="error-code" value="500" />\r
83     <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
84 </return></outcome><outcome value='success'>\r
85 <set>\r
86 <parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />\r
87 </set></outcome></call></block></outcome><outcome value='Other'>\r
88 <block atomic="true"><set>\r
89 <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />\r
90 <parameter name='generate-unique-name-input.supplied-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-name`' />\r
91 </set><call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
92 <outcome value='failure'>\r
93 <return status='failure'>\r
94         <parameter name='ack-final' value='Y'/>\r
95         <parameter name="error-code" value="500" />\r
96     <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
97 </return></outcome><outcome value='success'>\r
98 <set>\r
99 <parameter name='tmp.vnf-name' value="`$vnf-topology-operation-input.vnf-request-input.vnf-name`" />\r
100 </set></outcome></call></block></outcome></switch><set>\r
101 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'\r
102    value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
103 </set><set>\r
104 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'\r
105    value='`$tmp.vnf-name`' />\r
106 </set><switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>\r
107 <outcome value=''><set>\r
108 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\r
109   value='`$db.vf-model.invariant-uuid`' />\r
110 </set></outcome><outcome value='Other'>\r
111 <set>\r
112 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\r
113   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\r
114 </set></outcome></switch><switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>\r
115 <outcome value=''><set>\r
116 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\r
117   value='`$db.vf-model.uuid`' />\r
118 </set></outcome><outcome value='Other'>\r
119 <set>\r
120 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\r
121   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\r
122 </set></outcome></switch><switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>\r
123 <outcome value=''><set>\r
124 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\r
125   value='`$db.vf-model.version`' />\r
126 </set></outcome><outcome value='Other'>\r
127 <set>\r
128 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\r
129   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />\r
130 </set></outcome></switch><switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>\r
131 <outcome value=''><set>\r
132 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\r
133   value='`$db.vf-model.name`' />\r
134 </set></outcome><outcome value='Other'>\r
135 <set>\r
136 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\r
137   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />\r
138 </set></outcome></switch><set>\r
139 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\r
140   value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\r
141 </set><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
142                 resource="cloud-region" \r
143                 key="cloud-region.cloud-owner = 'CloudOwner' AND \r
144                      cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\r
145                      depth='0'"\r
146         pfx='aai.cloud-region' local-only='false' >\r
147 \r
148 <outcome value='not-found'>\r
149 <return status='failure'>\r
150         <parameter name='ack-final' value='Y'/>\r
151         <parameter name="error-code" value="500" />\r
152     <parameter name="error-message" value="Cloud region not found in AAI" />\r
153 </return></outcome><outcome value='failure'>\r
154 <return status='failure'>\r
155         <parameter name='ack-final' value='Y'/>\r
156         <parameter name="error-code" value="500" />\r
157     <parameter name="error-message" value="Error retrieving cloud region from AAI" />\r
158 </return></outcome></get-resource><for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\r
159 <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\r
160 <outcome value='complex'>\r
161 <block atomic="true"><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\r
162    <parameter name='ctx_memory_result_key' value='aai-uid-split' />\r
163    <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\r
164    <parameter name='regex' value='/' />\r
165 </execute><set>\r
166 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli'\r
167   value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\r
168 </set><break>\r
169 </break></block></outcome></switch></for><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
170                 resource="availability-zones" \r
171                 key="cloud-region.cloud-owner = 'CloudOwner' AND \r
172                      cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\r
173                      depth='0'"\r
174         pfx='aai.az' local-only='false' >\r
175 \r
176 <outcome value='failure'>\r
177 <return status='failure'>\r
178         <parameter name='ack-final' value='Y'/>\r
179         <parameter name="error-code" value="500" />\r
180     <parameter name="error-message" value="Error retrieving availability zones from AAI" />\r
181 </return></outcome></get-resource><switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>\r
182 <outcome value=''><return status='failure'>\r
183         <parameter name='ack-final' value='Y'/>\r
184         <parameter name="error-code" value="500" />\r
185     <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
186 </return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
187   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
188   pfx='db.vf-network-role-mapping[]'>\r
189 \r
190 <outcome value='failure'>\r
191 <return status='failure'>\r
192         <parameter name='ack-final' value='Y'/>\r
193         <parameter name="error-code" value="500" />\r
194     <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />\r
195 </return></outcome><outcome value='not-found'>\r
196 <set>\r
197 <parameter name='db.vf-network-role-mapping_length' value='0' />\r
198 </set></outcome></get-resource><set>\r
199 <parameter name='network-index' value='0' />\r
200 </set><for index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'><block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
201                 resource="l3-networks" \r
202                 key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"\r
203         pfx='aai.l3-network' local-only='false'\r
204 >\r
205 <outcome value='not-found'>\r
206 <return status='failure'>\r
207         <parameter name='ack-final' value='Y'/>\r
208         <parameter name="error-code" value="500" />\r
209     <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '\r
210           + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + ' and network_role '\r
211           + $db.vf-network-role-mapping[$network-index].network-role`" />\r
212 </return></outcome><outcome value='failure'>\r
213 <return status='failure'>\r
214         <parameter name='ack-final' value='Y'/>\r
215         <parameter name="error-code" value="500" />\r
216     <parameter name="error-message" value="Error retrieving l3-network from AAI" />\r
217 </return></outcome></get-resource><set>\r
218 <parameter name='l3-network-id' value='-1' />\r
219 </set><block>\r
220 <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >\r
221 <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>\r
222 <outcome value='PendingCreate'>\r
223 <block>\r
224 </block></outcome><outcome value='Pending Create'>\r
225 <block>\r
226 </block></outcome><outcome value='PendingDelete'>\r
227 <block>\r
228 </block></outcome><outcome value='Pending Delete'>\r
229 <block>\r
230 </block></outcome><outcome value='Other'>\r
231 <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >\r
232 <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>\r
233 <outcome value='cloud-region'>\r
234 <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
235 <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\r
236 <outcome value='cloud-region.cloud-region-id'>\r
237 <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
238 <outcome value='true'>\r
239 <block atomic="true"><set>\r
240 <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
241 </set><return status='failure'>\r
242 </return></block></outcome></switch></outcome></switch></for></outcome></switch></for></outcome></switch></for><return status='success'>\r
243 \r
244 </return></block><switch test='`$l3-network-id`'>\r
245 <outcome value='-1'>\r
246 <return status='failure'>\r
247         <parameter name='ack-final' value='Y'/>\r
248         <parameter name="error-code" value="500" />\r
249     <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
250 </return></outcome></switch><set>\r
251 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'\r
252     value='`$db.vf-network-role-mapping[$role-index].network-role`' />\r
253 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'\r
254     value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />\r
255 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'\r
256     value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />\r
257 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'\r
258     value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
259 <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
260     value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />\r
261 </set><for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[0].subnets.subnet_length`' >\r
262 <set>\r
263 <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
264    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`' />\r
265 <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
266    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />\r
267 </set></for><set>\r
268 <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
269    value='`$aai.l3-network.l3-network[0].subnets.subnet_length`' />\r
270 </set><set>\r
271 <parameter name='network-index' value='`$network-index + 1`' />\r
272 </set></block></for><set>\r
273 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\r
274   value='`$network-index`' />\r
275 </set><set>\r
276 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'\r
277   value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />\r
278 </set><switch test='`$aai.az.availability-zone_length`'>\r
279 <outcome value=''><switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>\r
280 <outcome value='true'>\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 availability zones found in AAI for cloud region '\r
285        + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
286 </return></outcome><outcome value='false'>\r
287 <set>\r
288 <parameter name='aai.az.availability-zone_length' value='0' />\r
289 </set></outcome></switch></outcome></switch><for index='idx' start='0' end='`$aai.az.availability-zone_length`' >\r
290 <block atomic="true"><set>\r
291 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'\r
292   value='`$aai.az.availability-zone[$idx].availability-zone-name`' />\r
293 </set><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
294    resource="generic-vnf:relationship-list"\r
295    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
296    force="true" pfx="tmp.AnAI-data">\r
297     <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />\r
298     <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />\r
299     <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="CloudOwner" />\r
300     <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />\r
301     <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
302     <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" />\r
303     <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$aai.az.availability-zone[$idx].availability-zone-name`" />\r
304 <outcome value='failure'>\r
305 <return status='failure'>\r
306         <parameter name='ack-final' value='Y'/>\r
307         <parameter name="error-code" value="500" />\r
308     <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
309 </return></outcome><outcome value='not-found'>\r
310 <return status='failure'>\r
311         <parameter name='ack-final' value='Y'/>\r
312         <parameter name="error-code" value="500" />\r
313     <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
314 </return></outcome></save></block></for><set>\r
315 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'\r
316    value='`$db.vf-model.avail-zone-max-count`' />\r
317 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'\r
318    value='`$aai.az.availability-zone_length`' />\r
319 </set><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
320 <block atomic="true"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
321    resource="generic-vnf:relationship-list"\r
322    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
323    force="true" pfx="tmp.AnAI-data">\r
324     <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
325     <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />\r
326     <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
327 <outcome value='failure'>\r
328 <return status='failure'>\r
329         <parameter name='ack-final' value='Y'/>\r
330         <parameter name="error-code" value="500" />\r
331     <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
332 </return></outcome><outcome value='not-found'>\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="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
337 </return></outcome></save></block></for><set>\r
338 <parameter name='vnf-object-path'\r
339  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
340  + $vnf-topology-operation-input.service-information.service-instance-id\r
341  + '/service-data/vnfs/vnf/'\r
342  + $service-data.vnfs.vnf[$vnf-index].vnf-id\r
343  + '/vnf-data/vnf-topology'`"/>\r
344 <parameter name='service-object-path'\r
345  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
346  + $vnf-topology-operation-input.service-information.service-instance-id\r
347  + '/service-data/vnfs/vnf/'\r
348  + $service-data.vnfs.vnf[$vnf-index].vnf-id\r
349  + '/vnf-data/vnf-topology'`"/></set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
350    resource="generic-vnf"\r
351    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"\r
352    force="true" pfx="tmp.AnAI-data">\r
353 <parameter name="vnf-name" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`" />\r
354 <parameter name="prov-status" value="PREPROV" />\r
355 <parameter name="operational-status" value="out-of-service-path" />\r
356 <parameter name="equipment-role" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`" />\r
357 <parameter name="model-invariant-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`" />\r
358 <parameter name="model-version-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`" />\r
359 <parameter name="model-customization-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />\r
360 <parameter name="selflink" value="`$vnf-object-path`" />\r
361 <outcome value='failure'>\r
362 <return status='failure'>\r
363         <parameter name='ack-final' value='Y'/>\r
364         <parameter name="error-code" value="500" />\r
365     <parameter name="error-message" value="Error updating selflink in generic-vnf in AAI" />\r
366 </return></outcome><outcome value='not-found'>\r
367 <return status='failure'>\r
368         <parameter name='ack-final' value='Y'/>\r
369         <parameter name="error-code" value="500" />\r
370     <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
371 </return></outcome></update><set>\r
372 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
373 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
374 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
375 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\r
376 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\r
377 \r
378 </set><set>\r
379 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\r
380 <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
381 <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
382 </set><return status='success'>\r
383 <parameter name="ack-final-indicator" value="Y" />\r
384 <parameter name="error-code" value="200" />\r
385 <parameter name="error-message" value="`$error-message`" />\r
386 </return></block></method></service-logic>\r