2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2020 Huawei Technologies Co., Ltd. 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 com.fasterxml.jackson.databind.ObjectMapper
24 import groovy.json.JsonSlurper
25 import org.camunda.bpm.engine.delegate.BpmnError
26 import org.camunda.bpm.engine.delegate.DelegateExecution
27 import org.onap.aai.domain.yang.ServiceInstance
28 import org.onap.aaiclient.client.aai.AAIResourcesClient
29 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
30 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
31 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
32 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
33 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
34 import org.onap.so.bpmn.common.scripts.ExceptionUtil
35 import org.onap.so.bpmn.common.scripts.RequestDBUtil
36 import org.onap.so.bpmn.core.json.JsonUtils
37 import org.onap.so.db.request.beans.ResourceOperationStatus
38 import org.slf4j.Logger
39 import org.slf4j.LoggerFactory
41 class DoDeallocateTnNssi extends AbstractServiceTaskProcessor {
42 String Prefix = "TNDEALLOC_"
44 ExceptionUtil exceptionUtil = new ExceptionUtil()
45 JsonUtils jsonUtil = new JsonUtils()
46 RequestDBUtil requestDBUtil = new RequestDBUtil()
47 TnNssmfUtils tnNssmfUtils = new TnNssmfUtils()
48 JsonSlurper jsonSlurper = new JsonSlurper()
49 ObjectMapper objectMapper = new ObjectMapper()
50 private static final Logger logger = LoggerFactory.getLogger(DoDeallocateTnNssi.class)
53 void preProcessRequest(DelegateExecution execution) {
54 logger.debug("Start preProcessRequest")
56 execution.setVariable("startTime", System.currentTimeMillis())
57 String msg = tnNssmfUtils.getExecutionInputParams(execution)
58 logger.debug("Deallocate TN NSSI input parameters: " + msg)
60 execution.setVariable("prefix", Prefix)
62 tnNssmfUtils.setSdncCallbackUrl(execution, true)
63 logger.debug("SDNC Callback URL: " + execution.getVariable("sdncCallbackUrl"))
65 String sliceServiceInstanceId = execution.getVariable("serviceInstanceID")
66 execution.setVariable("sliceServiceInstanceId", sliceServiceInstanceId)
68 String sliceServiceInstanceName = execution.getVariable("servicename")
69 execution.setVariable("sliceServiceInstanceName", sliceServiceInstanceName)
72 String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
73 String modelUuid = execution.getVariable("modelUuid")
74 //here modelVersion is not set, we use modelUuid to decompose the service.
75 def isDebugLogEnabled = true
76 execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
77 String serviceModelInfo = """{
78 "modelInvariantUuid":"${modelInvariantUuid}",
79 "modelUuid":"${modelUuid}",
82 execution.setVariable("serviceModelInfo", serviceModelInfo)
83 logger.debug("Finish preProcessRequest")
86 void preprocessSdncDeallocateTnNssiRequest(DelegateExecution execution) {
87 def method = getClass().getSimpleName() + '.preprocessSdncDeallocateTnNssiRequest(' +
88 'execution=' + execution.getId() + ')'
89 def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
90 logger.trace('Entered ' + method)
93 String serviceInstanceId = execution.getVariable("serviceInstanceID")
95 String sdncRequest = tnNssmfUtils.buildSDNCRequest(execution, serviceInstanceId, "delete")
97 execution.setVariable("TNNSSMF_SDNCRequest", sdncRequest)
98 logger.debug("Outgoing SDNCRequest is: \n" + sdncRequest)
100 } catch (Exception e) {
101 logger.debug("Exception Occured Processing preprocessSdncDeallocateTnNssiRequest. Exception is:\n" + e)
102 exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCActivateRequest Method:\n" + e.getMessage())
104 logger.trace("COMPLETED preprocessSdncDeallocateTnNssiRequest Process")
108 void validateSDNCResponse(DelegateExecution execution, String response, String method) {
109 tnNssmfUtils.validateSDNCResponse(execution, response, method)
112 void deleteServiceInstance(DelegateExecution execution) {
114 AAIResourcesClient client = getAAIClient()
115 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("serviceInstanceID")))
117 } catch (BpmnError e) {
119 } catch (Exception ex) {
120 String msg = "Exception in DoDeallocateTnNssi.deleteServiceInstance. " + ex.getMessage()
122 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
126 public void updateAAIOrchStatus(DelegateExecution execution) {
127 logger.debug("Start updateAAIOrchStatus")
128 String tnNssiId = execution.getVariable("sliceServiceInstanceId")
129 String orchStatus = execution.getVariable("orchestrationStatus")
132 ServiceInstance si = new ServiceInstance()
133 si.setOrchestrationStatus(orchStatus)
134 AAIResourcesClient client = getAAIClient()
135 AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(tnNssiId))
136 client.update(uri, si)
137 } catch (BpmnError e) {
139 } catch (Exception ex) {
140 String msg = "Exception in CreateSliceService.updateAAIOrchStatus " + ex.getMessage()
142 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
145 logger.debug("Finish updateAAIOrchStatus")
148 void prepareUpdateJobStatus(DelegateExecution execution,
151 String statusDescription) {
152 String ssInstanceId = execution.getVariable("sliceServiceInstanceId")
153 String modelUuid = execution.getVariable("modelUuid")
154 String jobId = execution.getVariable("jobId")
155 String nsiId = execution.getVariable("nsiId")
157 ResourceOperationStatus roStatus = tnNssmfUtils.buildRoStatus(modelUuid, ssInstanceId,
158 jobId, nsiId, "deallocate", status, progress, statusDescription)
160 logger.debug("DoDeallocateTnNssi: roStatus={}", roStatus)
161 requestDBUtil.prepareUpdateResourceOperationStatus(execution, roStatus)