From a0a3a8800d381b74b7eeb9d88d69f8953ad286be Mon Sep 17 00:00:00 2001 From: c00149107 Date: Fri, 22 Sep 2017 15:06:13 +0800 Subject: Add delete VFC NS workflow Add delete VFC NS workflow bpmn and groovy file Change-Id: I9ac362ea973139663fbe8235e5ac15e980376bb6 Issue-ID:SO-57 Signed-off-by: c00149107 --- .../DoDeleteVFCNetworkServiceInstance.groovy | 139 +++++++++++ .../DoDeleteVFCNetworkServiceInstance.bpmn | 257 +++++++++++++++++++++ 2 files changed, 396 insertions(+) create mode 100644 bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy create mode 100644 bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy new file mode 100644 index 0000000000..72982bb5ed --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy @@ -0,0 +1,139 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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 static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import groovy.json.* +import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil +import org.openecomp.mso.bpmn.core.WorkflowException +import org.openecomp.mso.bpmn.core.json.JsonUtils +import org.openecomp.mso.rest.APIResponse + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.runtime.Execution +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils +import org.openecomp.mso.rest.RESTClient +import org.openecomp.mso.rest.RESTConfig +import org.openecomp.mso.rest.APIResponse; + +/** + * This groovy class supports the DODeleteVFCNetworkServiceInstance.bpmn process. + * flow for E2E ServiceInstance Delete + */ +public class DODeleteVFCNetworkServiceInstance extends AbstractServiceTaskProcessor { + + String deleteUrl = "/vfc/vfcadapters/v1/ns/{nsInstanceId}" + + String terminateUrl = "/vfcvfcadatpers/v1/ns/{nsInstanceId}/terminate" + + String queryJobUrl = "/vfc/vfcadatpers/v1/jobs/{jobId}" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + /** + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + * generate the nsParameters + */ + public void preProcessRequest (Execution execution) { + } + + /** + * delete NS task + */ + public void deleteNetworkService(Execution execution) { + + } + + /** + * instantiate NS task + */ + public void terminateNetworkService(Execution execution) { + + } + + /** + * query NS task + */ + public void queryNSProgress(Execution execution) { + String jobId = execution.getVariable("jobId") + String nsOperationKey = excution.getVariable("nsOperationKey"); + String url = queryJobUrl.replaceAll("{jobId}", execution.getVariable("jobId")) + APIResponse createRsp = postRequest(url, nsOperationKey) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String operationStatus = "error" + if(returnCode== "200"){ + operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status") + } + exection.setVariable("operationStatus", operationStatus) + } + + /** + * delay 5 sec + */ + public void timeDelay(Execution execution) { + try { + Thread.sleep(5000); + } catch(InterruptedException e) { + taskProcessor.utils.log("ERROR", "Time Delay exception" + e , isDebugEnabled) + } + } + + /** + * finish NS task + */ + public void finishNSCreate(Execution execution) { + //no need to do anything util now + } + + /** + * post request + * url: the url of the request + * requestBody: the body of the request + */ + private APIResponse postRequest(String url, String requestBody){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + taskProcessor.logDebug( " ======== Started Execute VFC adapter Post Process ======== ", isDebugEnabled) + taskProcessor.logDebug( "url:"+url +"\nrequestBody:"+ requestBody, isDebugEnabled) + APIResponse apiResponse = null + try{ + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/json"); + apiResponse = client.httpPost(requestBody) + taskProcessor.logDebug( "response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString(), isDebugEnabled) + taskProcessor.logDebug( "======== Completed Execute VF-C adapter Post Process ======== ", isDebugEnabled) + }catch(Exception e){ + taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Post Call. Exception is: \n" + e, isDebugEnabled) + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } +} diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn new file mode 100644 index 0000000000..3cef94d6ea --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn @@ -0,0 +1,257 @@ + + + + + SequenceFlow_1qo2pln + + + + terminateFinished_SequenceFlow + SequenceFlow_1sjop71 + + + + SequenceFlow_1qo2pln + SequenceFlow_150q0fo + + + + SequenceFlow_150q0fo + SequenceFlow_1ywe21t + + + + SequenceFlow_1sjop71 + deleteNSFailed_SequenceFlow + deleteNSSuccess_SequenceFlow + + + + + + SequenceFlow_1ywe21t + terminateFailed_SequenceFlow + terminateSuccess_SequenceFlow + + + + + + + + + + SequenceFlow_0xqo13p + terminateFinished_SequenceFlow + terminateProcessing_SequenceFlow + + + + + + + + + + deleteNSFailed_SequenceFlow + + + terminateFailed_SequenceFlow + + + SequenceFlow_0cq2q6g + + + terminateSuccess_SequenceFlow + SequenceFlow_1gsbpxj + SequenceFlow_0xqo13p + + + + deleteNSSuccess_SequenceFlow + SequenceFlow_0cq2q6g + + + + + terminateProcessing_SequenceFlow + SequenceFlow_1gsbpxj + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit 1.2.3-korg