2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.scripts
23 import org.camunda.bpm.engine.delegate.BpmnError
24 import org.camunda.bpm.engine.delegate.DelegateExecution
25 import org.onap.aai.domain.yang.L3Network
26 import org.onap.so.bpmn.common.scripts.AaiUtil
27 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
28 import org.onap.so.bpmn.common.scripts.ExceptionUtil
29 import org.onap.so.bpmn.common.scripts.MsoUtils
30 import org.onap.so.bpmn.common.scripts.NetworkUtils
31 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
32 import org.onap.so.bpmn.common.scripts.VidUtils
33 import org.onap.so.bpmn.core.UrnPropertiesReader
34 import org.onap.so.bpmn.core.WorkflowException
35 import org.onap.so.bpmn.core.json.JsonUtils
36 import org.onap.so.client.HttpClient
37 import org.onap.so.client.HttpClientFactory
38 import org.onap.so.client.aai.AAIObjectType
39 import org.onap.so.client.aai.entities.AAIResultWrapper
40 import org.onap.so.client.aai.entities.Relationships
41 import org.onap.so.client.aai.entities.uri.AAIResourceUri
42 import org.onap.so.client.aai.entities.uri.AAIUriFactory
43 import org.onap.so.client.graphinventory.entities.uri.Depth
44 import org.onap.so.constants.Defaults
45 import org.onap.so.logger.MessageEnum
46 import org.onap.so.logger.MsoLogger
48 import org.springframework.web.util.UriUtils
49 import org.onap.so.utils.TargetEntity
51 import groovy.json.JsonOutput
52 import javax.ws.rs.core.Response
54 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
55 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstance.class);
57 String Prefix= "DELNWKI_"
58 String groovyClassName = "DoDeleteNetworkInstance"
59 ExceptionUtil exceptionUtil = new ExceptionUtil()
60 JsonUtils jsonUtil = new JsonUtils()
61 VidUtils vidUtils = new VidUtils(this)
62 NetworkUtils networkUtils = new NetworkUtils()
63 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
65 public InitializeProcessVariables(DelegateExecution execution){
66 /* Initialize all the process variables in this block */
68 execution.setVariable(Prefix + "networkRequest", "")
69 execution.setVariable(Prefix + "isSilentSuccess", false)
70 execution.setVariable(Prefix + "Success", false)
72 execution.setVariable(Prefix + "requestId", "")
73 execution.setVariable(Prefix + "source", "")
74 execution.setVariable(Prefix + "lcpCloudRegion", "")
75 execution.setVariable(Prefix + "networkInputs", "")
76 execution.setVariable(Prefix + "tenantId", "")
78 execution.setVariable(Prefix + "queryAAIResponse", "")
79 execution.setVariable(Prefix + "aaiReturnCode", "")
80 execution.setVariable(Prefix + "isAAIGood", false)
81 execution.setVariable(Prefix + "isVfRelationshipExist", false)
83 // AAI query Cloud Region
84 execution.setVariable(Prefix + "queryCloudRegionRequest","")
85 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
86 execution.setVariable(Prefix + "queryCloudRegionResponse","")
87 execution.setVariable(Prefix + "cloudRegionPo","")
88 execution.setVariable(Prefix + "cloudRegionSdnc","")
90 execution.setVariable(Prefix + "deleteNetworkRequest", "")
91 execution.setVariable(Prefix + "deleteNetworkResponse", "")
92 execution.setVariable(Prefix + "networkReturnCode", "")
93 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
95 execution.setVariable(Prefix + "deleteSDNCRequest", "")
96 execution.setVariable(Prefix + "deleteSDNCResponse", "")
97 execution.setVariable(Prefix + "sdncReturnCode", "")
98 execution.setVariable(Prefix + "sdncResponseSuccess", false)
100 execution.setVariable(Prefix + "deactivateSDNCRequest", "")
101 execution.setVariable(Prefix + "deactivateSDNCResponse", "")
102 execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
103 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
105 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
106 execution.setVariable(Prefix + "isException", false)
111 // **************************************************
112 // Pre or Prepare Request Section
113 // **************************************************
115 public void preProcessRequest (DelegateExecution execution) {
117 execution.setVariable("prefix",Prefix)
119 msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
121 // initialize flow variables
122 InitializeProcessVariables(execution)
125 // get incoming message/input
126 execution.setVariable("action", "DELETE")
127 String deleteNetwork = execution.getVariable("bpmnRequest")
128 if (deleteNetwork != null) {
129 if (deleteNetwork.contains("requestDetails")) {
130 // JSON format request is sent, create xml
132 def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
133 msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
134 deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
136 } catch (Exception ex) {
137 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
138 msoLogger.debug(dataErrorMessage)
139 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
142 // XML format request is sent
146 // vIPR format request is sent, create xml from individual variables
147 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
150 deleteNetwork = utils.formatXml(deleteNetwork)
151 msoLogger.debug(deleteNetwork)
152 execution.setVariable(Prefix + "networkRequest", deleteNetwork)
153 msoLogger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
155 // validate 'backout-on-failure' to override 'mso.rollback'
156 boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
157 execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
158 msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
160 String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
161 execution.setVariable(Prefix + "networkInputs", networkInputs)
164 String messageId = execution.getVariable("testMessageId") // for testing
165 if (messageId == null || messageId == "") {
166 messageId = UUID.randomUUID()
167 msoLogger.debug(Prefix + "messageId, random generated: " + messageId)
169 msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId)
171 execution.setVariable(Prefix + "messageId", messageId)
173 String source = utils.getNodeText(deleteNetwork, "source")
174 execution.setVariable(Prefix + "source", source)
175 msoLogger.debug(Prefix + "source - " + source)
177 String networkId = ""
178 if (utils.nodeExists(networkInputs, "network-id")) {
179 networkId = utils.getNodeText(networkInputs, "network-id")
180 if (networkId == null || networkId == "" || networkId == 'null' ) {
181 sendSyncError(execution)
182 // missing value of network-id
183 String dataErrorMessage = "network-request has missing 'network-id' element/value."
184 msoLogger.debug(" Invalid Request - " + dataErrorMessage)
185 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
189 // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
190 def lcpCloudRegion = null
191 if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
192 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
193 if (lcpCloudRegion == 'null') {
194 lcpCloudRegion = null
197 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
198 msoLogger.debug("lcpCloudRegion : " + lcpCloudRegion)
200 String tenantId = null
201 if (utils.nodeExists(networkInputs, "tenant-id")) {
202 tenantId = utils.getNodeText(networkInputs, "tenant-id")
203 if (tenantId == 'null') {
208 execution.setVariable(Prefix + "tenantId", tenantId)
209 msoLogger.debug("tenantId : " + tenantId)
211 String sdncVersion = execution.getVariable("sdncVersion")
212 msoLogger.debug("sdncVersion? : " + sdncVersion)
214 // PO Authorization Info / headers Authorization=
215 String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
218 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
219 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
220 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
222 } catch (IOException ex) {
223 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
224 msoLogger.debug(dataErrorMessage )
225 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
228 } catch (BpmnError e) {
231 } catch (Exception ex){
233 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
234 msoLogger.debug(exceptionMessage)
235 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
242 public void callRESTQueryAAI (DelegateExecution execution) {
244 execution.setVariable("prefix",Prefix)
246 msoLogger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
249 String networkInputs = execution.getVariable(Prefix + "networkInputs")
250 String networkId = utils.getNodeText(networkInputs, "network-id")
251 networkId = UriUtils.encode(networkId,"UTF-8")
252 ExceptionUtil exceptionUtil = new ExceptionUtil()
253 Boolean isVfRelationshipExist = false
255 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
256 Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
257 AAIResultWrapper wrapper = getAAIClient().get(uri);
258 Optional<Relationships> relationships = wrapper.getRelationships()
260 if (l3Network.isPresent()) {
261 execution.setVariable(Prefix + "aaiReturnCode", 200)
262 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
263 execution.setVariable(Prefix + "isAAIGood", true)
264 if (relationships.isPresent()){
265 if(relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
266 execution.setVariable(Prefix + "isVfRelationshipExist", true)
267 isVfRelationshipExist = true
268 String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
269 exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
271 List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
272 for(AAIResourceUri tenantURI: tenantURIList){
273 if(execution.getVariable(Prefix + "tenantId") == null) {
274 String tenantId = tenantURI.getURIKeys().get("tenant-id")
275 execution.setVariable(Prefix + "tenantId", tenantId)
276 msoLogger.debug(" Get AAI getTenantId() : " + tenantId)
279 List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
280 for(AAIResourceUri tenantURI: cloudRegionURIList){
281 if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
282 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
283 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
284 msoLogger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion)
289 msoLogger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
291 // not found // empty aai response
292 execution.setVariable(Prefix + "aaiReturnCode", 404)
293 execution.setVariable(Prefix + "isAAIGood", false)
294 execution.setVariable(Prefix + "isSilentSuccess", true)
295 msoLogger.debug(" AAI Query is Silent Success")
297 msoLogger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
298 } catch (Exception ex) {
300 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
301 msoLogger.debug(exceptionMessage)
302 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
308 public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
310 execution.setVariable("prefix", Prefix)
312 msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
315 String networkInputs = execution.getVariable(Prefix + "networkInputs")
316 // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
317 String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
319 AaiUtil aaiUtil = new AaiUtil(this)
321 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
322 def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
324 execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
326 String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
327 String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion)
329 if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
330 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
331 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
334 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
335 msoLogger.debug(dataErrorMessage)
336 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
340 } catch (BpmnError e) {
343 } catch (Exception ex) {
345 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
346 msoLogger.debug(exceptionMessage)
347 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
353 public void prepareNetworkRequest (DelegateExecution execution) {
355 execution.setVariable("prefix", Prefix)
357 msoLogger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
358 ExceptionUtil exceptionUtil = new ExceptionUtil()
361 String networkRequest = execution.getVariable(Prefix + "networkRequest")
362 String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
363 String tenantId = execution.getVariable(Prefix + "tenantId")
365 L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
366 String networkType = l3Network.getNetworkType()
367 String networkId = l3Network.getNetworkId()
369 String networkStackId = ""
370 networkStackId = l3Network.getHeatStackId()
371 if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
372 networkStackId = "force_delete"
375 String requestId = execution.getVariable("msoRequestId")
376 if (requestId != null) {
377 execution.setVariable("mso-request-id", requestId)
379 requestId = execution.getVariable("mso-request-id")
381 String serviceInstanceId = execution.getVariable("serviceInstanceId")
383 // Added new Elements
384 String messageId = execution.getVariable(Prefix + "messageId")
385 String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
386 //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
388 String modelCustomizationUuid = ""
389 if (utils.nodeExists(networkRequest, "networkModelInfo")) {
390 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
391 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
393 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
396 String deleteNetworkRequest = """
397 <deleteNetworkRequest>
398 <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
399 <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
400 <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
401 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
402 <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
403 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
404 <skipAAI>true</skipAAI>
406 <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
407 <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
409 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
410 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
411 </deleteNetworkRequest>
414 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest)
416 String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
417 msoLogger.debug(buildDeleteNetworkRequestAsString)
418 msoLogger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString)
420 String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
421 execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
422 msoLogger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId)
424 execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
425 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString)
427 catch (Exception ex) {
429 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
430 msoLogger.debug(exceptionMessage)
431 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
437 * This method is used instead of an HTTP Connector task because the
438 * connector does not allow DELETE with a body.
440 public void sendRequestToVnfAdapter(DelegateExecution execution) {
441 def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
442 'execution=' + execution.getId() +
445 msoLogger.trace('Entered ' + method)
449 String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
450 String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
452 URL url = new URL(vnfAdapterUrl)
453 HttpClient httpClient = new HttpClientFactory().newXmlClient(url, TargetEntity.OPENSTACK_ADAPTER)
454 httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
455 Response response = httpClient.delete(vnfAdapterRequest)
458 execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
460 } catch (Exception ex) {
462 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
463 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
464 msoLogger.debug(exceptionMessage)
465 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
471 public void prepareSDNCRequest (DelegateExecution execution) {
473 execution.setVariable("prefix", Prefix)
475 msoLogger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
479 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
480 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
482 String networkId = ""
483 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
484 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
486 if (networkId == 'null') {networkId = ""}
488 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
490 // get/set 'msoRequestId' and 'mso-request-id'
491 String requestId = execution.getVariable("msoRequestId")
492 if (requestId != null) {
493 execution.setVariable("mso-request-id", requestId)
495 requestId = execution.getVariable("mso-request-id")
497 execution.setVariable(Prefix + "requestId", requestId)
498 msoLogger.debug(Prefix + "requestId " + requestId)
499 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
501 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
502 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
503 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
504 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
505 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
506 msoLogger.debug(sndcTopologyDeleteRequesAsString)
507 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
508 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
510 } catch (Exception ex) {
512 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
513 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
514 msoLogger.debug(exceptionMessage)
515 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
521 public void prepareRpcSDNCRequest (DelegateExecution execution) {
523 execution.setVariable("prefix", Prefix)
525 msoLogger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
529 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
530 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
532 String networkId = ""
533 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
534 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
536 if (networkId == 'null') {networkId = ""}
538 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
540 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
541 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
542 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
543 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
544 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
545 msoLogger.debug(sndcTopologyDeleteRequesAsString)
546 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
547 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
549 } catch (Exception ex) {
551 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
552 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
553 msoLogger.debug(exceptionMessage)
554 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
561 public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
563 execution.setVariable("prefix",Prefix)
565 msoLogger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
570 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
571 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
572 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
573 String networkId = ""
574 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
575 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
577 if (networkId == 'null') {networkId = ""}
578 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
580 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
581 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
582 execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
583 msoLogger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
586 } catch (Exception ex) {
587 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
588 msoLogger.debug(exceptionMessage)
589 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
595 // **************************************************
596 // Post or Validate Response Section
597 // **************************************************
599 public void validateNetworkResponse (DelegateExecution execution) {
601 execution.setVariable("prefix", Prefix)
603 msoLogger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
606 String returnCode = execution.getVariable(Prefix + "networkReturnCode")
607 String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
609 msoLogger.debug(" Network Adapter responseCode: " + returnCode)
610 msoLogger.debug("Network Adapter Response - " + "\n" + networkResponse)
611 msoLogger.debug(networkResponse)
613 String errorMessage = ""
614 if (returnCode == "200") {
615 msoLogger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
617 // prepare rollback data
618 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
619 if ((rollbackData == null) || (rollbackData.isEmpty())) {
620 msoLogger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
621 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
623 String rollbackNetwork =
624 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
626 </NetworkAdapter:rollbackNetwork>"""
627 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
628 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
629 msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
633 } else { // network error
634 if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx
635 if (networkResponse.contains("deleteNetworkError") ) {
636 networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
637 errorMessage = utils.getNodeText(networkResponse, "message")
638 errorMessage = "Received error from Network Adapter: " + errorMessage
639 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
641 } else { // CatchAll exception
642 if (returnCode == "500") {
643 errorMessage = "JBWEB000065: HTTP Status 500."
645 errorMessage = "Return code is " + returnCode
647 errorMessage = "Received error from Network Adapter: " + errorMessage
648 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
652 } else { // CatchAll exception
653 String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode
654 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
660 } catch (BpmnError e) {
663 } catch (Exception ex) {
665 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
666 msoLogger.debug(exceptionMessage)
667 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
673 public void validateSDNCResponse (DelegateExecution execution) {
675 execution.setVariable("prefix", Prefix)
677 msoLogger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
679 String response = execution.getVariable(Prefix + "deleteSDNCResponse")
680 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
681 WorkflowException workflowException = execution.getVariable("WorkflowException")
683 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
684 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
686 String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
687 deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
688 execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
690 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess'
691 execution.setVariable(Prefix + "isSdncRollbackNeeded", true) //
692 execution.setVariable(Prefix + "isPONR", true)
693 msoLogger.debug("Successfully Validated SDNC Response")
695 msoLogger.debug("Did NOT Successfully Validated SDNC Response")
696 throw new BpmnError("MSOWorkflowException")
701 public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
703 execution.setVariable("prefix",Prefix)
705 msoLogger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
707 String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
708 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
709 WorkflowException workflowException = execution.getVariable("WorkflowException")
711 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
712 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
714 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
715 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
716 execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
718 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess'
719 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
720 msoLogger.debug("Successfully Validated Rpc SDNC Activate Response")
723 msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
724 throw new BpmnError("MSOWorkflowException")
729 public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
731 execution.setVariable("prefix",Prefix)
733 msoLogger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
738 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
739 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
740 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
741 String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
742 String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
743 if (networkId == 'null') {networkId = ""}
744 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
746 // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
747 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
748 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
749 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
750 msoLogger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
753 } catch (Exception ex) {
754 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
755 msoLogger.debug(exceptionMessage)
756 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
762 public void prepareRollbackData(DelegateExecution execution) {
764 execution.setVariable("prefix",Prefix)
766 msoLogger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
770 Map<String, String> rollbackData = new HashMap<String, String>();
771 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
772 if (rollbackNetworkRequest != null) {
773 if (rollbackNetworkRequest != "") {
774 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
777 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
778 if (rollbackDeactivateSDNCRequest != null) {
779 if (rollbackDeactivateSDNCRequest != "") {
780 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
783 execution.setVariable("rollbackData", rollbackData)
784 msoLogger.debug("** rollbackData : " + rollbackData)
786 execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
787 msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
789 } catch (Exception ex) {
790 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
791 msoLogger.debug(exceptionMessage)
792 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
798 public void postProcessResponse (DelegateExecution execution) {
800 execution.setVariable("prefix", Prefix)
802 msoLogger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
806 msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
807 if (execution.getVariable(Prefix + "isException") == false) {
808 execution.setVariable(Prefix + "Success", true)
809 execution.setVariable("WorkflowException", null)
810 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
811 execution.setVariable("rolledBack", false)
813 execution.setVariable("rolledBack", true)
815 prepareSuccessRollbackData(execution) // populate rollbackData
818 execution.setVariable(Prefix + "Success", false)
819 execution.setVariable("rollbackData", null)
820 String exceptionMessage = " Exception encountered in MSO Bpmn. "
821 if (execution.getVariable("workflowException") != null) { // Output of Rollback flow.
822 msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
823 WorkflowException wfex = execution.getVariable("workflowException")
824 exceptionMessage = wfex.getErrorMessage()
826 if (execution.getVariable(Prefix + "WorkflowException") != null) {
827 WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
828 exceptionMessage = pwfex.getErrorMessage()
830 if (execution.getVariable("WorkflowException") != null) {
831 WorkflowException pwfex = execution.getVariable("WorkflowException")
832 exceptionMessage = pwfex.getErrorMessage()
837 // going to the Main flow: a-la-carte or macro
838 msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
839 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
840 throw new BpmnError("MSOWorkflowException")
844 } catch(BpmnError b){
845 msoLogger.debug("Rethrowing MSOWorkflowException")
848 } catch (Exception ex) {
850 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
851 msoLogger.debug(exceptionMessage)
852 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
853 throw new BpmnError("MSOWorkflowException")
859 public void prepareSuccessRollbackData(DelegateExecution execution) {
861 execution.setVariable("prefix",Prefix)
863 msoLogger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
867 if (execution.getVariable("sdncVersion") != '1610') {
868 prepareRpcSDNCDeactivateRollback(execution)
869 prepareRpcSDNCUnassignRollback(execution)
871 prepareSDNCRollback(execution)
874 Map<String, String> rollbackData = new HashMap<String, String>();
875 String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
876 if (rollbackSDNCRequest != null) {
877 if (rollbackSDNCRequest != "") {
878 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
881 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
882 if (rollbackNetworkRequest != null) {
883 if (rollbackNetworkRequest != "") {
884 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
887 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
888 if (rollbackDeactivateSDNCRequest != null) {
889 if (rollbackDeactivateSDNCRequest != "") {
890 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
893 execution.setVariable("rollbackData", rollbackData)
895 msoLogger.debug("** rollbackData : " + rollbackData)
896 execution.setVariable("WorkflowException", null)
899 } catch (Exception ex) {
900 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
901 msoLogger.debug(exceptionMessage)
902 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
908 public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
910 execution.setVariable("prefix",Prefix)
912 msoLogger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
917 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
918 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
920 String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
921 String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
922 if (networkId == 'null') {networkId = ""}
923 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
925 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
926 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
927 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
928 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
929 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
930 msoLogger.debug(sndcTopologyDeleteRequesAsString)
931 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
932 msoLogger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString)
933 msoLogger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
936 } catch (Exception ex) {
937 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
938 msoLogger.debug(exceptionMessage)
939 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
945 public void prepareSDNCRollback (DelegateExecution execution) {
947 execution.setVariable("prefix", Prefix)
949 msoLogger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
954 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
955 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
957 String networkId = ""
958 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
959 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
961 if (networkId == 'null') {networkId = ""}
963 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
965 // get/set 'msoRequestId' and 'mso-request-id'
966 String requestId = execution.getVariable("msoRequestId")
967 if (requestId != null) {
968 execution.setVariable("mso-request-id", requestId)
970 requestId = execution.getVariable("mso-request-id")
972 execution.setVariable(Prefix + "requestId", requestId)
974 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
976 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
977 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
978 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
979 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
980 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
981 msoLogger.debug(sndcTopologyDeleteRequesAsString)
982 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
983 msoLogger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
984 msoLogger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
987 } catch (Exception ex) {
989 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
990 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
991 msoLogger.debug(exceptionMessage)
992 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
998 public void setExceptionFlag(DelegateExecution execution){
1000 execution.setVariable("prefix",Prefix)
1002 msoLogger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
1006 execution.setVariable(Prefix + "isException", true)
1008 if (execution.getVariable("SavedWorkflowException1") != null) {
1009 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
1011 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
1013 msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
1015 } catch(Exception ex){
1016 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
1017 msoLogger.debug(exceptionMessage)
1018 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
1024 // *******************************
1025 // Build Error Section
1026 // *******************************
1028 public void processJavaException(DelegateExecution execution){
1030 execution.setVariable("prefix",Prefix)
1032 msoLogger.debug("Caught a Java Exception")
1033 msoLogger.debug("Started processJavaException Method")
1034 msoLogger.debug("Variables List: " + execution.getVariables())
1035 execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated
1036 exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
1038 }catch(Exception e){
1039 msoLogger.debug("Caught Exception during processJavaException Method: " + e)
1040 execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated
1041 exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
1043 msoLogger.debug("Completed processJavaException Method of " + Prefix)