70cce65735fe27353ae4b9086969b8e716de7a81
[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/></block></outcome></switch></for><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
169                 resource="availability-zones" \r
170                 key="cloud-region.cloud-owner = 'CloudOwner' AND \r
171                      cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\r
172                      depth='0'"\r
173         pfx='aai.az' local-only='false' >\r
174 \r
175 <outcome value='failure'>\r
176 <return status='failure'>\r
177         <parameter name='ack-final' value='Y'/>\r
178         <parameter name="error-code" value="500" />\r
179     <parameter name="error-message" value="Error retrieving availability zones from AAI" />\r
180 </return></outcome></get-resource><switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>\r
181 <outcome value=''><return status='failure'>\r
182         <parameter name='ack-final' value='Y'/>\r
183         <parameter name="error-code" value="500" />\r
184     <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
185 </return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
186   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
187   pfx='db.vf-network-role-mapping[]'>\r
188 \r
189 <outcome value='failure'>\r
190 <return status='failure'>\r
191         <parameter name='ack-final' value='Y'/>\r
192         <parameter name="error-code" value="500" />\r
193     <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />\r
194 </return></outcome><outcome value='not-found'>\r
195 <set>\r
196 <parameter name='db.vf-network-role-mapping_length' value='0' />\r
197 </set></outcome></get-resource><set>\r
198 <parameter name='network-index' value='0' />\r
199 </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
200                 resource="l3-networks" \r
201                 key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"\r
202         pfx='aai.l3-network' local-only='false'\r
203 >\r
204 <outcome value='not-found'>\r
205 <return status='failure'>\r
206         <parameter name='ack-final' value='Y'/>\r
207         <parameter name="error-code" value="500" />\r
208     <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '\r
209           + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + ' and network_role '\r
210           + $db.vf-network-role-mapping[$network-index].network-role`" />\r
211 </return></outcome><outcome value='failure'>\r
212 <return status='failure'>\r
213         <parameter name='ack-final' value='Y'/>\r
214         <parameter name="error-code" value="500" />\r
215     <parameter name="error-message" value="Error retrieving l3-network from AAI" />\r
216 </return></outcome></get-resource><set>\r
217 <parameter name='l3-network-id' value='-1' />\r
218 </set><block>\r
219 <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >\r
220 <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>\r
221 <outcome value='PendingCreate'>\r
222 <block>\r
223 </block></outcome><outcome value='Pending Create'>\r
224 <block>\r
225 </block></outcome><outcome value='PendingDelete'>\r
226 <block>\r
227 </block></outcome><outcome value='Pending Delete'>\r
228 <block>\r
229 </block></outcome><outcome value='Other'>\r
230 <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >\r
231 <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>\r
232 <outcome value='cloud-region'>\r
233 <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
234 <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\r
235 <outcome value='cloud-region.cloud-region-id'>\r
236 <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
237 <outcome value='true'>\r
238 <block atomic="true"><set>\r
239 <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
240 </set><return status='failure'>\r
241 </return></block></outcome></switch></outcome></switch></for></outcome></switch></for></outcome></switch></for><return status='success'>\r
242 \r
243 </return></block><switch test='`$l3-network-id`'>\r
244 <outcome value='-1'>\r
245 <return status='failure'>\r
246         <parameter name='ack-final' value='Y'/>\r
247         <parameter name="error-code" value="500" />\r
248     <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
249 </return></outcome></switch><set>\r
250 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'\r
251     value='`$db.vf-network-role-mapping[$role-index].network-role`' />\r
252 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'\r
253     value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />\r
254 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'\r
255     value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />\r
256 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'\r
257     value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\r
258 <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
259     value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />\r
260 </set><for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[0].subnets.subnet_length`' >\r
261 <set>\r
262 <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
263    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`' />\r
264 <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
265    value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />\r
266 </set></for><set>\r
267 <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
268    value='`$aai.l3-network.l3-network[0].subnets.subnet_length`' />\r
269 </set><set>\r
270 <parameter name='network-index' value='`$network-index + 1`' />\r
271 </set></block></for><set>\r
272 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\r
273   value='`$network-index`' />\r
274 </set><set>\r
275 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'\r
276   value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />\r
277 </set><switch test='`$aai.az.availability-zone_length`'>\r
278 <outcome value=''><switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>\r
279 <outcome value='true'>\r
280 <return status='failure'>\r
281         <parameter name='ack-final' value='Y'/>\r
282         <parameter name="error-code" value="500" />\r
283     <parameter name="error-message" value="`'No availability zones found in AAI for cloud region '\r
284        + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
285 </return></outcome><outcome value='false'>\r
286 <set>\r
287 <parameter name='aai.az.availability-zone_length' value='0' />\r
288 </set></outcome></switch></outcome></switch><for index='idx' start='0' end='`$aai.az.availability-zone_length`' >\r
289 <block atomic="true"><set>\r
290 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'\r
291   value='`$aai.az.availability-zone[$idx].availability-zone-name`' />\r
292 </set><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
293    resource="generic-vnf:relationship-list"\r
294    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
295    force="true" pfx="tmp.AnAI-data">\r
296     <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />\r
297     <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />\r
298     <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="CloudOwner" />\r
299     <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />\r
300     <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />\r
301     <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" />\r
302     <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$aai.az.availability-zone[$idx].availability-zone-name`" />\r
303 <outcome value='failure'>\r
304 <return status='failure'>\r
305         <parameter name='ack-final' value='Y'/>\r
306         <parameter name="error-code" value="500" />\r
307     <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
308 </return></outcome><outcome value='not-found'>\r
309 <return status='failure'>\r
310         <parameter name='ack-final' value='Y'/>\r
311         <parameter name="error-code" value="500" />\r
312     <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
313 </return></outcome></save></block></for><set>\r
314 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'\r
315    value='`$db.vf-model.avail-zone-max-count`' />\r
316 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'\r
317    value='`$aai.az.availability-zone_length`' />\r
318 </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
319 <block atomic="true"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
320    resource="generic-vnf:relationship-list"\r
321    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"\r
322    force="true" pfx="tmp.AnAI-data">\r
323     <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />\r
324     <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />\r
325     <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
326 <outcome value='failure'>\r
327 <return status='failure'>\r
328         <parameter name='ack-final' value='Y'/>\r
329         <parameter name="error-code" value="500" />\r
330     <parameter name="error-message" value="Error updating generic-vnf in AAI" />\r
331 </return></outcome><outcome value='not-found'>\r
332 <return status='failure'>\r
333         <parameter name='ack-final' value='Y'/>\r
334         <parameter name="error-code" value="500" />\r
335     <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
336 </return></outcome></save></block></for><set>\r
337 <parameter name='vnf-object-path'\r
338  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
339  + $vnf-topology-operation-input.service-information.service-instance-id\r
340  + '/service-data/vnfs/vnf/'\r
341  + $service-data.vnfs.vnf[$vnf-index].vnf-id\r
342  + '/vnf-data/vnf-topology'`"/>\r
343 \r
344 </set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
345    resource="generic-vnf"\r
346    key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"\r
347    force="true" pfx="tmp.AnAI-data">\r
348 <parameter name="vnf-name" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`" />\r
349 <parameter name="prov-status" value="PREPROV" />\r
350 <parameter name="operational-status" value="out-of-service-path" />\r
351 <parameter name="equipment-role" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`" />\r
352 <parameter name="model-invariant-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`" />\r
353 <parameter name="model-version-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`" />\r
354 <parameter name="model-customization-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />\r
355 <parameter name="selflink" value="`$vnf-object-path`" />\r
356 <outcome value='failure'>\r
357 <return status='failure'>\r
358         <parameter name='ack-final' value='Y'/>\r
359         <parameter name="error-code" value="500" />\r
360     <parameter name="error-message" value="Error updating selflink in generic-vnf in AAI" />\r
361 </return></outcome><outcome value='not-found'>\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="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />\r
366 </return></outcome></update><set>\r
367 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\r
368 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\r
369 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\r
370 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\r
371 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\r
372 \r
373 </set><set>\r
374 <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\r
375 <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
376 <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
377 </set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
378 <parameter name='filename' value='/var/tmp/bgb-viprend.log' />\r
379 </execute><return status='success'>\r
380 <parameter name="ack-final-indicator" value="Y" />\r
381 <parameter name="error-code" value="200" />\r
382 <parameter name="error-message" value="`$error-message`" />\r
383 </return></block></method></service-logic>