Chore: Add gerrit maven verify GHA workflow
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.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-vlan-tagging-ip-addresses' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$tmp.vt-ip.type`'>\r
7                 <outcome value=''>\r
8                     <return status='failure'>\r
9                         <parameter name='error-code' value='500' />\r
10                         <parameter name='error-message' value='type is required' />\r
11                     </return>\r
12                 </outcome>\r
13             </switch>\r
14             <switch test='`$tmp.vt-ip.network-instance-group-function`'>\r
15                 <outcome value=''>\r
16                     <return status='failure'>\r
17                         <parameter name='error-code' value='500' />\r
18                         <parameter name='error-message' value='network-instance-group-function is required for FIXED ip request' />\r
19                     </return>\r
20                 </outcome>\r
21             </switch>\r
22             <switch test='`$tmp.vt-ip.ip-version`'>\r
23                 <outcome value=''>\r
24                     <return status='failure'>\r
25                         <parameter name='error-code' value='500' />\r
26                         <parameter name='error-message' value='ip-version is required' />\r
27                     </return>\r
28                 </outcome>\r
29                 <outcome value='ipv4'>\r
30                     <set>\r
31                         <parameter name='tmp.address-family' value='4' />\r
32                         <parameter name='tmp.sql.address-family' value='%4' />\r
33                     </set>\r
34                 </outcome>\r
35                 <outcome value='ipv6'>\r
36                     <set>\r
37                         <parameter name='tmp.address-family' value='6' />\r
38                         <parameter name='tmp.sql.address-family' value='%6' />\r
39                     </set>\r
40                 </outcome>\r
41             </switch>\r
42             <set>\r
43                 <parameter name='eipam-ip-block.' value='' />\r
44             </set>\r
45             <switch test='`$tmp.vt-ip.type`'>\r
46                 <outcome value='FIXED'>\r
47                     <block atomic='true'>\r
48                         <switch test='`$tmp.vt-ip.vnfc-name`'>\r
49                             <outcome value=''>\r
50                                 <return status='failure'>\r
51                                     <parameter name='error-code' value='500' />\r
52                                     <parameter name='error-message' value='vnfc-name is required for FIXED ip request' />\r
53                                 </return>\r
54                             </outcome>\r
55                         </switch>\r
56                         <switch test='`$tmp.vt-ip.vf-module-id`'>\r
57                             <outcome value=''>\r
58                                 <return status='failure'>\r
59                                     <parameter name='error-code' value='500' />\r
60                                     <parameter name='error-message' value='vf-module-id is required' />\r
61                                 </return>\r
62                             </outcome>\r
63                         </switch>\r
64                         <switch test='`$tmp.vt-ip.sequence-number`'>\r
65                             <outcome value=''>\r
66                                 <return status='failure'>\r
67                                     <parameter name='error-code' value='500' />\r
68                                     <parameter name='error-message' value='seq-num is required' />\r
69                                 </return>\r
70                             </outcome>\r
71                         </switch>\r
72                         <set>\r
73                             <parameter name="tmp.selected-client-key" \r
74         value="`$tmp.vt-ip.vm-type + '|' +\r
75                         $tmp.vt-ip.vnfc-name + '|' +\r
76                         $tmp.vt-ip.network-instance-group-function + '|' + \r
77                         $tmp.vt-ip.type + '|' + \r
78                         $tmp.address-family + '|' + \r
79                         $tmp.vt-ip.sequence-number`" />\r
80                             <!--        \r
81 fixed-ip client-key:\r
82 vm-type + VFCname + network-instance-group-function + "FIXED" + [ip-version(4/6)] + seqNo\r
83                 seqNo required for unique, but not required for shared\r
84 -->\r
85                         </set>\r
86                         <set>\r
87                             <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.vf-module-id`"/>\r
88                         </set>\r
89                     </block>\r
90                 </outcome>\r
91                 <outcome value='VIP'>\r
92                     <block atomic='true'>\r
93                         <switch test='`$tmp.vt-ip.nf-role`'>\r
94                             <outcome value=''>\r
95                                 <return status='failure'>\r
96                                     <parameter name='error-code' value='500' />\r
97                                     <parameter name='error-message' value='nf-role is required for VIP ip request' />\r
98                                 </return>\r
99                             </outcome>\r
100                         </switch>\r
101                         <switch test="`$tmp.vt-ip.network-instance-group-id == '' `">\r
102                             <outcome value='true'>\r
103                                 <return status='failure'>\r
104                                     <parameter name='error-code' value='500' />\r
105                                     <parameter name='error-message' value='network-isntance-group-id is required for VIP' />\r
106                                 </return>\r
107                             </outcome>\r
108                         </switch>\r
109                         <set>\r
110                             <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.network-instance-group-id`"/>\r
111                         </set>\r
112                         <set>\r
113                             <parameter name='tmp.selected-client-key' \r
114         value="`$tmp.vt-ip.nf-role + '|' + \r
115                         $tmp.vt-ip.network-instance-group-function + '|' +\r
116                         $tmp.vt-ip.type + '|' + \r
117                         $tmp.vt-ip.ip-version`" />\r
118                             <!--        \r
119 loating-ip client-key:\r
120 nf-role + network-instance-group-function + "VIP" + [ip-version(4/6)]\r
121 -->\r
122                         </set>\r
123                     </block>\r
124                 </outcome>\r
125             </switch>\r
126             <switch test="`$tmp.vt-ip.network-id == '' and $tmp.vt-ip.network-instance-group-id == '' `">\r
127                 <outcome value='true'>\r
128                     <return status='failure'>\r
129                         <parameter name='error-code' value='500' />\r
130                         <parameter name='error-message' value='either network-id or network-isntance-group-id is required' />\r
131                     </return>\r
132                 </outcome>\r
133             </switch>\r
134             <switch test="`$tmp.vt-ip.network-id != '' `">\r
135                 <outcome value='true'>\r
136                     <block atomic='true'>\r
137                         <set>\r
138                             <parameter name='tmp.sql' \r
139         value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_id = ' + \r
140         '$tmp.vt-ip.network-id AND address_family like $tmp.sql.address-family'`" />\r
141                         </set>\r
142                         <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
143   key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>\r
144                             <outcome value='failure'>\r
145                                 <return status='failure'>\r
146                                     <parameter name='error-code' value='500' />\r
147                                     <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />\r
148                                 </return>\r
149                             </outcome>\r
150                             <outcome value='not-found'>\r
151                                 <return status='failure'>\r
152                                     <parameter name='error-code' value='500' />\r
153                                     <parameter name='error-message' value = "`'No EIPAM_IP_SUBNETS entry found with network-id = ' + $tmp.vt-ip.network-id + ' and address_family = ' + $tmp.address-family`" />\r
154                                 </return>\r
155                             </outcome>\r
156                         </get-resource>\r
157                         <set>\r
158                             <parameter name="eipam-ip-block.plans[0].requests[0].network-id" \r
159         value="`$tmp.vt-ip.network-id`"/>\r
160                         </set>\r
161                     </block>\r
162                 </outcome>\r
163                 <outcome value='false'>\r
164                     <switch test="`$tmp.vt-ip.network-instance-group-id != '' `">\r
165                         <outcome value='true'>\r
166                             <block atomic='true'>\r
167                                 <set>\r
168                                     <parameter name='tmp.sql' \r
169         value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_instance_group_id = '+ \r
170                 '$tmp.vt-ip.network-instance-group-id AND address_family like $tmp.sql.address-family'`" />\r
171                                 </set>\r
172                                 <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
173   key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>\r
174                                     <outcome value='failure'>\r
175                                         <return status='failure'>\r
176                                             <parameter name='error-code' value='500' />\r
177                                             <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />\r
178                                         </return>\r
179                                     </outcome>\r
180                                     <outcome value='not-found'>\r
181                                         <return status='failure'>\r
182                                             <parameter name='error-code' value='500' />\r
183                                             <parameter name='error-message' value = "`'No EIPAM_IP_SUBNETS entry found with network-instance-group-id = ' + $tmp.vt-ip.network-instance-group-id + ' and address_family = ' + $tmp.address-family`" />\r
184                                         </return>\r
185                                     </outcome>\r
186                                 </get-resource>\r
187                                 <set>\r
188                                     <parameter name="eipam-ip-block.plans[0].requests[0].network-instance-group-id" \r
189         value="`$tmp.vt-ip.network-instance-group-id`"/>\r
190                                 </set>\r
191                             </block>\r
192                         </outcome>\r
193                     </switch>\r
194                 </outcome>\r
195             </switch>\r
196             <set>\r
197                 <parameter name='tmp.level4-key-found' value='false' />\r
198             </set>\r
199             <for index='didx' start='0' end='`$db.selected-subnet-data_length`' >\r
200                 <set>\r
201                     <parameter name='tmp.sql' \r
202         value="`'SELECT a.entity_id, a.key_name, a.key_value, a.level from EIPAM_IP_SUBNET_KEYS a where level = (SELECT MAX(level) from EIPAM_IP_SUBNET_KEYS b where b.entity_id = a.entity_id and entity_id = ' + ' $db.selected-subnet-data[$didx].entity-id )'`" />\r
203                 </set>\r
204                 <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
205   key='`$tmp.sql`' pfx='db.selected-subnet-keys'>\r
206                     <outcome value='failure'>\r
207                         <return status='failure'>\r
208                             <parameter name='error-code' value='500' />\r
209                             <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table to find MAX level by entity_id' />\r
210                         </return>\r
211                     </outcome>\r
212                     <outcome value='success'>\r
213                         <switch test="`$db.selected-subnet-keys.level == '4' `">\r
214                             <outcome value='false'>\r
215                                 <block></block>\r
216                             </outcome>\r
217                             <outcome value='true'>\r
218                                 <block>\r
219                                     <set>\r
220                                         <parameter name='tmp.level4-key-found' value='true' />\r
221                                     </set>\r
222                                     <set>\r
223                                         <parameter name='tmp.selected-entity-id' value='`$db.selected-subnet-keys.entity-id`' />\r
224                                     </set>\r
225                                     <set>\r
226                                         <parameter name='tmp.selected-plan-name' value='`$db.selected-subnet-data[$didx].plan-name`' />\r
227                                     </set>\r
228                                     <break/>\r
229                                 </block>\r
230                             </outcome>\r
231                         </switch>\r
232                     </outcome>\r
233                 </get-resource>\r
234             </for>\r
235             <switch test="`$tmp.level4-key-found`">\r
236                 <outcome value='false'>\r
237                     <return status='failure'>\r
238                         <parameter name='error-code' value='500' />\r
239                         <parameter name='error-message' value='No level 4 KeyName found in EIPAM_IP_SUBNET_KEYS' />\r
240                     </return>\r
241                 </outcome>\r
242             </switch>\r
243             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
244   key='SELECT * from EIPAM_IP_SUBNET_KEYS  \r
245         where entity_id = $tmp.selected-entity-id order by level'\r
246   pfx='db.eipam-subnet-keys[]'>\r
247                 <outcome value='failure'>\r
248                     <return status='failure'>\r
249                         <parameter name='error-code' value='500' />\r
250                         <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table by entity_id' />\r
251                     </return>\r
252                 </outcome>\r
253             </get-resource>\r
254             <for index='key' start='0' end='`$db.eipam-subnet-keys_length`' >\r
255                 <set>\r
256                     <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-name" \r
257         value="`$db.eipam-subnet-keys[$key].key-name`"/>\r
258                     <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-value" \r
259         value="`$db.eipam-subnet-keys[$key].key-value`"/>\r
260                 </set>\r
261             </for>\r
262             <set>\r
263                 <parameter name='eipam-ip-block.plans[0].plan-name' value='`$tmp.selected-plan-name`' />\r
264                 <parameter name='eipam-ip-block.plans[0].address-family' value="`$tmp.vt-ip.ip-version`" />\r
265                 <parameter name='eipam-ip-block.plans[0].requests[0].client-key' \r
266         value="`$tmp.selected-client-key`" />\r
267                 <parameter name="eipam-ip-block.plans[0].requests[0].info" \r
268         value="`$tmp.eipam.info`"/>\r
269                 <parameter name="eipam-ip-block.plans[0].requests[0].pools_length" value="4"/>\r
270                 <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />\r
271                 <parameter name="eipam-ip-block.plans_length" value="1"/>\r
272             </set>\r
273             <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
274                 <parameter name='filename' value='/var/tmp/vlan-tag-ip.log' />\r
275             </execute>\r
276             <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">\r
277                 <outcome value='failure'>\r
278                     <block atomic="true">\r
279                         <return status="failure">\r
280                             <parameter name="ack-final" value="Y" />\r
281                             <parameter name="error-code" value="500"/>\r
282                             <parameter name="error-message" value="`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`" />\r
283                         </return>\r
284                     </block>\r
285                 </outcome>\r
286             </execute>\r
287         </block>\r
288     </method>\r
289 </service-logic>