SDWAN vpn vf-module-topology added null check
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / sdwan / GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml
1 <service-logic\r
2     xmlns='http://www.onap.org/sdnc/svclogic'\r
3     xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
4     <method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\r
7                 <outcome value=''>\r
8                     <return status='failure'>\r
9                         <parameter name='ack-final' value='Y'/>\r
10                         <parameter name="error-code" value="500" />\r
11                         <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />\r
12                     </return>\r
13                 </outcome>\r
14             </switch>\r
15             <switch test='`$service-data.vnfs.vnf_length`'>\r
16                 <outcome value=''>\r
17                     <return status='failure'>\r
18                         <parameter name='ack-final' value='Y'/>\r
19                         <parameter name="error-code" value="500" />\r
20                         <parameter name="error-message" value="vnf entry not found in service-data" />\r
21                     </return>\r
22                 </outcome>\r
23             </switch>\r
24             <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
25                 <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">\r
26                     <outcome value='true'>\r
27                         <set>\r
28                             <parameter name='vnf-index' value='`$idx`' />\r
29                         </set>\r
30                     </outcome>\r
31                 </switch>\r
32             </for>\r
33             <switch test='`$vnf-index`'>\r
34                 <outcome value=''>\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 not found in service-data" />\r
39                     </return>\r
40                 </outcome>\r
41             </switch>\r
42             <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\r
43                 <outcome value='create'>\r
44                     <block atomic="true">\r
45                         <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
46                             <outcome value='CreateSDWANVpnInstance'>\r
47                                 <block atomic="true">\r
48                                     <for index="i" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">\r
49                                         <block>\r
50                                             <set>\r
51                                                 <parameter name='tmp.name' value='' />\r
52                                                 <parameter name='tmp.value' value='' />\r
53                                             </set>\r
54                                             <set>\r
55                                                 <parameter name='tmp.name' value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`"/>\r
56                                                 <parameter name='tmp.value' value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`"/>\r
57                                             </set>\r
58                                             <switch test="`$tmp.name`">\r
59                                                 <outcome value='name'>\r
60                                                     <switch test="`$tmp.value`">\r
61                                                         <outcome value=''>\r
62                                                             <return status='failure'>\r
63                                                                 <parameter name='ack-final' value='Y'/>\r
64                                                                 <parameter name="error-code" value="500" />\r
65                                                                 <parameter name="error-message" value="`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`" />\r
66                                                             </return>\r
67                                                         </outcome>\r
68                                                     </switch>\r
69                                                 </outcome>\r
70                                                 <outcome value='topology'>\r
71                                                     <switch test="`$tmp.value`">\r
72                                                         <outcome value=''>\r
73                                                             <return status='failure'>\r
74                                                                 <parameter name='ack-final' value='Y'/>\r
75                                                                 <parameter name="error-code" value="500" />\r
76                                                                 <parameter name="error-message" value="`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`" />\r
77                                                             </return>\r
78                                                         </outcome>\r
79                                                     </switch>\r
80                                                 </outcome>\r
81                                                 <outcome value=''>\r
82                                                     <return status='failure'>\r
83                                                         <parameter name='ack-final' value='Y'/>\r
84                                                         <parameter name="error-code" value="500" />\r
85                                                         <parameter name="error-message" value="`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`" />\r
86                                                     </return>\r
87                                                 </outcome>\r
88                                             </switch>\r
89                                         </block>\r
90                                     </for>\r
91                                 </block>\r
92                             </outcome>\r
93                             <outcome value='Other'>\r
94                                 <return status='failure'>\r
95                                     <parameter name='ack-final' value='Y'/>\r
96                                     <parameter name="error-code" value="500" />\r
97                                     <parameter name="error-message" value="request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create" />\r
98                                 </return>\r
99                             </outcome>\r
100                         </switch>\r
101                     </block>\r
102                 </outcome>\r
103                 <outcome value='activate'>\r
104                     <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
105                         <outcome value='ActivateSDWANVpnInstance'>\r
106                             <block atomic="true">\r
107                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\r
108                                     <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>\r
109                                 </execute>\r
110                                 <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">\r
111                                     <outcome value=''>\r
112                                         <return status='failure'>\r
113                                             <parameter name='ack-final' value='Y'/>\r
114                                             <parameter name="error-code" value="500" />\r
115                                             <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />\r
116                                         </return>\r
117                                     </outcome>\r
118                                 </switch>\r
119                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
120                                     <outcome value=''>\r
121                                         <return status='failure'>\r
122                                             <parameter name='ack-final' value='Y'/>\r
123                                             <parameter name="error-code" value="500" />\r
124                                             <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />\r
125                                         </return>\r
126                                     </outcome>\r
127                                     <outcome value='Other'>\r
128                                         <block atomic="true">\r
129                                             <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
130                                                 <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">\r
131                                                     <outcome value='true'>\r
132                                                         <block atomic="true">\r
133                                                             <set>\r
134                                                                 <parameter name='tmp.vidx' value='`$nidx`' />\r
135                                                                 <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\r
136                                                             </set>\r
137                                                         </block>\r
138                                                     </outcome>\r
139                                                 </switch>\r
140                                             </for>\r
141                                             <switch test="`$tmp.vidx`">\r
142                                                 <outcome value=''>\r
143                                                     <return status='failure'>\r
144                                                         <parameter name='ack-final' value='Y'/>\r
145                                                         <parameter name="error-code" value="500" />\r
146                                                         <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />\r
147                                                     </return>\r
148                                                 </outcome>\r
149                                             </switch>\r
150                                         </block>\r
151                                     </outcome>\r
152                                 </switch>\r
153                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\r
154                                     <outcome value='Created'>\r
155                                         <block atomic="true"></block>\r
156                                     </outcome>\r
157                                     <outcome value='Other'>\r
158                                         <return status='failure'>\r
159                                             <parameter name='ack-final' value='Y'/>\r
160                                             <parameter name="error-code" value="500" />\r
161                                             <parameter name="error-message" value="`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />\r
162                                         </return>\r
163                                     </outcome>\r
164                                 </switch>\r
165                             </block>\r
166                         </outcome>\r
167                         <outcome value='Other'>\r
168                             <return status='failure'>\r
169                                 <parameter name='ack-final' value='Y'/>\r
170                                 <parameter name="error-code" value="500" />\r
171                                 <parameter name="error-message" value="request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate" />\r
172                             </return>\r
173                         </outcome>\r
174                     </switch>\r
175                 </outcome>\r
176                 <outcome value='deactivate'>\r
177                     <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
178                         <outcome value='DeactivateSDWANVpnInstance'>\r
179                             <block atomic="true">\r
180                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\r
181                                     <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>\r
182                                 </execute>\r
183                                 <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">\r
184                                     <outcome value=''>\r
185                                         <return status='failure'>\r
186                                             <parameter name='ack-final' value='Y'/>\r
187                                             <parameter name="error-code" value="500" />\r
188                                             <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />\r
189                                         </return>\r
190                                     </outcome>\r
191                                 </switch>\r
192                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
193                                     <outcome value=''>\r
194                                         <return status='failure'>\r
195                                             <parameter name='ack-final' value='Y'/>\r
196                                             <parameter name="error-code" value="500" />\r
197                                             <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />\r
198                                         </return>\r
199                                     </outcome>\r
200                                     <outcome value='Other'>\r
201                                         <block atomic="true">\r
202                                             <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
203                                                 <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">\r
204                                                     <outcome value='true'>\r
205                                                         <block atomic="true">\r
206                                                             <set>\r
207                                                                 <parameter name='tmp.vidx' value='`$nidx`' />\r
208                                                                 <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\r
209                                                             </set>\r
210                                                         </block>\r
211                                                     </outcome>\r
212                                                 </switch>\r
213                                             </for>\r
214                                             <switch test="`$tmp.vidx`">\r
215                                                 <outcome value=''>\r
216                                                     <return status='failure'>\r
217                                                         <parameter name='ack-final' value='Y'/>\r
218                                                         <parameter name="error-code" value="500" />\r
219                                                         <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />\r
220                                                     </return>\r
221                                                 </outcome>\r
222                                             </switch>\r
223                                         </block>\r
224                                     </outcome>\r
225                                 </switch>\r
226                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\r
227                                     <outcome value='Active'>\r
228                                         <block atomic="true"></block>\r
229                                     </outcome>\r
230                                     <outcome value='Other'>\r
231                                         <return status='failure'>\r
232                                             <parameter name='ack-final' value='Y'/>\r
233                                             <parameter name="error-code" value="500" />\r
234                                             <parameter name="error-message" value="`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />\r
235                                         </return>\r
236                                     </outcome>\r
237                                 </switch>\r
238                             </block>\r
239                         </outcome>\r
240                         <outcome value='Other'>\r
241                             <return status='failure'>\r
242                                 <parameter name='ack-final' value='Y'/>\r
243                                 <parameter name="error-code" value="500" />\r
244                                 <parameter name="error-message" value="request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate" />\r
245                             </return>\r
246                         </outcome>\r
247                     </switch>\r
248                 </outcome>\r
249                 <outcome value='delete'>\r
250                     <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
251                         <outcome value='DeleteSDWANVpnInstance'>\r
252                             <block atomic="true">\r
253                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\r
254                                     <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>\r
255                                 </execute>\r
256                                 <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">\r
257                                     <outcome value=''>\r
258                                         <return status='failure'>\r
259                                             <parameter name='ack-final' value='Y'/>\r
260                                             <parameter name="error-code" value="500" />\r
261                                             <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />\r
262                                         </return>\r
263                                     </outcome>\r
264                                 </switch>\r
265                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
266                                     <outcome value=''>\r
267                                         <return status='failure'>\r
268                                             <parameter name='ack-final' value='Y'/>\r
269                                             <parameter name="error-code" value="500" />\r
270                                             <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />\r
271                                         </return>\r
272                                     </outcome>\r
273                                     <outcome value='Other'>\r
274                                         <block atomic="true">\r
275                                             <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
276                                                 <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">\r
277                                                     <outcome value='true'>\r
278                                                         <block atomic="true">\r
279                                                             <set>\r
280                                                                 <parameter name='tmp.vidx' value='`$nidx`' />\r
281                                                                 <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\r
282                                                             </set>\r
283                                                         </block>\r
284                                                     </outcome>\r
285                                                 </switch>\r
286                                             </for>\r
287                                             <switch test="`$tmp.vidx`">\r
288                                                 <outcome value=''>\r
289                                                     <return status='failure'>\r
290                                                         <parameter name='ack-final' value='Y'/>\r
291                                                         <parameter name="error-code" value="500" />\r
292                                                         <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />\r
293                                                     </return>\r
294                                                 </outcome>\r
295                                             </switch>\r
296                                         </block>\r
297                                     </outcome>\r
298                                 </switch>\r
299                                 <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\r
300                                     <outcome value='PendingDelete'>\r
301                                         <block atomic="true"></block>\r
302                                     </outcome>\r
303                                     <outcome value='Other'>\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="`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />\r
308                                         </return>\r
309                                     </outcome>\r
310                                 </switch>\r
311                             </block>\r
312                         </outcome>\r
313                         <outcome value='Other'>\r
314                             <return status='failure'>\r
315                                 <parameter name='ack-final' value='Y'/>\r
316                                 <parameter name="error-code" value="500" />\r
317                                 <parameter name="error-message" value="request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete" />\r
318                             </return>\r
319                         </outcome>\r
320                     </switch>\r
321                 </outcome>\r
322                 <outcome value='Other'>\r
323                     <return status='failure'>\r
324                         <parameter name='ack-final' value='Y'/>\r
325                         <parameter name="error-code" value="500" />\r
326                         <parameter name="error-message" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />\r
327                     </return>\r
328                 </outcome>\r
329             </switch>\r
330         </block>\r
331     </method>\r
332 </service-logic>