2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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
13 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.so.bpmn.infrastructure.scripts;
24 import static org.apache.commons.lang3.StringUtils.*;
26 import javax.ws.rs.NotFoundException
28 import org.apache.commons.lang3.*
29 import org.camunda.bpm.engine.delegate.BpmnError
30 import org.camunda.bpm.engine.delegate.DelegateExecution
31 import org.onap.aai.domain.yang.ServiceInstance
32 import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
33 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
34 import org.onap.so.bpmn.common.scripts.ExceptionUtil
35 import org.onap.so.bpmn.core.domain.CompareModelsResult
36 import org.onap.so.bpmn.core.domain.ModelInfo
37 import org.onap.so.bpmn.core.domain.Resource
38 import org.onap.so.bpmn.core.domain.ResourceModelInfo
39 import org.onap.so.bpmn.core.json.JsonUtils
40 import org.onap.so.client.aai.AAIObjectType
41 import org.onap.so.client.aai.AAIResourcesClient
42 import org.onap.so.client.aai.entities.AAIResultWrapper
43 import org.onap.so.client.aai.entities.uri.AAIResourceUri
44 import org.onap.so.client.aai.entities.uri.AAIUriFactory
45 import org.slf4j.Logger
46 import org.slf4j.LoggerFactory
51 * This groovy class supports the <class>DoCompareModelofE2EServiceInstance.bpmn</class> process.
54 * @param - msoRequestId
55 * @param - globalSubscriberId
56 * @param - subscriptionServiceType
57 * @param - serviceInstanceId
58 * @param - modelInvariantIdTarget
59 * @param - modelVersionIdTarget
62 * @param - compareModelsResult CompareModelsResult
65 public class DoCompareModelofE2EServiceInstance extends AbstractServiceTaskProcessor {
67 String Prefix="DCMPMDSI_"
68 private static final String DebugFlag = "isDebugEnabled"
69 private static final Logger logger = LoggerFactory.getLogger( DeleteNetworkInstance.class);
71 ExceptionUtil exceptionUtil = new ExceptionUtil()
72 JsonUtils jsonUtil = new JsonUtils()
74 public void preProcessRequest (DelegateExecution execution) {
76 def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'
77 def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
78 logger.info("Entered " + method)
80 logger.info(" ***** Enter DoCompareModelofE2EServiceInstance preProcessRequest *****")
82 execution.setVariable("prefix", Prefix)
85 //subscriberInfo. for AAI GET
86 String globalSubscriberId = execution.getVariable("globalSubscriberId")
87 logger.info(" ***** globalSubscriberId *****" + globalSubscriberId)
89 String serviceType = execution.getVariable("serviceType")
90 logger.info(" ***** serviceType *****" + serviceType)
92 if (isBlank(globalSubscriberId)) {
93 msg = "Input globalSubscriberId is null"
95 exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
98 if (isBlank(serviceType)) {
99 msg = "Input serviceType is null"
101 exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
104 String serviceInstanceId = execution.getVariable("serviceInstanceId")
105 if (isBlank(serviceInstanceId)){
106 msg = "Input serviceInstanceId is null"
108 exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
111 String modelInvariantUuid = execution.getVariable("modelInvariantIdTarget")
112 if (isBlank(modelInvariantUuid)){
113 msg = "Input modelInvariantUuid is null"
115 exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
118 String modelUuid = execution.getVariable("modelVersionIdTarget")
119 if (isBlank(modelUuid)){
120 msg = "Input modelUuid is null"
122 exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
125 // Set Target Template info
126 execution.setVariable("model-invariant-id-target", modelInvariantUuid)
127 execution.setVariable("model-version-id-target", modelUuid)
130 logger.info( "Exited " + method)
134 * Gets the service instance from aai
138 public void getServiceInstance(DelegateExecution execution) {
140 String serviceInstanceId = execution.getVariable('serviceInstanceId')
141 String globalSubscriberId = execution.getVariable('globalSubscriberId')
142 String serviceType = execution.getVariable('serviceType')
144 AAIResourcesClient resourceClient = new AAIResourcesClient()
145 AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId)
146 AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class)
148 Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
149 execution.setVariable("model-invariant-id-original", si.get().getModelInvariantId())
150 execution.setVariable("model-version-id-original", si.get().getModelVersionId())
152 }catch(BpmnError e) {
154 }catch(NotFoundException e) {
155 exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service-instance does not exist AAI")
156 }catch(Exception ex) {
157 String msg = "Internal Error in getServiceInstance: " + ex.getMessage()
158 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
162 public void postCompareModelVersions(DelegateExecution execution) {
163 def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
166 List<Resource> addResourceList = execution.getVariable("addResourceList")
167 List<Resource> delResourceList = execution.getVariable("delResourceList")
169 CompareModelsResult cmpResult = new CompareModelsResult()
170 List<ResourceModelInfo> addedResourceList = new ArrayList<ResourceModelInfo>()
171 List<ResourceModelInfo> deletedResourceList = new ArrayList<ResourceModelInfo>()
174 String serviceModelUuid = execution.getVariable("model-version-id-target")
175 List<String> requestInputs = new ArrayList<String>()
177 for(Resource rc : addResourceList) {
178 mi = rc.getModelInfo()
179 String resourceCustomizationUuid = mi.getModelCustomizationUuid()
180 ResourceModelInfo rmodel = new ResourceModelInfo()
181 rmodel.setResourceName(mi.getModelName())
182 rmodel.setResourceInvariantUuid(mi.getModelInvariantUuid())
183 rmodel.setResourceUuid(mi.getModelUuid())
184 rmodel.setResourceCustomizationUuid(resourceCustomizationUuid)
185 addedResourceList.add(rmodel)
187 Map<String, Object> resourceParameters = ResourceRequestBuilder.buildResouceRequest(serviceModelUuid, resourceCustomizationUuid, null)
188 requestInputs.addAll(resourceParameters.keySet())
191 for(Resource rc : delResourceList) {
192 mi = rc.getModelInfo()
193 String resourceCustomizationUuid = mi.getModelCustomizationUuid()
194 ResourceModelInfo rmodel = new ResourceModelInfo()
195 rmodel.setResourceName(mi.getModelName())
196 rmodel.setResourceInvariantUuid(mi.getModelInvariantUuid())
197 rmodel.setResourceUuid(mi.getModelUuid())
198 rmodel.setResourceCustomizationUuid(resourceCustomizationUuid)
199 deletedResourceList.add(rmodel)
202 cmpResult.setAddedResourceList(addedResourceList)
203 cmpResult.setDeletedResourceList(deletedResourceList)
204 cmpResult.setRequestInputs(requestInputs)
206 execution.setVariable("compareModelsResult", cmpResult)