Merge "add queryparam to catalog db api to filter"
[so.git] / bpmn / so-bpmn-infrastructure-common / src / main / groovy / org / onap / so / bpmn / infrastructure / scripts / DoDeleteNetworkInstance.groovy
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2019 Samsung
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.bpmn.infrastructure.scripts
24
25 import javax.ws.rs.core.Response
26 import org.camunda.bpm.engine.delegate.BpmnError
27 import org.camunda.bpm.engine.delegate.DelegateExecution
28 import org.onap.aai.domain.yang.L3Network
29 import org.onap.aaiclient.client.aai.AAIObjectType
30 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
31 import org.onap.aaiclient.client.aai.entities.Relationships
32 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
33 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
34 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
35 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
36 import org.onap.aaiclient.client.graphinventory.entities.uri.Depth
37 import org.onap.logging.filter.base.ErrorCode
38 import org.onap.logging.filter.base.ONAPComponents;
39 import org.onap.so.bpmn.common.scripts.AaiUtil
40 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
41 import org.onap.so.bpmn.common.scripts.ExceptionUtil
42 import org.onap.so.bpmn.common.scripts.MsoUtils
43 import org.onap.so.bpmn.common.scripts.NetworkUtils
44 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
45 import org.onap.so.bpmn.common.scripts.VidUtils
46 import org.onap.so.bpmn.core.UrnPropertiesReader
47 import org.onap.so.bpmn.core.WorkflowException
48 import org.onap.so.bpmn.core.json.JsonUtils
49 import org.onap.so.client.HttpClient
50 import org.onap.so.client.HttpClientFactory
51 import org.onap.so.constants.Defaults
52 import org.onap.so.logger.LoggingAnchor
53 import org.onap.so.logger.MessageEnum
54 import org.slf4j.Logger
55 import org.slf4j.LoggerFactory
56 import org.springframework.web.util.UriUtils
57 import groovy.json.JsonOutput
58
59 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
60     private static final Logger logger = LoggerFactory.getLogger( DoDeleteNetworkInstance.class);
61
62     String Prefix= "DELNWKI_"
63     String groovyClassName = "DoDeleteNetworkInstance"
64     ExceptionUtil exceptionUtil = new ExceptionUtil()
65     JsonUtils jsonUtil = new JsonUtils()
66     VidUtils vidUtils = new VidUtils(this)
67     NetworkUtils networkUtils = new NetworkUtils()
68     SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
69
70     public InitializeProcessVariables(DelegateExecution execution){
71         /* Initialize all the process variables in this block */
72
73         execution.setVariable(Prefix + "networkRequest", "")
74         execution.setVariable(Prefix + "isSilentSuccess", false)
75         execution.setVariable(Prefix + "Success", false)
76
77         execution.setVariable(Prefix + "requestId", "")
78         execution.setVariable(Prefix + "source", "")
79         execution.setVariable(Prefix + "lcpCloudRegion", "")
80         execution.setVariable(Prefix + "networkInputs", "")
81         execution.setVariable(Prefix + "tenantId", "")
82
83         execution.setVariable(Prefix + "queryAAIResponse", "")
84         execution.setVariable(Prefix + "aaiReturnCode", "")
85         execution.setVariable(Prefix + "isAAIGood", false)
86         execution.setVariable(Prefix + "isVfRelationshipExist", false)
87
88         // AAI query Cloud Region
89         execution.setVariable(Prefix + "queryCloudRegionRequest","")
90         execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
91         execution.setVariable(Prefix + "queryCloudRegionResponse","")
92         execution.setVariable(Prefix + "cloudRegionPo","")
93         execution.setVariable(Prefix + "cloudRegionSdnc","")
94
95         execution.setVariable(Prefix + "deleteNetworkRequest", "")
96         execution.setVariable(Prefix + "deleteNetworkResponse", "")
97         execution.setVariable(Prefix + "networkReturnCode", "")
98         execution.setVariable(Prefix + "rollbackNetworkRequest", "")
99
100         execution.setVariable(Prefix + "deleteSDNCRequest", "")
101         execution.setVariable(Prefix + "deleteSDNCResponse", "")
102         execution.setVariable(Prefix + "sdncReturnCode", "")
103         execution.setVariable(Prefix + "sdncResponseSuccess", false)
104
105         execution.setVariable(Prefix + "deactivateSDNCRequest", "")
106         execution.setVariable(Prefix + "deactivateSDNCResponse", "")
107         execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
108         execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
109
110         execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
111         execution.setVariable(Prefix + "isException", false)
112
113
114     }
115
116     // **************************************************
117     //     Pre or Prepare Request Section
118     // **************************************************
119
120     public void preProcessRequest (DelegateExecution execution) {
121
122         execution.setVariable("prefix",Prefix)
123
124         logger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
125
126         // initialize flow variables
127         InitializeProcessVariables(execution)
128
129         try {
130             // get incoming message/input
131             execution.setVariable("action", "DELETE")
132             String deleteNetwork = execution.getVariable("bpmnRequest")
133             if (deleteNetwork != null) {
134                 if (deleteNetwork.contains("requestDetails")) {
135                     // JSON format request is sent, create xml
136                     try {
137                         def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
138                         logger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
139                         deleteNetwork =  vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
140
141                     } catch (Exception ex) {
142                         String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
143                         logger.debug(dataErrorMessage)
144                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
145                     }
146                 } else {
147                     // XML format request is sent
148
149                 }
150             } else {
151                 // vIPR format request is sent, create xml from individual variables
152                 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
153             }
154
155             deleteNetwork = utils.formatXml(deleteNetwork)
156             logger.debug(deleteNetwork)
157             execution.setVariable(Prefix + "networkRequest", deleteNetwork)
158             logger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
159
160             // validate 'backout-on-failure' to override 'mso.rollback'
161             boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
162             execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
163             logger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
164
165             String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
166             execution.setVariable(Prefix + "networkInputs", networkInputs)
167
168             // prepare messageId
169             String messageId = execution.getVariable("testMessageId")  // for testing
170             if (messageId == null || messageId == "") {
171                 messageId = UUID.randomUUID()
172                 logger.debug(Prefix + "messageId, random generated: " + messageId)
173             } else {
174                 logger.debug(Prefix + "messageId, pre-assigned: " + messageId)
175             }
176             execution.setVariable(Prefix + "messageId", messageId)
177
178             String source = utils.getNodeText(deleteNetwork, "source")
179             execution.setVariable(Prefix + "source", source)
180             logger.debug(Prefix + "source - " + source)
181
182             String networkId = ""
183             if (utils.nodeExists(networkInputs, "network-id")) {
184                 networkId = utils.getNodeText(networkInputs, "network-id")
185                 if (networkId == null || networkId == "" || networkId == 'null' ) {
186                     sendSyncError(execution)
187                     // missing value of network-id
188                     String dataErrorMessage = "network-request has missing 'network-id' element/value."
189                     logger.debug(" Invalid Request - " + dataErrorMessage)
190                     exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
191                 }
192             }
193
194             // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
195             def lcpCloudRegion = null
196             if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
197                 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
198                 if (lcpCloudRegion == 'null') {
199                     lcpCloudRegion = null
200                 }
201             }
202             execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
203             logger.debug("lcpCloudRegion : " + lcpCloudRegion)
204
205             String tenantId = null
206             if (utils.nodeExists(networkInputs, "tenant-id")) {
207                 tenantId = utils.getNodeText(networkInputs, "tenant-id")
208                 if (tenantId == 'null') {
209                     tenantId = null
210                 }
211
212             }
213             execution.setVariable(Prefix + "tenantId", tenantId)
214             logger.debug("tenantId : " + tenantId)
215
216             String sdncVersion = execution.getVariable("sdncVersion")
217             logger.debug("sdncVersion? : " + sdncVersion)
218
219             // PO Authorization Info / headers Authorization=
220             String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
221
222             try {
223                 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
224                 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
225                 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
226
227             } catch (IOException ex) {
228                 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
229                 logger.debug(dataErrorMessage )
230                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
231             }
232
233         } catch (BpmnError e) {
234             throw e;
235
236         } catch (Exception ex){
237             // caught exception
238             String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
239             logger.debug(exceptionMessage)
240             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
241
242         }
243
244     }
245
246
247     public void callRESTQueryAAI (DelegateExecution execution) {
248
249         execution.setVariable("prefix",Prefix)
250
251         logger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
252
253         // get variables
254         String networkInputs  = execution.getVariable(Prefix + "networkInputs")
255         String networkId   = utils.getNodeText(networkInputs, "network-id")
256         networkId = UriUtils.encode(networkId,"UTF-8")
257         ExceptionUtil exceptionUtil = new ExceptionUtil()
258         Boolean isVfRelationshipExist = false
259         try {
260             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ALL)
261             Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
262             AAIResultWrapper wrapper = getAAIClient().get(uri);
263             Optional<Relationships> relationships = wrapper.getRelationships()
264
265             if (l3Network.isPresent()) {
266                 execution.setVariable(Prefix + "aaiReturnCode", 200)
267                 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
268                 execution.setVariable(Prefix + "isAAIGood", true)
269                 if (relationships.isPresent()){
270                     if(!relationships.get().getRelatedUris(Types.VF_MODULE).isEmpty()){
271                         execution.setVariable(Prefix + "isVfRelationshipExist", true)
272                         isVfRelationshipExist = true
273                         String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
274                         exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
275                     }else{
276                         List<AAIResourceUri> tenantURIList = relationships.get().getRelatedUris(Types.TENANT)
277                         for(AAIResourceUri tenantURI: tenantURIList){
278                             if(execution.getVariable(Prefix + "tenantId") == null) {
279                                 String tenantId = tenantURI.getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId)
280                                 execution.setVariable(Prefix + "tenantId", tenantId)
281                                 logger.debug(" Get AAI getTenantId()  : " + tenantId)
282                             }
283                         }
284                         List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedUris(Types.CLOUD_REGION)
285                         for(AAIResourceUri tenantURI: cloudRegionURIList){
286                             if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
287                                 String lcpCloudRegion = tenantURI.getURIKeys().get(AAIFluentTypeBuilder.Types.CLOUD_REGION.getUriParams().cloudRegionId)
288                                 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
289                                 logger.debug(" Get AAI getCloudRegion()  : " + lcpCloudRegion)
290                             }
291                         }
292                     }
293                 }
294                 logger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
295             } else {
296                 // not found // empty aai response
297                 execution.setVariable(Prefix + "aaiReturnCode", 404)
298                 execution.setVariable(Prefix + "isAAIGood", false)
299                 execution.setVariable(Prefix + "isSilentSuccess", true)
300                 logger.debug(" AAI Query is Silent Success")
301             }
302             logger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
303         } catch (Exception ex) {
304             // caught exception
305             String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
306             logger.debug(exceptionMessage)
307             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
308
309         }
310
311     }
312
313     public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
314
315         execution.setVariable("prefix", Prefix)
316
317         logger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
318
319         try {
320             String networkInputs  = execution.getVariable(Prefix + "networkInputs")
321             // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
322             String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
323             // Prepare AA&I url
324             AaiUtil aaiUtil = new AaiUtil(this)
325
326             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion))
327             def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
328
329             execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
330
331             String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
332             String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
333
334             if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
335                 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
336                 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
337
338             } else {
339                 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
340                 logger.debug(dataErrorMessage)
341                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
342
343             }
344
345         } catch (BpmnError e) {
346             throw e;
347
348         } catch (Exception ex) {
349             // caught exception
350             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
351             logger.debug(exceptionMessage)
352             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
353
354         }
355
356     }
357
358     public void prepareNetworkRequest (DelegateExecution execution) {
359
360         execution.setVariable("prefix", Prefix)
361
362         logger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
363         ExceptionUtil exceptionUtil = new ExceptionUtil()
364         try {
365             // get variables
366             String networkRequest = execution.getVariable(Prefix + "networkRequest")
367             String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
368             String tenantId = execution.getVariable(Prefix + "tenantId")
369
370             L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
371             String networkType = l3Network.getNetworkType()
372             String networkId = l3Network.getNetworkId()
373
374             String networkStackId = ""
375             networkStackId = l3Network.getHeatStackId()
376             if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
377                 networkStackId = "force_delete"
378             }
379
380             String requestId = execution.getVariable("msoRequestId")
381             if (requestId != null) {
382                 execution.setVariable("mso-request-id", requestId)
383             } else {
384                 requestId = execution.getVariable("mso-request-id")
385             }
386             String serviceInstanceId = execution.getVariable("serviceInstanceId")
387
388             // Added new Elements
389             String messageId = execution.getVariable(Prefix + "messageId")
390             String notificationUrl = ""                                   //TODO - is this coming from URN? What variable/value to use?
391             //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
392
393             String modelCustomizationUuid = ""
394             if (utils.nodeExists(networkRequest, "networkModelInfo")) {
395                 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
396                 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
397             } else {
398                 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
399             }
400
401             String deleteNetworkRequest = """
402                                           <deleteNetworkRequest>
403                                             <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
404                                             <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
405                                             <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
406                                                 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
407                                             <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
408                                                 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
409                                                 <skipAAI>true</skipAAI>
410                                             <msoRequest>
411                                                <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
412                                                <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
413                                             </msoRequest>
414                                                 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
415                                                 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
416                                           </deleteNetworkRequest>
417                                                 """.trim()
418
419             logger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  deleteNetworkRequest)
420             // Format Response
421             String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
422             logger.debug(buildDeleteNetworkRequestAsString)
423             logger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" +  buildDeleteNetworkRequestAsString)
424
425             String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
426             execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
427             logger.debug("mso.adapters.network.rest.endpoint - " + "\n" +  restURL + "/" + networkId)
428
429             execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
430             logger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  buildDeleteNetworkRequestAsString)
431         }
432         catch (Exception ex) {
433             // caught exception
434             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
435             logger.debug(exceptionMessage)
436             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
437
438         }
439     }
440
441     /**
442      * This method is used instead of an HTTP Connector task because the
443      * connector does not allow DELETE with a body.
444      */
445     public void sendRequestToVnfAdapter(DelegateExecution execution) {
446         def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
447                 'execution=' + execution.getId() +
448                 ')'
449
450         logger.trace('Entered ' + method)
451
452         try {
453
454             String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
455             String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
456
457             URL url = new URL(vnfAdapterUrl)
458             HttpClient httpClient = new HttpClientFactory().newXmlClient(url, ONAPComponents.OPENSTACK_ADAPTER)
459             httpClient.accept = "application/xml"
460             httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
461             Response response = httpClient.delete(vnfAdapterRequest)
462
463             execution.setVariable(Prefix + "deleteNetworkResponse", response.readEntity(String.class))
464             execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
465
466         } catch (Exception ex) {
467             // caught exception
468             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
469             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
470                     "BPMN", ErrorCode.UnknownError.getValue(),
471                     "Exception is:\n" + ex);
472             logger.debug(exceptionMessage)
473             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
474
475         }
476     }
477
478
479     public void prepareSDNCRequest (DelegateExecution execution) {
480
481         execution.setVariable("prefix", Prefix)
482
483         logger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
484
485         try {
486             // get variables
487             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
488             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
489
490             String networkId = ""
491             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
492                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
493             }
494             if (networkId == 'null') {networkId = ""}
495
496             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
497
498             // get/set 'msoRequestId' and 'mso-request-id'
499             String requestId = execution.getVariable("msoRequestId")
500             if (requestId != null) {
501                 execution.setVariable("mso-request-id", requestId)
502             } else {
503                 requestId = execution.getVariable("mso-request-id")
504             }
505             execution.setVariable(Prefix + "requestId", requestId)
506             logger.debug(Prefix + "requestId " + requestId)
507             L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
508
509             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
510             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
511             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
512             String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
513             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
514             logger.debug(sndcTopologyDeleteRequesAsString)
515             execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
516             logger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
517
518         } catch (Exception ex) {
519             // caught exception
520             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
521             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
522                     "BPMN", ErrorCode.UnknownError.getValue(),
523                     "Exception is:\n" + ex);
524             logger.debug(exceptionMessage)
525             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
526
527         }
528
529     }
530
531     public void prepareRpcSDNCRequest (DelegateExecution execution) {
532
533         execution.setVariable("prefix", Prefix)
534
535         logger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
536
537         try {
538             // get variables
539             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
540             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
541
542             String networkId = ""
543             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
544                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
545             }
546             if (networkId == 'null') {networkId = ""}
547
548             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
549
550             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
551             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
552             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
553             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
554             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
555             logger.debug(sndcTopologyDeleteRequesAsString)
556             execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
557             logger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
558
559         } catch (Exception ex) {
560             // caught exception
561             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
562             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
563                     "BPMN", ErrorCode.UnknownError.getValue(),
564                     "Exception is:\n" + ex);
565             logger.debug(exceptionMessage)
566             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
567
568         }
569
570     }
571
572
573     public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
574
575         execution.setVariable("prefix",Prefix)
576
577         logger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
578
579         try {
580
581             // get variables
582             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
583             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
584             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
585             String networkId = ""
586             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
587                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
588             }
589             if (networkId == 'null') {networkId = ""}
590             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
591
592             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
593             String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
594             execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
595             logger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
596
597
598         } catch (Exception ex) {
599             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
600             logger.debug(exceptionMessage)
601             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
602
603         }
604
605     }
606
607     public void validateSDNCResponse (DelegateExecution execution) {
608
609         execution.setVariable("prefix", Prefix)
610
611         logger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
612
613         String response = execution.getVariable(Prefix + "deleteSDNCResponse")
614         boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
615         WorkflowException workflowException = execution.getVariable("WorkflowException")
616
617         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
618         sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
619         // reset variable
620         String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
621         deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
622         execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
623
624         if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, prefix+'sdncResponseSuccess'
625             execution.setVariable(Prefix + "isSdncRollbackNeeded", true)      //
626             execution.setVariable(Prefix + "isPONR", true)
627             logger.debug("Successfully Validated SDNC Response")
628         } else {
629             logger.debug("Did NOT Successfully Validated SDNC Response")
630             throw new BpmnError("MSOWorkflowException")
631         }
632
633     }
634
635     public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
636
637         execution.setVariable("prefix",Prefix)
638
639         logger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
640
641         String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
642         boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
643         WorkflowException workflowException = execution.getVariable("WorkflowException")
644
645         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
646         sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
647         // reset variable
648         String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
649         assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
650         execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
651
652         if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
653             execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
654             logger.debug("Successfully Validated Rpc SDNC Activate Response")
655
656         } else {
657             logger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
658             throw new BpmnError("MSOWorkflowException")
659         }
660
661     }
662
663     public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
664
665         execution.setVariable("prefix",Prefix)
666
667         logger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
668
669         try {
670
671             // get variables
672             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
673             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
674             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
675             String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
676             String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
677             if (networkId == 'null') {networkId = ""}
678             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
679
680             // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
681             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
682             String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
683             execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
684             logger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
685
686
687         } catch (Exception ex) {
688             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
689             logger.debug(exceptionMessage)
690             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
691
692         }
693
694     }
695
696     public void prepareRollbackData(DelegateExecution execution) {
697
698         execution.setVariable("prefix",Prefix)
699
700         logger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
701
702         try {
703
704             Map<String, String> rollbackData = new HashMap<String, String>();
705             String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
706             if (rollbackNetworkRequest != null) {
707                 if (rollbackNetworkRequest != "") {
708                     rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
709                 }
710             }
711             String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
712             if (rollbackDeactivateSDNCRequest != null) {
713                 if (rollbackDeactivateSDNCRequest != "") {
714                     rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
715                 }
716             }
717             execution.setVariable("rollbackData", rollbackData)
718             logger.debug("** rollbackData : " + rollbackData)
719
720             execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
721             logger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
722
723         } catch (Exception ex) {
724             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
725             logger.debug(exceptionMessage)
726             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
727
728         }
729
730     }
731
732     public void postProcessResponse (DelegateExecution execution) {
733
734         execution.setVariable("prefix", Prefix)
735
736         logger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
737
738         try {
739
740             logger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
741             if (execution.getVariable(Prefix + "isException") == false) {
742                 execution.setVariable(Prefix + "Success", true)
743                 execution.setVariable("WorkflowException", null)
744                 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
745                     execution.setVariable("rolledBack", false)
746                 } else {
747                     execution.setVariable("rolledBack", true)
748                 }
749                 prepareSuccessRollbackData(execution) // populate rollbackData
750
751             } else {
752                 execution.setVariable(Prefix + "Success", false)
753                 execution.setVariable("rollbackData", null)
754                 String exceptionMessage = " Exception encountered in MSO Bpmn. "
755                 if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
756                     logger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
757                     WorkflowException wfex = execution.getVariable("workflowException")
758                     exceptionMessage = wfex.getErrorMessage()
759                 } else {
760                     if (execution.getVariable(Prefix + "WorkflowException") != null) {
761                         WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
762                         exceptionMessage = pwfex.getErrorMessage()
763                     } else {
764                         if (execution.getVariable("WorkflowException") != null) {
765                             WorkflowException pwfex = execution.getVariable("WorkflowException")
766                             exceptionMessage = pwfex.getErrorMessage()
767                         }
768                     }
769                 }
770
771                 // going to the Main flow: a-la-carte or macro
772                 logger.debug(" ***** postProcessResponse(), BAD !!!")
773                 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
774                 throw new BpmnError("MSOWorkflowException")
775
776             }
777
778         } catch(BpmnError b){
779             logger.debug("Rethrowing MSOWorkflowException")
780             throw b
781
782         } catch (Exception ex) {
783             // caught exception
784             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
785             logger.debug(exceptionMessage)
786             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
787             throw new BpmnError("MSOWorkflowException")
788
789         }
790
791     }
792
793     public void prepareSuccessRollbackData(DelegateExecution execution) {
794
795         execution.setVariable("prefix",Prefix)
796
797         logger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
798
799         try {
800
801             if (execution.getVariable("sdncVersion") != '1610') {
802                 prepareRpcSDNCDeactivateRollback(execution)
803                 prepareRpcSDNCUnassignRollback(execution)
804             } else {
805                 prepareSDNCRollback(execution)
806             }
807
808             Map<String, String> rollbackData = new HashMap<String, String>();
809             String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
810             if (rollbackSDNCRequest != null) {
811                 if (rollbackSDNCRequest != "") {
812                     rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
813                 }
814             }
815             String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
816             if (rollbackNetworkRequest != null) {
817                 if (rollbackNetworkRequest != "") {
818                     rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
819                 }
820             }
821             String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
822             if (rollbackDeactivateSDNCRequest != null) {
823                 if (rollbackDeactivateSDNCRequest != "") {
824                     rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
825                 }
826             }
827             execution.setVariable("rollbackData", rollbackData)
828
829             logger.debug("** rollbackData : " + rollbackData)
830             execution.setVariable("WorkflowException", null)
831
832
833         } catch (Exception ex) {
834             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
835             logger.debug(exceptionMessage)
836             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
837
838         }
839
840     }
841
842     public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
843
844         execution.setVariable("prefix",Prefix)
845
846         logger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
847
848         try {
849
850             // get variables
851             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
852             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
853
854             String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
855             String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
856             if (networkId == 'null') {networkId = ""}
857             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
858
859             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
860             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
861             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
862             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
863             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
864             logger.debug(sndcTopologyDeleteRequesAsString)
865             execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
866             logger.debug(Prefix + "rollbackSDNCRequest" + "\n" +  sndcTopologyDeleteRequesAsString)
867             logger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
868
869
870         } catch (Exception ex) {
871             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
872             logger.debug(exceptionMessage)
873             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
874
875         }
876
877     }
878
879     public void prepareSDNCRollback (DelegateExecution execution) {
880
881         execution.setVariable("prefix", Prefix)
882
883         logger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
884
885         try {
886
887             // get variables
888             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
889             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
890
891             String networkId = ""
892             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
893                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
894             }
895             if (networkId == 'null') {networkId = ""}
896
897             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
898
899             // get/set 'msoRequestId' and 'mso-request-id'
900             String requestId = execution.getVariable("msoRequestId")
901             if (requestId != null) {
902                 execution.setVariable("mso-request-id", requestId)
903             } else {
904                 requestId = execution.getVariable("mso-request-id")
905             }
906             execution.setVariable(Prefix + "requestId", requestId)
907
908             L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
909
910             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
911             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
912             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
913             String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
914             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
915             logger.debug(sndcTopologyDeleteRequesAsString)
916             execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
917             logger.debug(Prefix + "rollbackSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
918             logger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
919
920
921         } catch (Exception ex) {
922             // caught exception
923             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
924             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
925                     "BPMN", ErrorCode.UnknownError.getValue(),
926                     "Exception is:\n" + ex);
927             logger.debug(exceptionMessage)
928             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
929
930         }
931
932     }
933
934     public void setExceptionFlag(DelegateExecution execution){
935
936         execution.setVariable("prefix",Prefix)
937
938         logger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
939
940         try {
941
942             execution.setVariable(Prefix + "isException", true)
943
944             if (execution.getVariable("SavedWorkflowException1") != null) {
945                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
946             } else {
947                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
948             }
949             logger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
950
951         } catch(Exception ex){
952             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
953             logger.debug(exceptionMessage)
954             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
955         }
956
957     }
958
959
960     // *******************************
961     //     Build Error Section
962     // *******************************
963
964     public void processJavaException(DelegateExecution execution){
965
966         execution.setVariable("prefix",Prefix)
967         try{
968             logger.debug("Caught a Java Exception")
969             logger.debug("Started processJavaException Method")
970             logger.debug("Variables List: " + execution.getVariables())
971             execution.setVariable("UnexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated
972             exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
973
974         }catch(Exception e){
975             logger.debug("Caught Exception during processJavaException Method: " + e)
976             execution.setVariable("UnexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
977             exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
978         }
979         logger.debug("Completed processJavaException Method of " + Prefix)
980     }
981
982 }