Merge "Self serve fix "
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vnf-topology-operation-unassign.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='vnf-topology-operation-unassign' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$vnf-topology-operation-input.request-information.request-action`'>\r
7                 <outcome value='DeleteVnfInstance'>\r
8                     <block></block>\r
9                 </outcome>\r
10                 <outcome value='Other'>\r
11                     <return status='failure'>\r
12                         <parameter name='ack-final' value='Y'/>\r
13                         <parameter name="error-code" value="500" />\r
14                         <parameter name="error-message" value="If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'" />\r
15                     </return>\r
16                 </outcome>\r
17             </switch>\r
18             <switch test='`$service-data.vnfs.vnf_length`'>\r
19                 <outcome value=''>\r
20                     <return status='failure'>\r
21                         <parameter name='ack-final' value='Y'/>\r
22                         <parameter name="error-code" value="404" />\r
23                         <parameter name="error-message" value="There are no VNFs in MD-SAL" />\r
24                     </return>\r
25                 </outcome>\r
26             </switch>\r
27             <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
28                 <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`' >\r
29                     <outcome value='true'>\r
30                         <set>\r
31                             <parameter name='vnf-index' value='`$idx`' />\r
32                         </set>\r
33                     </outcome>\r
34                 </switch>\r
35             </for>\r
36             <switch test='`$vnf-index`'>\r
37                 <outcome value=''>\r
38                     <return status='failure'>\r
39                         <parameter name='ack-final' value='Y'/>\r
40                         <parameter name="error-code" value="404" />\r
41                         <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />\r
42                     </return>\r
43                 </outcome>\r
44             </switch>\r
45             <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`">\r
46                 <outcome value='0'>\r
47                     <block></block>\r
48                 </outcome>\r
49                 <outcome value=''>\r
50                     <block></block>\r
51                 </outcome>\r
52                 <outcome value='Other'>\r
53                     <return status='failure'>\r
54                         <parameter name='ack-final' value='Y'/>\r
55                         <parameter name="error-code" value="500" />\r
56                         <parameter name="error-message" value="Cannot delete the VNF because there are VFs defined" />\r
57                     </return>\r
58                 </outcome>\r
59             </switch>\r
60             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
61   key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\r
62   pfx='db.vf-model'></get-resource>\r
63             <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>\r
64             <switch test="`$ss.self-serve-flag`">\r
65                 <outcome value='false'>\r
66                     <block atomic="true">\r
67                         <switch test='`$service-data.vnfs.vnf_length`'>\r
68                             <outcome value='1'>\r
69                                 <set>\r
70                                     <parameter name="service-data.vnfs." value=""/>\r
71                                 </set>\r
72                             </outcome>\r
73                             <outcome value='Other'>\r
74                                 <block atomic="true">\r
75                                     <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >\r
76                                         <set>\r
77                                             <parameter name="$tmpidx" value="`$idx - 1`"/>\r
78                                             <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />\r
79                                         </set>\r
80                                     </for>\r
81                                     <set>\r
82                                         <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length-1]." value=""/>\r
83                                     </set>\r
84                                     <set>\r
85                                         <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>\r
86                                     </set>\r
87                                 </block>\r
88                             </outcome>\r
89                         </switch>\r
90                         <set>\r
91                             <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
92                             <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
93                             <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
94                         </set>\r
95                         <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
96                         <return status='success'>\r
97                             <parameter name="ack-final-indicator" value="Y" />\r
98                             <parameter name="error-code" value="200" />\r
99                             <parameter name="error-message" value="`$error-message`" />\r
100                         </return>\r
101                     </block>\r
102                 </outcome>\r
103                 <outcome value='true'>\r
104                     <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-unassign' mode='sync' >\r
105                         <outcome value='failure'>\r
106                             <return status='failure'>\r
107                                 <parameter name='error-code' value='500' />\r
108                                 <parameter name='error-message' value="`'Encountered error while unassigning self-serve resources with error: '+ $error-message`" />\r
109                             </return>\r
110                         </outcome>\r
111                         <outcome value='success'>\r
112                             <return status='success'>\r
113                                 <parameter name="ack-final-indicator" value="Y" />\r
114                                 <parameter name="error-code" value="200" />\r
115                                 <parameter name="error-message" value="`$error-message`" />\r
116                             </return>\r
117                         </outcome>\r
118                     </call>\r
119                 </outcome>\r
120             </switch>\r
121         </block>\r
122     </method>\r
123 </service-logic>