-/*-\r
- * ============LICENSE_START=======================================================\r
- * OPENECOMP - MSO\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-package org.openecomp.mso.bpmn.infrastructure.scripts\r
-\r
-import java.util.UUID;\r
-\r
-import org.json.JSONObject;\r
-import org.json.JSONArray;\r
-\r
-import org.camunda.bpm.engine.delegate.BpmnError\r
-import org.camunda.bpm.engine.runtime.Execution;\r
-\r
-import static org.apache.commons.lang3.StringUtils.*;\r
-\r
-import org.openecomp.mso.bpmn.core.json.JsonUtils\r
-import org.openecomp.mso.rest.APIResponse\r
-import org.openecomp.mso.rest.RESTClient\r
-import org.openecomp.mso.rest.RESTConfig\r
-import org.openecomp.mso.bpmn.common.scripts.AaiUtil\r
-import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor\r
-import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils\r
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil\r
-import org.openecomp.mso.bpmn.common.scripts.VidUtils\r
-import org.openecomp.mso.bpmn.core.RollbackData\r
-import org.openecomp.mso.bpmn.core.WorkflowException\r
-\r
-/**\r
- * This class supports the macro VID Flow\r
- * with the deletion of a generic vnf and related VF modules.\r
- */\r
-class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor {\r
-\r
- String Prefix="DDVAM_"\r
- ExceptionUtil exceptionUtil = new ExceptionUtil()\r
- JsonUtils jsonUtil = new JsonUtils()\r
- VidUtils vidUtils = new VidUtils(this) \r
-\r
- /**\r
- * This method gets and validates the incoming\r
- * request.\r
- *\r
- * @param - execution\r
- * \r
- */\r
- public void preProcessRequest(Execution execution) {\r
- def isDebugEnabled = execution.getVariable("isDebugLogEnabled")\r
- execution.setVariable("prefix",Prefix)\r
- utils.log("DEBUG", " *** STARTED DoDeleteVnfAndModules PreProcessRequest Process*** ", isDebugEnabled)\r
-\r
- try{\r
- // Get Variables \r
- \r
- String cloudConfiguration = execution.getVariable("cloudConfiguration") \r
- \r
- String requestId = execution.getVariable("requestId")\r
- execution.setVariable("mso-request-id", requestId)\r
- utils.log("DEBUG", "Incoming Request Id is: " + requestId, isDebugEnabled)\r
-\r
- String serviceInstanceId = execution.getVariable("serviceInstanceId") \r
- utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled)\r
-\r
- String vnfId = execution.getVariable("vnfId") \r
- utils.log("DEBUG", "Incoming Vnf Id is: " + vnfId, isDebugEnabled) \r
- \r
- String source = "VID"\r
- execution.setVariable("source", source)\r
- utils.log("DEBUG", "Incoming Source is: " + source, isDebugEnabled)\r
- \r
- execution.setVariable("DDVAM_moduleCount", 0)\r
- execution.setVariable("DDVAM_nextModule", 0)\r
- \r
- \r
- }catch(BpmnError b){\r
- utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)\r
- throw b\r
- }catch(Exception e){\r
- utils.log("DEBUG", " Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage(), isDebugEnabled)\r
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest")\r
-\r
- }\r
- utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules PreProcessRequest Process ***", isDebugEnabled)\r
- } \r
-\r
- \r
- \r
- public void preProcessAddOnModule(Execution execution){\r
- def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
- execution.setVariable("prefix", Prefix)\r
- logDebug(" ======== STARTED preProcessAddOnModule ======== ", isDebugLogEnabled)\r
- \r
- try { \r
- JSONArray addOnModules = (JSONArray) execution.getVariable("addOnModules")\r
- int addOnIndex = (int) execution.getVariable("addOnModulesDeployed")\r
- \r
- JSONObject addOnModule = addOnModules[addOnIndex]\r
- \r
- def newVfModuleId = UUID.randomUUID().toString()\r
- execution.setVariable("addOnVfModuleId", newVfModuleId)\r
- \r
- execution.setVariable("instancesOfThisModelDeployed", 0)\r
- \r
- JSONObject addOnVfModuleModelInfoObject = jsonUtil.getJsonValueForKey(addOnModule, "modelInfo")\r
- String addOnVfModuleModelInfo = addOnVfModuleModelInfoObject.toString()\r
- execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo)\r
- String addOnVfModuleLabel = jsonUtil.getJsonValueForKey(addOnModule, "vfModuleLabel")\r
- execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel)\r
- String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantId")\r
- execution.setVariable("addOnPersonaModelId", addOnPersonaModelId)\r
- String addOnInitialCount = jsonUtil.getJsonValueForKey(addOnModule, "initialCount")\r
- execution.setVariable("initialCount", addOnInitialCount)\r
- \r
- \r
- }catch(Exception e){\r
- utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled)\r
- exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage())\r
- }\r
- logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)\r
- }\r
- \r
- /**\r
- * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.\r
- * A 200 response is expected with the VNF info in the response body. Will find out the base module info.\r
- *\r
- * @param execution The flow's execution instance.\r
- */\r
- public void queryAAIVfModule(Execution execution) {\r
- def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")\r
- def method = getClass().getSimpleName() + '.queryAAIVfModule(' +\r
- 'execution=' + execution.getId() +\r
- ')'\r
- logDebug('Entered ' + method, isDebugLogEnabled)\r
-\r
- try {\r
- def vnfId = execution.getVariable('DvnfId')\r
- \r
- AaiUtil aaiUriUtil = new AaiUtil(this)\r
- String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)\r
- logDebug('AAI URI is: ' + aai_uri, isDebugLogEnabled)\r
-\r
- String endPoint = execution.getVariable("URN_aai_endpoint") + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"\r
- utils.logAudit("AAI endPoint: " + endPoint)\r
-\r
- try {\r
- RESTConfig config = new RESTConfig(endPoint);\r
- def responseData = ''\r
- def aaiRequestId = UUID.randomUUID().toString()\r
- RESTClient client = new RESTClient(config).\r
- addHeader('X-TransactionId', aaiRequestId).\r
- addHeader('X-FromAppId', 'MSO').\r
- addHeader('Content-Type', 'application/xml').\r
- addHeader('Accept','application/xml');\r
- logDebug('sending GET to AAI endpoint \'' + endPoint + '\'', isDebugLogEnabled)\r
- APIResponse response = client.httpGet()\r
- utils.logAudit("createVfModule - invoking httpGet() to AAI")\r
-\r
- responseData = response.getResponseBodyAsString()\r
- if (responseData != null) {\r
- logDebug("Received generic VNF data: " + responseData, isDebugLogEnabled)\r
-\r
- }\r
-\r
- utils.logAudit("createVfModule - queryAAIVfModule Response: " + responseData)\r
- utils.logAudit("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())\r
-\r
- execution.setVariable('DCVFM_queryAAIVfModuleResponseCode', response.getStatusCode())\r
- execution.setVariable('DCVFM_queryAAIVfModuleResponse', responseData)\r
- logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)\r
- logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)\r
- //Map<String, String>[] vfModules = new HashMap<String,String>[]\r
- List<Map<String,String>> vfModulesList = new ArrayList<Map<String,String>>();\r
- if (response.getStatusCode() == 200) {\r
- // Parse the VNF record from A&AI to find base module info\r
- logDebug('Parsing the VNF data to find base module info', isDebugLogEnabled)\r
- if (responseData != null) {\r
- def vfModulesText = utils.getNodeXml(responseData, "vf-modules")\r
- def xmlVfModules= new XmlSlurper().parseText(vfModulesText)\r
- def vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}\r
- execution.setVariable("DDVAM_moduleCount", vfModules.size())\r
- int vfModulesSize = 0\r
- for (i in 0..vfModules.size()-1) {\r
- def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i])\r
- \r
- Map<String, String> vfModuleEntry = new HashMap<String, String>()\r
- def vfModuleId = utils.getNodeText1(vfModuleXml, "vf-module-id")\r
- vfModuleEntry.put("vfModuleId", vfModuleName)\r
- def vfModuleName = utils.getNodeText1(vfModuleXml, "vf-module-name")\r
- vfModuleEntry.put("vfModuleName", vfModuleName) \r
- vfModulesList.add(vfModuleEntry) \r
- }\r
- \r
- } \r
- }\r
- execution.setVariable("DDVAM_vfModules", vfModules)\r
- } catch (Exception ex) {\r
- ex.printStackTrace()\r
- logDebug('Exception occurred while executing AAI GET:' + ex.getMessage(),isDebugLogEnabled)\r
- exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())\r
- }\r
- logDebug('Exited ' + method, isDebugLogEnabled)\r
- } catch (BpmnError e) {\r
- throw e;\r
- } catch (Exception e) {\r
- logError('Caught exception in ' + method, e)\r
- exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())\r
- }\r
- }\r
- \r
- public void prepareNextModuleToDelete(Execution execution){\r
- def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
- execution.setVariable("prefix", Prefix)\r
- logDebug(" ======== STARTED prepareNextModuleToDelete ======== ", isDebugLogEnabled)\r
- \r
- try {\r
- int i = execution.getVariable("DDVAM_nextModule")\r
- def vfModules = execution.getVariable("DDVAM_vfModules")\r
- def vfModule = vfModules[i]\r
- \r
- def vfModuleId = vfModule.get("vfModuleId")\r
- execution.setVariable("DDVAM_vfModuleId", vfModuleId)\r
- \r
- def vfModuleName = vfModule.get("vfModuleName")\r
- execution.setVariable("DDVAM_vfModuleName", vfModuleName)\r
- \r
- \r
- // HARDCODED FOR NOW\r
- def vfModuleModelInfo = ""\r
- execution.setVariable("DDVAM_vfModuleModelInfo", vfModuleModelInfo) \r
- \r
- }catch(Exception e){\r
- utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled)\r
- exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage())\r
- }\r
- logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)\r
- }\r
- \r
- \r
- \r
- \r
-}\r
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import java.util.UUID;
+
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution;
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.bpmn.common.scripts.VidUtils
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.springframework.web.util.UriUtils;
+
+/**
+ * This class supports the macro VID Flow
+ * with the deletion of a generic vnf and related VF modules.
+ */
+class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor {
+
+ String Prefix="DDVAM_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ JsonUtils jsonUtil = new JsonUtils()
+ VidUtils vidUtils = new VidUtils(this)
+ SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+
+ /**
+ * This method gets and validates the incoming
+ * request.
+ *
+ * @param - execution
+ *
+ */
+ public void preProcessRequest(Execution execution) {
+ def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix",Prefix)
+ utils.log("DEBUG", " *** STARTED DoDeleteVnfAndModules PreProcessRequest Process*** ", isDebugEnabled)
+
+ try{
+ // Get Variables
+
+ String cloudConfiguration = execution.getVariable("cloudConfiguration")
+ utils.log("DEBUG", "Cloud Configuration: " + cloudConfiguration, isDebugEnabled)
+
+ String requestId = execution.getVariable("msoRequestId")
+ execution.setVariable("requestId", requestId)
+ execution.setVariable("mso-request-id", requestId)
+ utils.log("DEBUG", "Incoming Request Id is: " + requestId, isDebugEnabled)
+
+ String serviceInstanceId = execution.getVariable("serviceInstanceId")
+ utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled)
+
+ String vnfId = execution.getVariable("vnfId")
+ utils.log("DEBUG", "Incoming Vnf Id is: " + vnfId, isDebugEnabled)
+
+ String source = "VID"
+ execution.setVariable("DDVAM_source", source)
+ utils.log("DEBUG", "Incoming Source is: " + source, isDebugEnabled)
+
+ execution.setVariable("DDVAM_isVidRequest", "true")
+
+ String sdncVersion = execution.getVariable("sdncVersion")
+ if (sdncVersion == null) {
+ sdncVersion = "1702"
+ }
+ execution.setVariable("DDVAM_sdncVersion", sdncVersion)
+ utils.log("DEBUG", "Incoming Sdnc Version is: " + sdncVersion, isDebugEnabled)
+
+ String sdncCallbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+ if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+ def msg = 'Required variable \'URN_mso_workflow_sdncadapter_callback\' is missing'
+ logError(msg)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+ }
+ execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+ utils.logAudit("SDNC Callback URL: " + sdncCallbackUrl)
+ logDebug("SDNC Callback URL is: " + sdncCallbackUrl, isDebugEnabled)
+
+ if (!sdncVersion.equals("1702")) {
+ //String vnfModelInfo = execution.getVariable("vnfModelInfo")
+ //String serviceModelInfo = execution.getVariable("serviceModelInfo")
+
+ String serviceId = execution.getVariable("productFamilyId")
+ execution.setVariable("DDVAM_serviceId", serviceId)
+ utils.log("DEBUG", "Incoming Service Id is: " + serviceId, isDebugEnabled)
+
+
+ //String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantId")
+ //execution.setVariable("DDVAM_modelInvariantId", modelInvariantId)
+ //utils.log("DEBUG", "Incoming Invariant Id is: " + modelInvariantId, isDebugEnabled)
+
+ //String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelVersionId")
+ //if (modelVersionId == null) {
+ // modelVersionId = ""
+ //}
+ //execution.setVariable("DDVAM_modelVersionId", modelVersionId)
+ //utils.log("DEBUG", "Incoming Version Id is: " + modelVersionId, isDebugEnabled)
+
+ //String modelVersion = jsonUtil.getJsonValue(vnfModelInfo, "modelVersion")
+ //execution.setVariable("DDVAM_modelVersion", modelVersion)
+ //utils.log("DEBUG", "Incoming Model Version is: " + modelVersion, isDebugEnabled)
+
+ //String modelName = jsonUtil.getJsonValue(vnfModelInfo, "modelName")
+ //execution.setVariable("DDVAM_modelName", modelName)
+ //utils.log("DEBUG", "Incoming Model Name is: " + modelName, isDebugEnabled)
+
+ //String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationId")
+ //if (modelCustomizationId == null) {
+ // modelCustomizationId = ""
+ //}
+ //execution.setVariable("DDVAM_modelCustomizationId", modelCustomizationId)
+ //utils.log("DEBUG", "Incoming Model Customization Id is: " + modelCustomizationId, isDebugEnabled)
+
+ String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+ execution.setVariable("DDVAM_cloudSiteId", cloudSiteId)
+ utils.log("DEBUG", "Incoming Cloud Site Id is: " + cloudSiteId, isDebugEnabled)
+
+ String tenantId = execution.getVariable("tenantId")
+ execution.setVariable("DDVAM_tenantId", tenantId)
+ utils.log("DEBUG", "Incoming Tenant Id is: " + tenantId, isDebugEnabled)
+
+ String globalSubscriberId = execution.getVariable("globalSubscriberId")
+ if (globalSubscriberId == null) {
+ globalSubscriberId = ""
+ }
+ execution.setVariable("DDVAM_globalSubscriberId", globalSubscriberId)
+ utils.log("DEBUG", "Incoming Global Subscriber Id is: " + globalSubscriberId, isDebugEnabled)
+ }
+ execution.setVariable("DDVAM_moduleCount", 0)
+ execution.setVariable("DDVAM_nextModule", 0)
+
+
+ }catch(BpmnError b){
+ utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+ throw b
+ }catch(Exception e){
+ utils.log("DEBUG", " Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage(), isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest")
+
+ }
+ utils.log("DEBUG", "*** COMPLETED DoDeleteVnfAndModules PreProcessRequest Process ***", isDebugEnabled)
+ }
+
+
+
+ public void preProcessAddOnModule(Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessAddOnModule ======== ", isDebugLogEnabled)
+
+ try {
+ JSONArray addOnModules = (JSONArray) execution.getVariable("addOnModules")
+ int addOnIndex = (int) execution.getVariable("addOnModulesDeployed")
+
+ JSONObject addOnModule = addOnModules[addOnIndex]
+
+ def newVfModuleId = UUID.randomUUID().toString()
+ execution.setVariable("addOnVfModuleId", newVfModuleId)
+
+ execution.setVariable("instancesOfThisModelDeployed", 0)
+
+ JSONObject addOnVfModuleModelInfoObject = jsonUtil.getJsonValueForKey(addOnModule, "modelInfo")
+ String addOnVfModuleModelInfo = addOnVfModuleModelInfoObject.toString()
+ execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo)
+ String addOnVfModuleLabel = jsonUtil.getJsonValueForKey(addOnModule, "vfModuleLabel")
+ execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel)
+ String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantUuid")
+ execution.setVariable("addOnPersonaModelId", addOnPersonaModelId)
+ String addOnInitialCount = jsonUtil.getJsonValueForKey(addOnModule, "initialCount")
+ execution.setVariable("initialCount", addOnInitialCount)
+
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
+ }
+
+ /**
+ * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+ * A 200 response is expected with the VNF info in the response body. Will find out the base module info.
+ *
+ * @param execution The flow's execution instance.
+ */
+ public void queryAAIVfModule(Execution execution) {
+ def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+ def method = getClass().getSimpleName() + '.queryAAIVfModule(' +
+ 'execution=' + execution.getId() +
+ ')'
+ logDebug('Entered ' + method, isDebugLogEnabled)
+
+ try {
+ def vnfId = execution.getVariable('vnfId')
+
+ AaiUtil aaiUriUtil = new AaiUtil(this)
+ String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+ logDebug('AAI URI is: ' + aai_uri, isDebugLogEnabled)
+
+ String endPoint = execution.getVariable("URN_aai_endpoint") + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+ utils.logAudit("AAI endPoint: " + endPoint)
+
+ try {
+ utils.logAudit("createVfModule - invoking httpGet() to AAI")
+ APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint)
+
+ def responseData = response.getResponseBodyAsString()
+ if (responseData != null) {
+ logDebug("Received generic VNF data: " + responseData, isDebugLogEnabled)
+
+ }
+
+ utils.logAudit("createVfModule - queryAAIVfModule Response: " + responseData)
+ utils.logAudit("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+ execution.setVariable('DCVFM_queryAAIVfModuleResponseCode', response.getStatusCode())
+ execution.setVariable('DCVFM_queryAAIVfModuleResponse', responseData)
+ logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)
+ logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)
+ //Map<String, String>[] vfModules = new HashMap<String,String>[]
+ def vfModulesList = new ArrayList<Map<String,String>>()
+ def vfModules = null
+ def vfModuleBaseEntry = null
+ if (response.getStatusCode() == 200) {
+ // Parse the VNF record from A&AI to find base module info
+ logDebug('Parsing the VNF data to find base module info', isDebugLogEnabled)
+ if (responseData != null) {
+ def vfModulesText = utils.getNodeXml(responseData, "vf-modules")
+ logDebug("vModulesText: " + vfModulesText, isDebugLogEnabled)
+ if (vfModulesText != null && !vfModulesText.trim().isEmpty()) {
+ def xmlVfModules= new XmlSlurper().parseText(vfModulesText)
+ vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}
+ execution.setVariable("DDVAM_moduleCount", vfModules.size())
+ int vfModulesSize = 0
+ for (i in 0..vfModules.size()-1) {
+ def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i])
+
+ Map<String, String> vfModuleEntry = new HashMap<String, String>()
+ def vfModuleId = utils.getNodeText1(vfModuleXml, "vf-module-id")
+ vfModuleEntry.put("vfModuleId", vfModuleId)
+ def vfModuleName = utils.getNodeText1(vfModuleXml, "vf-module-name")
+ vfModuleEntry.put("vfModuleName", vfModuleName)
+
+ def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
+ // Save base vf module for last
+ if (isBaseVfModule == "true") {
+ vfModuleBaseEntry = vfModuleEntry
+ }
+ else {
+ vfModulesList.add(vfModuleEntry)
+ }
+ }
+ if (vfModuleBaseEntry != null) {
+ vfModulesList.add(vfModuleBaseEntry)
+ }
+ }
+
+ }
+ }
+ execution.setVariable("DDVAM_vfModules", vfModulesList)
+ } catch (Exception ex) {
+ ex.printStackTrace()
+ logDebug('Exception occurred while executing AAI GET:' + ex.getMessage(),isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+ }
+ logDebug('Exited ' + method, isDebugLogEnabled)
+ } catch (BpmnError e) {
+ throw e;
+ } catch (Exception e) {
+ logError('Caught exception in ' + method, e)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())
+ }
+ }
+
+ public void prepareNextModuleToDelete(Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED prepareNextModuleToDelete ======== ", isDebugLogEnabled)
+
+ try {
+ int i = execution.getVariable("DDVAM_nextModule")
+ def vfModules = execution.getVariable("DDVAM_vfModules")
+ def vfModule = vfModules[i]
+
+ def vfModuleId = vfModule.get("vfModuleId")
+ execution.setVariable("DDVAM_vfModuleId", vfModuleId)
+
+ def vfModuleName = vfModule.get("vfModuleName")
+ execution.setVariable("DDVAM_vfModuleName", vfModuleName)
+
+
+ // HARDCODED FOR NOW
+ def vfModuleModelInfo = ""
+ execution.setVariable("DDVAM_vfModuleModelInfo", vfModuleModelInfo)
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareNextModuleToDelete Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED prepareNextModuleToDelete ======== ", isDebugLogEnabled)
+ }
+
+ public void preProcessSDNCDeactivateRequest(Execution execution){
+ def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+ def vnfId = execution.getVariable("vnfId")
+ def serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+ try{
+ //Build SDNC Request
+
+ String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+ deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+ execution.setVariable("DDVAM_deactivateSDNCRequest", deactivateSDNCRequest)
+ logDebug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest, isDebugLogEnabled)
+ utils.logAudit("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+ }catch(Exception e){
+ utils.log("ERROR", "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
+ }
+
+ public void preProcessSDNCUnassignRequest(Execution execution) {
+ def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+ 'execution=' + execution.getId() +
+ ')'
+ def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+ logDebug('Entered ' + method, isDebugLogEnabled)
+ execution.setVariable("prefix", Prefix)
+ logDebug(" ======== STARTED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+ try{
+ String vnfId = execution.getVariable("vnfId")
+ String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+ String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+ execution.setVariable("DDVAM_unassignSDNCRequest", unassignSDNCRequest)
+ logDebug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest, isDebugLogEnabled)
+ utils.logAudit("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+
+ }catch(Exception e){
+ log.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e, isDebugLogEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+ }
+ logDebug("======== COMPLETED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
+ }
+
+ public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+
+ String uuid = execution.getVariable('testReqId') // for junits
+ if(uuid==null){
+ uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis()
+ }
+ def callbackURL = execution.getVariable("sdncCallbackUrl")
+ def requestId = execution.getVariable("msoRequestId")
+ def serviceId = execution.getVariable("DDVAM_serviceId")
+ def tenantId = execution.getVariable("DDVAM_tenantId")
+ def source = execution.getVariable("DDVAM_source")
+ def vnfId = execution.getVariable("vnfId")
+ def serviceInstanceId = execution.getVariable("serviceInstanceId")
+ def cloudSiteId = execution.getVariable("DDVAM_cloudSiteId")
+ def modelCustomizationId = execution.getVariable("DDVAM_modelCustomizationId")
+ //def serviceModelInfo = execution.getVariable("serviceModelInfo")
+ //def vnfModelInfo = execution.getVariable("vnfModelInfo")
+ //String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo)
+ //String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo)
+ def globalSubscriberId = execution.getVariable("DDVAM_globalSubscriberId")
+ def sdncVersion = execution.getVariable("DDVAM_sdncVersion")
+
+ String sdncRequest =
+ """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+ xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+ xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+ <sdncadapter:RequestHeader>
+ <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId>
+ <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId>
+ <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+ <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+ <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>
+ <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+ </sdncadapter:RequestHeader>
+ <sdncadapterworkflow:SDNCRequestData>
+ <request-information>
+ <request-id>${requestId}</request-id>
+ <request-action>DeleteVnfInstance</request-action>
+ <source>${source}</source>
+ <notification-url/>
+ <order-number/>
+ <order-version/>
+ </request-information>
+ <service-information>
+ <service-id/>
+ <subscription-service-type/>
+ <service-instance-id>${serviceInstanceId}</service-instance-id>
+ <global-customer-id/>
+ </service-information>
+ <vnf-information>
+ <vnf-id>${vnfId}</vnf-id>
+ <vnf-type/>
+ </vnf-information>
+ <vnf-request-input>
+ <vnf-name/>
+ <tenant>${tenantId}</tenant>
+ <aic-cloud-region>${cloudSiteId}</aic-cloud-region>
+ </vnf-request-input>
+ </sdncadapterworkflow:SDNCRequestData>
+ </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+ utils.logAudit("sdncRequest: " + sdncRequest)
+ return sdncRequest
+ }
+
+ public void validateSDNCResponse(Execution execution, String response, String method){
+ def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+ execution.setVariable("prefix",Prefix)
+ logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+
+ WorkflowException workflowException = execution.getVariable("WorkflowException")
+ boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+ utils.logAudit("workflowException: " + workflowException)
+
+ SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+ sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+ utils.logAudit("SDNCResponse: " + response)
+
+ String sdncResponse = response
+ if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+ logDebug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse, isDebugLogEnabled)
+ }else{
+ logDebug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+ throw new BpmnError("MSOWorkflowException")
+ }
+ logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+ }
+
+
+
+
+
+
+
+}