Fix reuse InstanceName when re-creating a service
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_rollback-generated-names.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='rollback-generated-names' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$rollback-generated-names-input.context-id`'>\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="rollback-generated-names-input.context-id can not be null" />\r
12                     </return>\r
13                 </outcome>\r
14             </switch>\r
15             <switch test='`$rollback-generated-names-input.naming-type`'>\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="rollback-generated-names-input.naming-type can not be null" />\r
21                     </return>\r
22                 </outcome>\r
23                 <outcome value='VM_INSTANCE'>\r
24                     <set>\r
25                         <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VM_NAME_INDEX' />\r
26                         <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vm_name_prefix' />\r
27                     </set>\r
28                 </outcome>\r
29                 <outcome value='VNFC_INSTANCE'>\r
30                     <set>\r
31                         <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VNFC_NAME_INDEX' />\r
32                         <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnfc_name_prefix' />\r
33                     </set>\r
34                 </outcome>\r
35                 <outcome value='CLIENT_KEY'>\r
36                     <set>\r
37                         <parameter name='rollback-generated-names.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />\r
38                         <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnf_name_prefix' />\r
39                     </set>\r
40                 </outcome>\r
41                 <outcome value='NETWORK_INSTANCE'>\r
42                     <set>\r
43                         <parameter name='rollback-generated-names.index-table-name' \r
44         value='NETWORK_INSTANCE_NAME_INDEX' />\r
45                         <parameter name='rollback-generated-names.index-table.name-prefix-column' \r
46         value='network_instance_name_prefix' />\r
47                     </set>\r
48                 </outcome>\r
49                 <outcome value='SERVICE_INSTANCE'>\r
50                     <block>\r
51                         <set>\r
52                             <parameter name='rollback-generated-names.index-table-name' \r
53         value='SERVICE_INSTANCE_NAME_INDEX' />\r
54                             <parameter name='rollback-generated-names.index-table.name-prefix-column' \r
55         value='service_instance_name_prefix' />\r
56                         </set>\r
57                         <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
58         key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \r
59                 AND context_id = $rollback-generated-names-input.context-id AND prefix IS NULL AND name_index IS NULL'></delete>\r
60                     </block>\r
61                 </outcome>\r
62                 <outcome value='VNF_INSTANCE'>\r
63                     <set>\r
64                         <parameter name='rollback-generated-names.index-table-name' value='VNF_NAME_INDEX' />\r
65                         <parameter name='rollback-generated-names.index-table.name-prefix-column' \r
66         value='vnf_name_prefix' />\r
67                     </set>\r
68                 </outcome>\r
69                 <outcome value='Other'>\r
70                     <return status='failure'>\r
71                         <parameter name='ack-final' value='Y'/>\r
72                         <parameter name="error-code" value="500" />\r
73                         <parameter name="error-message" value="`'Unknown rollbck-generated-name-input.naming-type: ' + $rollback-generated-names-input.naming-type`" />\r
74                     </return>\r
75                 </outcome>\r
76             </switch>\r
77             <set>\r
78                 <parameter name='db.grn.' value='' />\r
79             </set>\r
80             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
81         key='SELECT distinct prefix from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \r
82                 AND context_id = $rollback-generated-names-input.context-id'\r
83   pfx='db.grn.distinct-prefix[]'>\r
84                 <outcome value='failure'>\r
85                     <return status='failure'>\r
86                         <parameter name='error-code' value='500'/>\r
87                         <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table to retrieve distinct prefix"/>\r
88                     </return>\r
89                 </outcome>\r
90                 <outcome value='not-found'>\r
91                     <set>\r
92                         <parameter name='db.grn.distinct-prefix_length' value='0' />\r
93                     </set>\r
94                 </outcome>\r
95             </get-resource>\r
96             <for index='prefix-index' start='0' end='`$db.grn.distinct-prefix_length`' >\r
97                 <block atomic='true'>\r
98                     <set>\r
99                         <parameter name='db.grn.subset.' value='' />\r
100                     </set>\r
101                     <set>\r
102                         <parameter name='tmp.rb.' value='' />\r
103                     </set>\r
104                     <set>\r
105                         <parameter name='tmp.rb.grn.prefix' value='`$db.grn.distinct-prefix[$prefix-index].prefix`' />\r
106                     </set>\r
107                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
108         key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type   \r
109                 AND context_id = $rollback-generated-names-input.context-id \r
110                 AND prefix = $tmp.rb.grn.prefix order by name_index'\r
111   pfx='db.grn.subset[]'>\r
112                         <outcome value='failure'>\r
113                             <return status='failure'>\r
114                                 <parameter name='error-code' value='500'/>\r
115                                 <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>\r
116                             </return>\r
117                         </outcome>\r
118                         <outcome value='not-found'>\r
119                             <return status='failure'>\r
120                                 <parameter name='error-code' value='500'/>\r
121                                 <parameter name='error-message' value="`'No entry found in GENERIC_RESOURCE_NAME where context_id = ' + $rollback-generated-names-input.context-id + ' and type = ' + $rollback-generated-names-input.naming-type + ' and prefix = ' + $db.grn.distinct-prefix[$prefix-index].prefix`"/>\r
122                             </return>\r
123                         </outcome>\r
124                     </get-resource>\r
125                     <block atomic='true'>\r
126                         <set>\r
127                             <parameter name='tmp.rb.sql' \r
128         value="`'SELECT * from ' + $rollback-generated-names.index-table-name \r
129                 + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
130                 + ' = $tmp.rb.grn.prefix'`" />\r
131                         </set>\r
132                         <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
133   key="`$tmp.rb.sql`" pfx='db.grn.index-table'>\r
134                             <outcome value='failure'>\r
135                                 <return status='failure'>\r
136                                     <parameter name='error-message' value="`'Error reading the '\r
137         + $rollback-generated-names.index-table-name \r
138         + ' table with ' + $rollback-generated-names.name-prefix-column\r
139         + ' = ' + $tmp.rb.grn.prefix \r
140         + '. MANUAL clean up is required!'`" />\r
141                                 </return>\r
142                             </outcome>\r
143                             <outcome value='not-found'>\r
144                                 <return status='failure'>\r
145                                     <parameter name='error-message' value="`'No entries found in ' \r
146         + $rollback-generated-names.index-table-name \r
147         + ' with ' \r
148         + $rollback-generated-names.name-prefix-column \r
149         + ' = ' \r
150         + $tmp.rb.grn.prefix `" />\r
151                                 </return>\r
152                             </outcome>\r
153                         </get-resource>\r
154                     </block>\r
155                     <set>\r
156                         <parameter name='tmp.rb.grn.max-index' \r
157         value='`$db.grn.subset[$db.grn.subset_length - 1].name-index`' />\r
158                     </set>\r
159                     <set>\r
160                         <parameter name='tmp.rb.delta-index' \r
161         value='`$db.grn.index-table.index-number - $tmp.rb.grn.max-index`' />\r
162                     </set>\r
163                     <set>\r
164                         <parameter name='tmp.rb.net-index' \r
165         value='`$db.grn.index-table.index-number - $db.grn.subset_length`' />\r
166                     </set>\r
167                     <switch test="`$tmp.rb.delta-index == 0`">\r
168                         <outcome value='true'>\r
169                             <switch test="`$tmp.rb.net-index == 0`">\r
170                                 <outcome value='true'>\r
171                                     <block atomic='true'>\r
172                                         <set>\r
173                                             <parameter name='tmp.rb.sql' \r
174         value="`'DELETE from ' + $rollback-generated-names.index-table-name \r
175                 + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
176                 + ' = $tmp.rb.grn.prefix'`" />\r
177                                             <!--\r
178 + ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />\r
179 -->\r
180                                         </set>\r
181                                         <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
182   key="`$tmp.rb.sql`">\r
183                                             <outcome value='failure'>\r
184                                                 <return status='failure'>\r
185                                                     <parameter name='error-message' value="`'Error deleting '\r
186         + $rollback-generated-names.index-table-name \r
187         + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
188         + ' = ' + $tmp.rb.grn.prefix \r
189         + ' AND index_number = ' + $db.index-table.index-number\r
190         + '. MANUAL clean up is required!'`" />\r
191                                                 </return>\r
192                                             </outcome>\r
193                                             <outcome value='not-found'>\r
194                                                 <block></block>\r
195                                             </outcome>\r
196                                         </update>\r
197                                     </block>\r
198                                 </outcome>\r
199                                 <outcome value='false'>\r
200                                     <block atomic='true'>\r
201                                         <set>\r
202                                             <parameter name='tmp.rb.sql' \r
203         value="`'UPDATE ' + $rollback-generated-names.index-table-name \r
204                 + ' set index_number = ' + $tmp.rb.net-index\r
205                 + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
206                 + ' = $tmp.rb.grn.prefix'`" />\r
207                                         </set>\r
208                                         <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
209   key="`$tmp.rb.sql`">\r
210                                             <outcome value='failure'>\r
211                                                 <return status='failure'>\r
212                                                     <parameter name='error-message' value="`'Error updating  '\r
213         + $rollback-generated-names.index-table-name + '.index_number = ' \r
214         + $tmp.rb.net-index\r
215         + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
216         + ' = ' + $tmp.rb.grn.prefix\r
217         + '. MANUAL clean up is required!'`" />\r
218                                                 </return>\r
219                                             </outcome>\r
220                                             <outcome value='not-found'>\r
221                                                 <return status='failure'>\r
222                                                     <parameter name='error-message' value="`'Error updating  '\r
223         + $rollback-generated-names.index-table-name + '.index_number = ' \r
224         + $tmp.rb.net-index\r
225         + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
226         + ' = ' + $tmp.rb.grn.prefix\r
227         + '. MANUAL clean up is required!'`" />\r
228                                                 </return>\r
229                                             </outcome>\r
230                                         </update>\r
231                                     </block>\r
232                                 </outcome>\r
233                             </switch>\r
234                         </outcome>\r
235                         <outcome value='false'>\r
236                             <block></block>\r
237                         </outcome>\r
238                     </switch>\r
239                     <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
240         key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \r
241                 AND context_id = $rollback-generated-names-input.context-id \r
242                 AND prefix = $tmp.rb.grn.prefix'>\r
243                         <outcome value='failure'>\r
244                             <return status='failure'>\r
245                                 <parameter name='error-message' value="`'Error deleting GENERIC_RESOURCE_NAME WHERE type = '\r
246         + $rollback-generated-names-input.naming-type  \r
247         + ' AND context_id = ' + $rollback-generated-names-input.context-id \r
248         + ' AND prefix = '+ $tmp.rb.grn.prefix\r
249         + '. MANUAL clean up is required!'`" />\r
250                             </return>\r
251                         </outcome>\r
252                         <outcome value='not-found'>\r
253                             <block></block>\r
254                         </outcome>\r
255                     </delete>\r
256                     <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
257         key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type    \r
258                 AND prefix = $tmp.rb.grn.prefix order by name_index'\r
259   pfx='db.grn.prefix[]'>\r
260                         <outcome value='failure'>\r
261                             <return status='failure'>\r
262                                 <parameter name='error-code' value='500'/>\r
263                                 <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>\r
264                             </return>\r
265                         </outcome>\r
266                         <outcome value='not-found'>\r
267                             <block>\r
268                                 <set>\r
269                                     <parameter name='tmp.rb.sql' \r
270         value="`'DELETE from ' + $rollback-generated-names.index-table-name \r
271                 + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
272                 + ' = $tmp.rb.grn.prefix'`" />\r
273                                     <!--\r
274 + ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />\r
275 -->\r
276                                 </set>\r
277                                 <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
278   key="`$tmp.rb.sql`">\r
279                                     <outcome value='failure'>\r
280                                         <return status='failure'>\r
281                                             <parameter name='error-message' value="`'Error deleting '\r
282         + $rollback-generated-names.index-table-name \r
283         + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
284         + ' = ' + $tmp.rb.grn.prefix \r
285         + ' AND index_number = ' + $db.index-table.index-number`" />\r
286                                         </return>\r
287                                     </outcome>\r
288                                     <outcome value='not-found'>\r
289                                         <block></block>\r
290                                     </outcome>\r
291                                 </update>\r
292                             </block>\r
293                         </outcome>\r
294                         <outcome value='success'>\r
295                             <block>\r
296                                 <set>\r
297                                     <parameter name='tmp.rb.grn.last-max-index' \r
298         value='`$db.grn.prefix[$db.grn.prefix_length - 1].name-index`' />\r
299                                 </set>\r
300                                 <switch test="`$tmp.rb.net-index > $tmp.rb.grn.last-max-index`">\r
301                                     <outcome value='true'>\r
302                                         <block>\r
303                                             <set>\r
304                                                 <parameter name='tmp.rb.sql' \r
305         value="`'UPDATE ' + $rollback-generated-names.index-table-name \r
306                 + ' set index_number = ' + $tmp.rb.grn.last-max-index\r
307                 + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
308                 + ' = $tmp.rb.grn.prefix'`" />\r
309                                             </set>\r
310                                             <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
311   key="`$tmp.rb.sql`">\r
312                                                 <outcome value='failure'>\r
313                                                     <return status='failure'>\r
314                                                         <parameter name='error-message' value="`'Error updating  '\r
315         + $rollback-generated-names.index-table-name + '.index_number = ' \r
316         + $tmp.rb.grn.last-max-index\r
317         + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
318         + ' = ' + $tmp.rb.grn.prefix`" />\r
319                                                     </return>\r
320                                                 </outcome>\r
321                                                 <outcome value='not-found'>\r
322                                                     <return status='failure'>\r
323                                                         <parameter name='error-message' value="`'Error updating  '\r
324         + $rollback-generated-names.index-table-name + '.index_number = ' \r
325         + $tmp.rb.grn.last-max-index\r
326         + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
327         + ' = ' + $tmp.rb.grn.prefix`" />\r
328                                                     </return>\r
329                                                 </outcome>\r
330                                             </update>\r
331                                         </block>\r
332                                     </outcome>\r
333                                 </switch>\r
334                             </block>\r
335                         </outcome>\r
336                     </get-resource>\r
337                 </block>\r
338             </for>\r
339         </block>\r
340     </method>\r
341 </service-logic>