04fe1612953a68b7b881cc79531208031b37221e
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.scripts
22
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.AAIObjectType
29 import org.onap.aaiclient.client.aai.AAIResourcesClient
30 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
31 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
32 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
33 import org.onap.so.bpmn.common.scripts.ExceptionUtil
34 import org.onap.so.bpmn.common.scripts.RequestDBUtil
35 import org.onap.so.bpmn.core.json.JsonUtils
36 import org.onap.so.db.request.beans.ResourceOperationStatus
37 import org.slf4j.Logger
38 import org.slf4j.LoggerFactory
39
40 public class DoActivateTnNssi extends AbstractServiceTaskProcessor {
41     String Prefix = "TNACT_"
42
43     ExceptionUtil exceptionUtil = new ExceptionUtil()
44     JsonUtils jsonUtil = new JsonUtils()
45     RequestDBUtil requestDBUtil = new RequestDBUtil()
46     TnNssmfUtils tnNssmfUtils = new TnNssmfUtils()
47     JsonSlurper jsonSlurper = new JsonSlurper()
48     ObjectMapper objectMapper = new ObjectMapper()
49     private static final Logger logger = LoggerFactory.getLogger(DoActivateTnNssi.class)
50
51
52     public void preProcessRequest(DelegateExecution execution) {
53         logger.debug("Start preProcessRequest")
54
55         execution.setVariable("startTime", System.currentTimeMillis())
56         String msg = tnNssmfUtils.getExecutionInputParams(execution)
57         logger.debug("Activate TN NSSI input parameters: " + msg)
58
59         execution.setVariable("prefix", Prefix)
60
61         tnNssmfUtils.setSdncCallbackUrl(execution, true)
62         logger.debug("SDNC Callback URL: " + execution.getVariable("sdncCallbackUrl"))
63
64         String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
65         String modelUuid = execution.getVariable("modelUuid")
66         //here modelVersion is not set, we use modelUuid to decompose the service.
67         def isDebugLogEnabled = true
68         execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
69         String serviceModelInfo = """{
70             "modelInvariantUuid":"${modelInvariantUuid}",
71             "modelUuid":"${modelUuid}",
72             "modelVersion":""
73              }"""
74         execution.setVariable("serviceModelInfo", serviceModelInfo)
75
76         String sliceServiceInstanceId = execution.getVariable("serviceInstanceID")
77         execution.setVariable("sliceServiceInstanceId", sliceServiceInstanceId)
78
79         String sliceServiceInstanceName = execution.getVariable("servicename")
80         execution.setVariable("sliceServiceInstanceName", sliceServiceInstanceName)
81
82         String operationType = execution.getVariable("operationType")
83         String actionType = operationType.equals("activateInstance") ? "activate" : "deactivate"
84         execution.setVariable("actionType", actionType)
85
86
87         logger.debug("Finish preProcessRequest")
88     }
89
90     void preprocessSdncActOrDeactTnNssiRequest(DelegateExecution execution) {
91         def method = getClass().getSimpleName() + '.preprocessSdncActivateTnNssiRequest(' +
92                 'execution=' + execution.getId() + ')'
93         def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
94         logger.trace('Entered ' + method)
95
96         try {
97             String serviceInstanceId = execution.getVariable("sliceServiceInstanceId")
98             String actionType = execution.getVariable("actionType")
99
100             String sdncRequest = tnNssmfUtils.buildSDNCRequest(execution, serviceInstanceId, actionType)
101
102             execution.setVariable("TNNSSMF_SDNCRequest", sdncRequest)
103             logger.debug("Outgoing SDNCRequest is: \n" + sdncRequest)
104
105         } catch (Exception e) {
106             logger.debug("Exception Occured Processing preprocessSdncDeallocateTnNssiRequest. Exception is:\n" + e)
107             exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCActivateRequest Method:\n" + e.getMessage())
108         }
109         logger.trace("COMPLETED preprocessSdncActivateTnNssiRequest Process")
110     }
111
112
113     void validateSDNCResponse(DelegateExecution execution, String response) {
114         tnNssmfUtils.validateSDNCResponse(execution, response, method)
115     }
116
117
118     void updateAAIOrchStatus(DelegateExecution execution) {
119         logger.debug("Start updateAAIOrchStatus")
120         String tnNssiId = execution.getVariable("tnNssiId")
121         String orchStatus = execution.getVariable("orchestrationStatus")
122
123         try {
124             ServiceInstance si = new ServiceInstance()
125             si.setOrchestrationStatus(orchStatus)
126             AAIResourcesClient client = getAAIClient()
127             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, tnNssiId)
128             client.update(uri, si)
129         } catch (BpmnError e) {
130             throw e
131         } catch (Exception ex) {
132             String msg = "Exception in CreateSliceService.updateAAIOrchStatus " + ex.getMessage()
133             logger.info(msg)
134             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
135         }
136
137         logger.debug("Finish updateAAIOrchStatus")
138     }
139
140     void prepareUpdateJobStatus(DelegateExecution execution,
141                                 String status,
142                                 String progress,
143                                 String statusDescription) {
144         String serviceId = execution.getVariable("serviceInstanceID")
145         String jobId = execution.getVariable("jobId")
146         String nsiId = execution.getVariable("nsiId")
147         String operType = execution.getVariable("actionType")
148
149
150         ResourceOperationStatus roStatus = new ResourceOperationStatus()
151         roStatus.setServiceId(serviceId)
152         roStatus.setOperationId(jobId)
153         roStatus.setResourceTemplateUUID(nsiId)
154         roStatus.setOperType(operType)
155         roStatus.setProgress(progress)
156         roStatus.setStatus(status)
157         roStatus.setStatusDescription(statusDescription)
158         requestDBUtil.prepareUpdateResourceOperationStatus(execution, status)
159     }
160
161 }
162