Fix for a foreign key constraint fails
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_self-serve-netbox-ip-assignment.xml
1 <service-logic
2     xmlns='http://www.onap.org/sdnc/svclogic'
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}'>
4     <method rpc='self-serve-netbox-ip-assignment' mode='sync'>
5         <block atomic="true">
6             <switch test='`$ss.capability-name`'>
7                 <outcome value=''>
8                     <return status="failure">
9                         <parameter name="ack-final" value="Y" />
10                         <parameter name="error-code" value="500"/>
11                         <parameter name="error-message" value="ss.capability-name is null" />
12                     </return>
13                 </outcome>
14             </switch>
15             <switch test='`$ss.capability-action`'>
16                 <outcome value=''>
17                     <return status="failure">
18                         <parameter name="ack-final" value="Y" />
19                         <parameter name="error-code" value="500"/>
20                         <parameter name="error-message" value="ss.capability-action is null" />
21                     </return>
22                 </outcome>
23             </switch>
24             <call module='GENERIC-RESOURCE-API' rpc='self-service-capability-param-resolution' mode='sync' >
25                 <outcome value='failure'>
26                     <return status="failure">
27                         <parameter name="ack-final" value="Y" />
28                         <parameter name="error-code" value="500"/>
29                         <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />
30                     </return>
31                 </outcome>
32             </call>
33             <block>
34                 <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
35                     <set>
36                         <parameter name='tmp.ss.param.capability-name' 
37         value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
38                     </set>
39                     <set>
40                         <parameter name='tmp.ss.param.name' 
41         value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`' />
42                     </set>
43                     <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
44                         <outcome value='true'>
45                             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
46                                 <outcome value='FAILED'>
47                                     <block>
48                                         <for index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">
49                                             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
50                                                 <outcome value='service-instance-id'>
51                                                     <set>
52                                                         <parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
53                                                     </set>
54                                                 </outcome>
55                                                 <outcome value='vf-module-id'>
56                                                     <set>
57                                                         <parameter name='tmp.ss.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
58                                                     </set>
59                                                 </outcome>
60                                                 <outcome value='prefix-id'>
61                                                     <set>
62                                                         <parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
63                                                     </set>
64                                                 </outcome>
65                                                 <outcome value='ip-address-id'>
66                                                     <set>
67                                                         <parameter name='tmp.ss.ip-address-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
68                                                     </set>
69                                                 </outcome>
70                                                 <outcome value='external_key'>
71                                                     <set>
72                                                         <parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
73                                                     </set>
74                                                 </outcome>
75                                             </switch>
76                                         </for>
77                                         <switch test='`$ss.capability-action`'>
78                                             <outcome value='assign'>
79                                                 <block atomic='true'>
80                                                     <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
81                                                         <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
82                                                         <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
83                                                         <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
84                                                         <parameter name="resource_name" value="`$tmp.ss.param.name`" />
85                                                         <parameter name="external_key" value="`$tmp.ss.external-key`" />
86                                                         <outcome value='failure'>
87                                                             <block atomic='true'>
88                                                                 <set>
89                                                                     <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
90                                                                 </set>
91                                                                 <return status='failure'>
92                                                                     <parameter name='error-code' value='' />
93                                                                     <parameter name='error-message' value='' />
94                                                                 </return>
95                                                             </block>
96                                                         </outcome>
97                                                     </execute>
98                                                     <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
99                                                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>
100                                                             <outcome value='`$tmp.ss.param.name`'>
101                                                                 <block>
102                                                                     <set>
103                                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' 
104         value='`$self_serve_netbox_ip_assignement.ip-address`' />
105                                                                     </set>
106                                                                     <set>
107                                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
108         value='SUCCESS' />
109                                                                     </set>
110                                                                 </block>
111                                                             </outcome>
112                                                         </switch>
113                                                     </for>
114                                                 </block>
115                                             </outcome>
116                                             <outcome value='unassign'>
117                                                 <block atomic="true">
118                                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
119         key='SELECT * from IPAM_IP_ASSIGNEMENT 
120                 WHERE external_key = $tmp.ss.external-key
121                 AND service_instance_id = $tmp.ss.service-instance-id' >
122                                                         <outcome value='not-found'>
123                                                             <block></block>
124                                                         </outcome>
125                                                         <outcome value='success'>
126                                                             <block atomic="true">
127                                                                 <set>
128                                                                     <parameter name='tmp.status' value="PENDING_DELETE" />
129                                                                 </set>
130                                                                 <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
131         key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status 
132                 WHERE external_key = $tmp.ss.external-key
133                 AND service_instance_id = $tmp.ss.service-instance-id" >
134                                                                     <outcome value='failure'>
135                                                                         <return status='failure'>
136                                                                             <parameter name='ack-final' value='Y'/>
137                                                                             <parameter name="error-code" value="500" />
138                                                                             <parameter name="error-message" value="`'Error updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />
139                                                                         </return>
140                                                                     </outcome>
141                                                                 </update>
142                                                                 <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
143                                                                     <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
144                                                                     <parameter name="external_key" value="`$tmp.ss.external-key`" />
145                                                                     <outcome value='failure'>
146                                                                         <return status='failure'>
147                                                                             <parameter name='ack-final' value='Y'/>
148                                                                             <parameter name="error-code" value="500" />
149                                                                             <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
150                                                                         </return>
151                                                                     </outcome>
152                                                                 </execute>
153                                                             </block>
154                                                         </outcome>
155                                                     </get-resource>
156                                                     <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
157                                                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>
158                                                             <outcome value='ip-address'>
159                                                                 <set>
160                                                                     <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
161         value='DELETED' />
162                                                                 </set>
163                                                             </outcome>
164                                                         </switch>
165                                                     </for>
166                                                 </block>
167                                             </outcome>
168                                         </switch>
169                                     </block>
170                                 </outcome>
171                                 <outcome value='PENDING'>
172                                     <block>
173                                         <for index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">
174                                             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
175                                                 <outcome value='service-instance-id'>
176                                                     <set>
177                                                         <parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
178                                                     </set>
179                                                 </outcome>
180                                                 <outcome value='vf-module-id'>
181                                                     <set>
182                                                         <parameter name='tmp.ss.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
183                                                     </set>
184                                                 </outcome>
185                                                 <outcome value='prefix-id'>
186                                                     <set>
187                                                         <parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
188                                                     </set>
189                                                 </outcome>
190                                                 <outcome value='ip-address-id'>
191                                                     <set>
192                                                         <parameter name='tmp.ss.ip-address-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
193                                                     </set>
194                                                 </outcome>
195                                                 <outcome value='external_key'>
196                                                     <set>
197                                                         <parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
198                                                     </set>
199                                                 </outcome>
200                                             </switch>
201                                         </for>
202                                         <switch test='`$ss.capability-action`'>
203                                             <outcome value='assign'>
204                                                 <block atomic='true'>
205                                                     <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
206                                                         <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
207                                                         <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
208                                                         <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
209                                                         <parameter name="resource_name" value="`$tmp.ss.param.name`" />
210                                                         <parameter name="external_key" value="`$tmp.ss.external-key`" />
211                                                         <outcome value='failure'>
212                                                             <block atomic='true'>
213                                                                 <set>
214                                                                     <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
215                                                                 </set>
216                                                                 <return status='failure'>
217                                                                     <parameter name='error-code' value='' />
218                                                                     <parameter name='error-message' value='' />
219                                                                 </return>
220                                                             </block>
221                                                         </outcome>
222                                                     </execute>
223                                                     <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
224                                                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>
225                                                             <outcome value='`$tmp.ss.param.name`'>
226                                                                 <block>
227                                                                     <set>
228                                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' 
229         value='`$self_serve_netbox_ip_assignement.ip-address`' />
230                                                                     </set>
231                                                                     <set>
232                                                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
233         value='SUCCESS' />
234                                                                     </set>
235                                                                 </block>
236                                                             </outcome>
237                                                         </switch>
238                                                     </for>
239                                                 </block>
240                                             </outcome>
241                                             <outcome value='unassign'>
242                                                 <block atomic="true">
243                                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
244         key='SELECT * from IPAM_IP_ASSIGNEMENT 
245                 WHERE external_key = $tmp.ss.external-key
246                 AND service_instance_id = $tmp.ss.service-instance-id' >
247                                                         <outcome value='not-found'>
248                                                             <block></block>
249                                                         </outcome>
250                                                         <outcome value='success'>
251                                                             <block atomic="true">
252                                                                 <set>
253                                                                     <parameter name='tmp.status' value="PENDING_DELETE" />
254                                                                 </set>
255                                                                 <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
256         key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status 
257                 WHERE external_key = $tmp.ss.external-key
258                 AND service_instance_id = $tmp.ss.service-instance-id" >
259                                                                     <outcome value='failure'>
260                                                                         <return status='failure'>
261                                                                             <parameter name='ack-final' value='Y'/>
262                                                                             <parameter name="error-code" value="500" />
263                                                                             <parameter name="error-message" value="`'Error updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />
264                                                                         </return>
265                                                                     </outcome>
266                                                                 </update>
267                                                                 <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
268                                                                     <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
269                                                                     <parameter name="external_key" value="`$tmp.ss.external-key`" />
270                                                                     <outcome value='failure'>
271                                                                         <return status='failure'>
272                                                                             <parameter name='ack-final' value='Y'/>
273                                                                             <parameter name="error-code" value="500" />
274                                                                             <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
275                                                                         </return>
276                                                                     </outcome>
277                                                                 </execute>
278                                                             </block>
279                                                         </outcome>
280                                                     </get-resource>
281                                                     <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
282                                                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>
283                                                             <outcome value='ip-address'>
284                                                                 <set>
285                                                                     <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
286         value='DELETED' />
287                                                                 </set>
288                                                             </outcome>
289                                                         </switch>
290                                                     </for>
291                                                 </block>
292                                             </outcome>
293                                         </switch>
294                                     </block>
295                                 </outcome>
296                             </switch>
297                         </outcome>
298                     </switch>
299                 </for>
300                 <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
301                     <parameter name="logger" value="message-log"/>
302                     <parameter name="field1" value="__TIMESTAMP__"/>
303                     <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>
304                 </record>
305             </block>
306             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
307                 <parameter name='filename' value='/var/tmp/ss.eipam.log' />
308             </execute>
309         </block>
310     </method>
311 </service-logic>