Merge "Fix groupIds"
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_self-serve-eipam-ip-assignment.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='self-serve-eipam-ip-assignment' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$ss.capability-name`'>\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="ss.capability-name is null" />\r
12                     </return>\r
13                 </outcome>\r
14             </switch>\r
15             <switch test='`$ss.capability-action`'>\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="ss.capability-action is null" />\r
21                     </return>\r
22                 </outcome>\r
23                 <outcome value='assign'>\r
24                     <block atomic="true">\r
25                         <call module='GENERIC-RESOURCE-API' rpc='self-service-capability-param-resolution' mode='sync' >\r
26                             <outcome value='failure'>\r
27                                 <return status="failure">\r
28                                     <parameter name="ack-final" value="Y" />\r
29                                     <parameter name="error-code" value="500"/>\r
30                                     <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />\r
31                                 </return>\r
32                             </outcome>\r
33                         </call>\r
34                         <block>\r
35                             <for index="pidx" 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-parameters.param_length`">\r
36                                 <set>\r
37                                     <parameter name='tmp.ss.param.capability-name' \r
38         value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\r
39                                 </set>\r
40                                 <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>\r
41                                     <outcome value='true'>\r
42                                         <break/>\r
43                                     </outcome>\r
44                                 </switch>\r
45                             </for>\r
46                             <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
47                                 <parameter name="logger" value="message-log"/>\r
48                                 <parameter name="field1" value="__TIMESTAMP__"/>\r
49                                 <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>\r
50                             </record>\r
51                             <for index="kidx" 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-parameters.param[$pidx].resource-resolution-data.resource-key_length`">\r
52                                 <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-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>\r
53                                     <outcome value='group-flag'>\r
54                                         <set>\r
55                                             <parameter name='tmp.ss.group-flag' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
56                                         </set>\r
57                                     </outcome>\r
58                                     <outcome value='plan-name'>\r
59                                         <set>\r
60                                             <parameter name='tmp.ss.plan-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
61                                         </set>\r
62                                     </outcome>\r
63                                     <outcome value='address-family'>\r
64                                         <set>\r
65                                             <parameter name='tmp.ss.address-family' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
66                                         </set>\r
67                                     </outcome>\r
68                                     <outcome value='client-key'>\r
69                                         <set>\r
70                                             <parameter name='tmp.ss.client-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
71                                         </set>\r
72                                     </outcome>\r
73                                 </switch>\r
74                             </for>\r
75                         </block>\r
76                         <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-FQPN' mode='sync' >\r
77                             <outcome value='failure'>\r
78                                 <return status="failure">\r
79                                     <parameter name="ack-final" value="Y" />\r
80                                     <parameter name="error-code" value="500"/>\r
81                                     <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />\r
82                                 </return>\r
83                             </outcome>\r
84                         </call>\r
85                         <set>\r
86                             <parameter name='eipam-ip-block.plans[0].requests[0].'\r
87     value='self-serve-generate-FQPN-output.' />\r
88                         </set>\r
89                         <set>\r
90                             <parameter name='eipam-ip-block.group-flag'\r
91     value='`$tmp.ss.group-flag`' />\r
92                             <parameter name='eipam-ip-block.plans[0].plan-name'\r
93     value='`$tmp.ss.plan-name`' />\r
94                             <parameter name='eipam-ip-block.plans[0].address-family'\r
95     value="`$tmp.ss.address-family`" />\r
96                             <parameter name='eipam-ip-block.plans[0].requests[0].client-key'\r
97         value="`$tmp.ss.client-key`" />\r
98                         </set>\r
99                         <set>\r
100                             <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />\r
101                         </set>\r
102                         <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">\r
103                             <outcome value='failure'>\r
104                                 <block atomic="true">\r
105                                     <set>\r
106                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />\r
107                                     </set>\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="`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`" />\r
112                                     </return>\r
113                                 </block>\r
114                             </outcome>\r
115                         </execute>\r
116                         <for index="pidx" 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-parameters.param_length`">\r
117                             <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-parameters.param[$pidx].name`'>\r
118                                 <outcome value='vmxvre_oam_ip_0'>\r
119                                     <block>\r
120                                         <set>\r
121                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' \r
122         value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\r
123                                         </set>\r
124                                         <set>\r
125                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \r
126         value='SUCCESS' />\r
127                                         </set>\r
128                                     </block>\r
129                                 </outcome>\r
130                                 <outcome value='vmxvre_oam_ip_prefix_0'>\r
131                                     <block>\r
132                                         <set>\r
133                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' \r
134         value='`$eipam-ip-block.plans[0].requests[0].ip-prefix-length`' />\r
135                                         </set>\r
136                                         <set>\r
137                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \r
138         value='SUCCESS' />\r
139                                         </set>\r
140                                     </block>\r
141                                 </outcome>\r
142                                 <outcome value='vmxvre_oam_gateway'>\r
143                                     <block>\r
144                                         <set>\r
145                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' \r
146         value='`$eipam-ip-block.plans[0].requests[0].ReservedAssignments[0].ReservedAssignment[3].ReservedKeyIPAddress`' />\r
147                                         </set>\r
148                                         <set>\r
149                                             <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \r
150         value='SUCCESS' />\r
151                                         </set>\r
152                                     </block>\r
153                                 </outcome>\r
154                             </switch>\r
155                         </for>\r
156                     </block>\r
157                 </outcome>\r
158                 <outcome value='unassign'>\r
159                     <block atomic="true">\r
160                         <block>\r
161                             <for index="pidx" 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-parameters.param_length`">\r
162                                 <set>\r
163                                     <parameter name='tmp.ss.param.capability-name' \r
164         value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\r
165                                 </set>\r
166                                 <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>\r
167                                     <outcome value='true'>\r
168                                         <break/>\r
169                                     </outcome>\r
170                                 </switch>\r
171                             </for>\r
172                             <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
173                                 <parameter name="logger" value="message-log"/>\r
174                                 <parameter name="field1" value="__TIMESTAMP__"/>\r
175                                 <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>\r
176                             </record>\r
177                             <for index="kidx" 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-parameters.param[$pidx].resource-resolution-data.resource-key_length`">\r
178                                 <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-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>\r
179                                     <outcome value='group-flag'>\r
180                                         <set>\r
181                                             <parameter name='tmp.ss.group-flag' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
182                                         </set>\r
183                                     </outcome>\r
184                                     <outcome value='plan-name'>\r
185                                         <set>\r
186                                             <parameter name='tmp.ss.plan-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
187                                         </set>\r
188                                     </outcome>\r
189                                     <outcome value='address-family'>\r
190                                         <set>\r
191                                             <parameter name='tmp.ss.address-family' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
192                                         </set>\r
193                                     </outcome>\r
194                                     <outcome value='client-key'>\r
195                                         <set>\r
196                                             <parameter name='tmp.ss.client-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\r
197                                         </set>\r
198                                     </outcome>\r
199                                 </switch>\r
200                             </for>\r
201                         </block>\r
202                         <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
203         key='SELECT * from EIPAM_IP_ASSIGNMENTS \r
204                 WHERE service_instance_id = $tmp.ss.service-instance-id\r
205                 AND client_key = $tmp.ss.client-key'>\r
206                             <outcome value='not-found'>\r
207                                 <block></block>\r
208                             </outcome>\r
209                             <outcome value='success'>\r
210                                 <block atomic="true">\r
211                                     <set>\r
212                                         <parameter name='tmp.status' value="PENDING_DELETE" />\r
213                                     </set>\r
214                                     <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"\r
215         key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status \r
216                 WHERE service_instance_id = $tmp.ss.service-instance-id \r
217                 AND client_key = $tmp.ss.client-key" >\r
218                                         <outcome value='failure'>\r
219                                             <return status='failure'>\r
220                                                 <parameter name='ack-final' value='Y'/>\r
221                                                 <parameter name="error-code" value="500" />\r
222                                                 <parameter name="error-message" value="`'Error updating EIPAM_IP_ASSIGNMENTS table to unassign ip with client_key=' + $tmp.ss.client-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />\r
223                                             </return>\r
224                                         </outcome>\r
225                                     </update>\r
226                                     <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">\r
227                                         <parameter name="deleteEIPAM_status" value="`$tmp.status`" />\r
228                                         <outcome value='failure'>\r
229                                             <return status='failure'>\r
230                                                 <parameter name='ack-final' value='Y'/>\r
231                                                 <parameter name="error-code" value="500" />\r
232                                                 <parameter name="error-message" value="`'Error in EIPAMPlugin.unassignIPAddress with client-key='+ $tmp.ss.client-key`" />\r
233                                             </return>\r
234                                         </outcome>\r
235                                     </execute>\r
236                                 </block>\r
237                             </outcome>\r
238                         </get-resource>\r
239                         <for index="pidx" 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-parameters.param_length`">\r
240                             <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-parameters.param[$pidx].name`'>\r
241                                 <outcome value='vmxvre_oam_ip_0'>\r
242                                     <set>\r
243                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \r
244         value='DELETED' />\r
245                                     </set>\r
246                                 </outcome>\r
247                                 <outcome value='vmxvre_oam_ip_prefix_0'>\r
248                                     <set>\r
249                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \r
250         value='DELETED' />\r
251                                     </set>\r
252                                 </outcome>\r
253                                 <outcome value='vmxvre_oam_gateway'>\r
254                                     <set>\r
255                                         <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \r
256         value='DELETED' />\r
257                                     </set>\r
258                                 </outcome>\r
259                             </switch>\r
260                         </for>\r
261                     </block>\r
262                 </outcome>\r
263             </switch>\r
264             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
265                 <parameter name='filename' value='/var/tmp/ss.eipam.log' />\r
266             </execute>\r
267         </block>\r
268     </method>\r
269 </service-logic>