Generic resource API DG catch up
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vf-module-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='vf-module-topology-operation-unassign' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\r
7                 <outcome value='DeleteVfModuleInstance'>\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 'DeleteVfModuleInstance'" />\r
15                     </return>\r
16                 </outcome>\r
17             </switch>\r
18             <set>\r
19                 <parameter name='vnf-index' value='-1' />\r
20             </set>\r
21             <switch test='`$service-data.vnfs.vnf_length`'>\r
22                 <outcome value=''>\r
23                     <return status='failure'>\r
24                         <parameter name='ack-final' value='Y'/>\r
25                         <parameter name="error-code" value="500" />\r
26                         <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />\r
27                     </return>\r
28                 </outcome>\r
29                 <outcome value='Other'>\r
30                     <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\r
31                         <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\r
32                             <outcome value='true'>\r
33                                 <block>\r
34                                     <set>\r
35                                         <parameter name='vnf-index' value='`$idx`' />\r
36                                     </set>\r
37                                     <break/>\r
38                                 </block>\r
39                             </outcome>\r
40                         </switch>\r
41                     </for>\r
42                 </outcome>\r
43             </switch>\r
44             <switch test='`$vnf-index`'>\r
45                 <outcome value='-1'>\r
46                     <return status='failure'>\r
47                         <parameter name='ack-final' value='Y'/>\r
48                         <parameter name="error-code" value="500" />\r
49                         <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />\r
50                     </return>\r
51                 </outcome>\r
52             </switch>\r
53             <set>\r
54                 <parameter name='vf-module-index' value='-1' />\r
55             </set>\r
56             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
57                 <outcome value=''>\r
58                     <return status='failure'>\r
59                         <parameter name='ack-final' value='Y'/>\r
60                         <parameter name="error-code" value="500" />\r
61                         <parameter name="error-message" value="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />\r
62                     </return>\r
63                 </outcome>\r
64                 <outcome value='Other'>\r
65                     <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
66                         <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>\r
67                             <outcome value='true'>\r
68                                 <block>\r
69                                     <set>\r
70                                         <parameter name='vf-module-index' value='`$idx`' />\r
71                                     </set>\r
72                                     <break/>\r
73                                 </block>\r
74                             </outcome>\r
75                         </switch>\r
76                     </for>\r
77                 </outcome>\r
78             </switch>\r
79             <switch test='`$vf-module-index`'>\r
80                 <outcome value='-1'>\r
81                     <return status='failure'>\r
82                         <parameter name='ack-final' value='Y'/>\r
83                         <parameter name="error-code" value="500" />\r
84                         <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />\r
85                     </return>\r
86                 </outcome>\r
87             </switch>\r
88             <set>\r
89                 <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />\r
90             </set>\r
91             <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
92 key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" >\r
93                 <outcome value='failure'>\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="Error updating EIPAM_IP_ASSIGNMENTS table" />\r
98                     </return>\r
99                 </outcome>\r
100             </update>\r
101             <!--EIPAM plug-in needs this attribute set with this name-->\r
102             <set>\r
103                 <parameter name='service-data.service-information.service-type' value='`$service-data.service-information.subscription-service-type`' />\r
104             </set>\r
105             <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
106                 <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
107                 <outcome value='failure'>\r
108                     <return status='failure'>\r
109                         <parameter name='ack-final' value='Y'/>\r
110                         <parameter name="error-code" value="500" />\r
111                         <parameter name="error-message" value="Error in EIPAM unassign IP address" />\r
112                     </return>\r
113                 </outcome>\r
114             </execute>\r
115             <for silentFailure='true' index='vm-type-index' 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-assignments.vms.vm_length`' >\r
116                 <for silentFailure='true' index='vm-index' 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-assignments.vms.vm[$vm-type-index].vm-count`' >\r
117                     <block atomic="true">\r
118                         <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
119   key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id\r
120      AND ecomp_service_instance_id = $service-data.service-information.service-instance-id\r
121      AND vm_name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >\r
122                             <outcome value='failure'>\r
123                                 <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
124                                     <parameter name="logger" value="message-log"/>\r
125                                     <parameter name="field1" value="__TIMESTAMP__"/>\r
126                                     <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>\r
127                                     <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>\r
128                                     <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>\r
129                                 </record>\r
130                             </outcome>\r
131                         </delete>\r
132                     </block>\r
133                 </for>\r
134             </for>\r
135             <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-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>\r
136                 <outcome value=''>\r
137                     <block></block>\r
138                 </outcome>\r
139                 <outcome value='Other'>\r
140                     <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
141   resource="instance-groups" \r
142   key="instance-group.instance-group-function = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function\r
143     AND instance-group.instance-group-type = 'L3-NETWORK'"\r
144   pfx='aai.instance-group' local-only='false' >\r
145                         <outcome value='success'>\r
146                             <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >\r
147                                 <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >\r
148                                     <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >\r
149                                         <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key\r
150   == 'service-instance.service-instance-id'`">\r
151                                             <outcome value='true'>\r
152                                                 <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value\r
153   == $service-data.service-information.service-instance-id`'>\r
154                                                     <outcome value='true'>\r
155                                                         <block>\r
156                                                             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
157                                                                 <outcome value='1'>\r
158                                                                     <block>\r
159                                                                         <set>\r
160                                                                             <parameter name='tmp.status' value="`'PENDING_DELETE_' + $aai.instance-group.instance-group[$ig-index].id`" />\r
161                                                                         </set>\r
162                                                                         <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
163 key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $aai.instance-group.instance-group[$ig-index].id" ></update>\r
164                                                                         <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
165                                                                             <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
166                                                                         </execute>\r
167                                                                     </block>\r
168                                                                 </outcome>\r
169                                                             </switch>\r
170                                                             <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\r
171                                                                 <switch test='`$aai.instance-group.instance-group[$ig-index].id\r
172   == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\r
173                                                                     <outcome value='true'>\r
174                                                                         <for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >\r
175                                                                             <set>\r
176                                                                                 <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'\r
177   value='' />\r
178                                                                                 <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'\r
179   value='unassigned' />\r
180                                                                             </set>\r
181                                                                         </for>\r
182                                                                     </outcome>\r
183                                                                 </switch>\r
184                                                             </for>\r
185                                                         </block>\r
186                                                     </outcome>\r
187                                                 </switch>\r
188                                             </outcome>\r
189                                         </switch>\r
190                                     </for>\r
191                                 </for>\r
192                             </for>\r
193                         </outcome>\r
194                     </get-resource>\r
195                 </outcome>\r
196             </switch>\r
197             <for silentFailure='true' index='vm-type-index' start='0'\r
198   end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
199                 <for silentFailure='true' index='vnfc-index' 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-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\r
200                     <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
201    resource="vnfc"\r
202    key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"></delete>\r
203                 </for>\r
204             </for>\r
205             <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\r
206                 <outcome value='1'>\r
207                     <set>\r
208                         <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules." value=""/>\r
209                     </set>\r
210                 </outcome>\r
211                 <outcome value='Other'>\r
212                     <block atomic="true">\r
213                         <for index='idx' start='`$vf-module-index + 1`' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\r
214                             <set>\r
215                                 <parameter name="tmpidx" value="`$idx - 1`"/>\r
216                                 <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx]." value="$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx]." />\r
217                             </set>\r
218                         </for>\r
219                         <!--EIPAM plug-in needs this attribute set with this name-->\r
220                         <set>\r
221                             <parameter name='lastidx' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`' />\r
222                         </set>\r
223                         <set>\r
224                             <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lastidx]." value=""/>\r
225                         </set>\r
226                         <set>\r
227                             <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$lastidx`"/>\r
228                         </set>\r
229                     </block>\r
230                 </outcome>\r
231             </switch>\r
232             <return status='success'>\r
233                 <parameter name="ack-final-indicator" value="Y" />\r
234                 <parameter name="error-code" value="200" />\r
235                 <parameter name="error-message" value="`$error-message`" />\r
236             </return>\r
237         </block>\r
238     </method>\r
239 </service-logic>