Merge "Fix ss-netbox-dg"
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.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='1.4.1-SNAPSHOT'>
4     <method rpc='self-serve-netbox-ip-assign' 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                                                         <outcome value='success'>
98                                                             <block>
99                                                                 <set>
100                                                                     <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' 
101         value='`$self_serve_netbox_ip_assignement.ip-address`' />
102                                                                 </set>
103                                                                 <set>
104                                                                     <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' 
105         value='SUCCESS' />
106                                                                 </set>
107                                                             </block>
108                                                         </outcome>
109                                                     </execute>
110                                                 </block>
111                                             </outcome>
112                                             <outcome value='unassign'>
113                                                 <block atomic="true">
114                                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
115         key='SELECT * from IPAM_IP_ASSIGNEMENT 
116                 WHERE external_key = $tmp.ss.external-key
117                 AND service_instance_id = $tmp.ss.service-instance-id' >
118                                                         <outcome value='not-found'>
119                                                             <block></block>
120                                                         </outcome>
121                                                         <outcome value='success'>
122                                                             <block atomic="true">
123                                                                 <set>
124                                                                     <parameter name='tmp.status' value="PENDING_DELETE" />
125                                                                 </set>
126                                                                 <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
127         key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status 
128                 WHERE external_key = $tmp.ss.external-key
129                 AND service_instance_id = $tmp.ss.service-instance-id" >
130                                                                     <outcome value='failure'>
131                                                                         <return status='failure'>
132                                                                             <parameter name='ack-final' value='Y'/>
133                                                                             <parameter name="error-code" value="500" />
134                                                                             <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`" />
135                                                                         </return>
136                                                                     </outcome>
137                                                                 </update>
138                                                                 <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
139                                                                     <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
140                                                                     <parameter name="external_key" value="`$tmp.ss.external-key`" />
141                                                                     <outcome value='failure'>
142                                                                         <return status='failure'>
143                                                                             <parameter name='ack-final' value='Y'/>
144                                                                             <parameter name="error-code" value="500" />
145                                                                             <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
146                                                                         </return>
147                                                                     </outcome>
148                                                                     <outcome value='success'>
149                                                                         <set>
150                                                                             <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' 
151         value='DELETED' />
152                                                                         </set>
153                                                                     </outcome>
154                                                                 </execute>
155                                                             </block>
156                                                         </outcome>
157                                                     </get-resource>
158                                                 </block>
159                                             </outcome>
160                                         </switch>
161                                     </block>
162                                 </outcome>
163                                 <outcome value='PENDING'>
164                                     <block>
165                                         <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`">
166                                             <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`'>
167                                                 <outcome value='service-instance-id'>
168                                                     <set>
169                                                         <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`' />
170                                                     </set>
171                                                 </outcome>
172                                                 <outcome value='vf-module-id'>
173                                                     <set>
174                                                         <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`' />
175                                                     </set>
176                                                 </outcome>
177                                                 <outcome value='prefix-id'>
178                                                     <set>
179                                                         <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`' />
180                                                     </set>
181                                                 </outcome>
182                                                 <outcome value='ip-address-id'>
183                                                     <set>
184                                                         <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`' />
185                                                     </set>
186                                                 </outcome>
187                                                 <outcome value='external_key'>
188                                                     <set>
189                                                         <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`' />
190                                                     </set>
191                                                 </outcome>
192                                             </switch>
193                                         </for>
194                                         <switch test='`$ss.capability-action`'>
195                                             <outcome value='assign'>
196                                                 <block atomic='true'>
197                                                     <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
198                                                         <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
199                                                         <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
200                                                         <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
201                                                         <parameter name="resource_name" value="`$tmp.ss.param.name`" />
202                                                         <parameter name="external_key" value="`$tmp.ss.external-key`" />
203                                                         <outcome value='failure'>
204                                                             <block atomic='true'>
205                                                                 <set>
206                                                                     <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' />
207                                                                 </set>
208                                                                 <return status='failure'>
209                                                                     <parameter name='error-code' value='' />
210                                                                     <parameter name='error-message' value='' />
211                                                                 </return>
212                                                             </block>
213                                                         </outcome>
214                                                         <outcome value='success'>
215                                                             <block>
216                                                                 <set>
217                                                                     <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' 
218         value='`$self_serve_netbox_ip_assignement.ip-address`' />
219                                                                 </set>
220                                                                 <set>
221                                                                     <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' 
222         value='SUCCESS' />
223                                                                 </set>
224                                                             </block>
225                                                         </outcome>
226                                                     </execute>
227                                                 </block>
228                                             </outcome>
229                                             <outcome value='unassign'>
230                                                 <block atomic="true">
231                                                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
232         key='SELECT * from IPAM_IP_ASSIGNEMENT 
233                 WHERE external_key = $tmp.ss.external-key
234                 AND service_instance_id = $tmp.ss.service-instance-id' >
235                                                         <outcome value='not-found'>
236                                                             <block></block>
237                                                         </outcome>
238                                                         <outcome value='success'>
239                                                             <block atomic="true">
240                                                                 <set>
241                                                                     <parameter name='tmp.status' value="PENDING_DELETE" />
242                                                                 </set>
243                                                                 <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
244         key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status 
245                 WHERE external_key = $tmp.ss.external-key
246                 AND service_instance_id = $tmp.ss.service-instance-id" >
247                                                                     <outcome value='failure'>
248                                                                         <return status='failure'>
249                                                                             <parameter name='ack-final' value='Y'/>
250                                                                             <parameter name="error-code" value="500" />
251                                                                             <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`" />
252                                                                         </return>
253                                                                     </outcome>
254                                                                 </update>
255                                                                 <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
256                                                                     <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
257                                                                     <parameter name="external_key" value="`$tmp.ss.external-key`" />
258                                                                     <outcome value='failure'>
259                                                                         <return status='failure'>
260                                                                             <parameter name='ack-final' value='Y'/>
261                                                                             <parameter name="error-code" value="500" />
262                                                                             <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
263                                                                         </return>
264                                                                     </outcome>
265                                                                     <outcome value='success'>
266                                                                         <set>
267                                                                             <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' 
268         value='DELETED' />
269                                                                         </set>
270                                                                     </outcome>
271                                                                 </execute>
272                                                             </block>
273                                                         </outcome>
274                                                     </get-resource>
275                                                 </block>
276                                             </outcome>
277                                         </switch>
278                                     </block>
279                                 </outcome>
280                             </switch>
281                         </outcome>
282                     </switch>
283                 </for>
284                 <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
285                     <parameter name="logger" value="message-log"/>
286                     <parameter name="field1" value="__TIMESTAMP__"/>
287                     <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>
288                 </record>
289             </block>
290             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
291                 <parameter name='filename' value='/var/tmp/ss.eipam.log' />
292             </execute>
293         </block>
294     </method>
295 </service-logic>