self-serve dg patch
[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             <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>\r
61             <switch test="`$ss.self-serve-flag`">\r
62                 <outcome value='false'>\r
63                     <block atomic="true">\r
64                         <switch test='`$service-data.vnfs.vnf_length`'>\r
65                             <outcome value='1'>\r
66                                 <set>\r
67                                     <parameter name="service-data.vnfs." value=""/>\r
68                                 </set>\r
69                             </outcome>\r
70                             <outcome value='Other'>\r
71                                 <block atomic="true">\r
72                                     <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >\r
73                                         <set>\r
74                                             <parameter name="$tmpidx" value="`$idx - 1`"/>\r
75                                             <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />\r
76                                         </set>\r
77                                     </for>\r
78                                     <set>\r
79                                         <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length-1]." value=""/>\r
80                                     </set>\r
81                                     <set>\r
82                                         <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>\r
83                                     </set>\r
84                                 </block>\r
85                             </outcome>\r
86                         </switch>\r
87                         <set>\r
88                             <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\r
89                             <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\r
90                             <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
91                         </set>\r
92                         <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
93                         <return status='success'>\r
94                             <parameter name="ack-final-indicator" value="Y" />\r
95                             <parameter name="error-code" value="200" />\r
96                             <parameter name="error-message" value="`$error-message`" />\r
97                         </return>\r
98                     </block>\r
99                 </outcome>\r
100                 <outcome value='true'>\r
101                     <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-unassign' mode='sync' >\r
102                         <outcome value='failure'>\r
103                             <return status='failure'>\r
104                                 <parameter name='error-code' value='500' />\r
105                                 <parameter name='error-message' value="`'Encountered error while unassigning self-serve resources with error: '+ $error-message`" />\r
106                             </return>\r
107                         </outcome>\r
108                         <outcome value='success'>\r
109                             <return status='success'>\r
110                                 <parameter name="ack-final-indicator" value="Y" />\r
111                                 <parameter name="error-code" value="200" />\r
112                                 <parameter name="error-message" value="`$error-message`" />\r
113                             </return>\r
114                         </outcome>\r
115                     </call>\r
116                 </outcome>\r
117             </switch>\r
118         </block>\r
119     </method>\r
120 </service-logic>