Adding site Resource DG
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.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='site-vnf-topology-operation-delete' mode='sync'>
5         <block atomic="true">
6             <switch test='`$service-data.vnfs.vnf_length`'>
7                 <outcome value='0'>
8                     <return status='failure'>
9                         <parameter name='ack-final' value='Y'/>
10                         <parameter name="error-code" value="500" />
11                         <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
12                     </return>
13                 </outcome>
14                 <outcome value=''>
15                     <return status='failure'>
16                         <parameter name='ack-final' value='Y'/>
17                         <parameter name="error-code" value="500" />
18                         <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
19                     </return>
20                 </outcome>
21                 <outcome value='Other'>
22                     <block atomic="true">
23                         <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >
24                             <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">
25                                 <outcome value='true'>
26                                     <set>
27                                         <parameter name='tmp.vidx' value='`$vidx`' />
28                                         <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />
29                                     </set>
30                                 </outcome>
31                             </switch>
32                         </for>
33                         <switch test="`$tmp.vidx`">
34                             <outcome value=''>
35                                 <return status='failure'>
36                                     <parameter name='ack-final' value='Y'/>
37                                     <parameter name="error-code" value="500" />
38                                     <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
39                                 </return>
40                             </outcome>
41                         </switch>
42                     </block>
43                 </outcome>
44             </switch>
45             <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status == 'PendingDelete'`">
46                 <outcome value='false'>
47                     <return status='failure'>
48                         <parameter name='ack-final' value='Y'/>
49                         <parameter name="error-code" value="500" />
50                         <parameter name="error-message" value="Cannot delete a VNF in a Created state" />
51                     </return>
52                 </outcome>
53             </switch>
54             <switch test="`$ctx.vnf-data.vf-modules.vf-module_length`">
55                 <outcome value='0'>
56                     <block></block>
57                 </outcome>
58                 <outcome value=''>
59                     <block></block>
60                 </outcome>
61                 <outcome value='Other'>
62                     <return status='failure'>
63                         <parameter name='ack-final' value='Y'/>
64                         <parameter name="error-code" value="500" />
65                         <parameter name="error-message" value="Cannot delete the VNF because there are VFs defined" />
66                     </return>
67                 </outcome>
68             </switch>
69             <switch test='`$service-data.vnfs.vnf_length`'>
70                 <outcome value='1'>
71                     <set>
72                         <parameter name="service-data.vnfs." value=""/>
73                     </set>
74                 </outcome>
75                 <outcome value='Other'>
76                     <block atomic="true">
77                         <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >
78                             <set>
79                                 <parameter name="$tmpidx" value="`$idx - 1`"/>
80                                 <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />
81                             </set>
82                         </for>
83                         <set>
84                             <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length-1]." value=""/>
85                         </set>
86                         <set>
87                             <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>
88                         </set>
89                     </block>
90                 </outcome>
91             </switch>
92             <delete plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf' 
93       key='generic-vnf.vnf-id = $prop.vnf-index' ></delete>
94             <return status='success'>
95                 <parameter name="ack-final-indicator" value="Y" />
96                 <parameter name="error-code" value="200" />
97                 <parameter name="error-message" value="`$error-message`" />
98             </return>
99         </block>
100     </method>
101 </service-logic>