2  * ============LICENSE_START=======================================================
\r 
   4  * ================================================================================
\r 
   5  * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
\r 
   6  * ================================================================================
\r 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
\r 
   8  * you may not use this file except in compliance with the License.
\r 
   9  * You may obtain a copy of the License at
\r 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
\r 
  13  * Unless required by applicable law or agreed to in writing, software
\r 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
\r 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r 
  16  * See the License for the specific language governing permissions and
\r 
  17  * limitations under the License.
\r 
  18  * ============LICENSE_END=========================================================
\r 
  21 package org.openecomp.mso.bpmn.infrastructure.scripts;
\r 
  23 import static org.apache.commons.lang3.StringUtils.*;
\r 
  24 import groovy.xml.XmlUtil
\r 
  25 import groovy.json.*
\r 
  26 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor 
\r 
  27 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil 
\r 
  28 import org.openecomp.mso.bpmn.core.WorkflowException 
\r 
  29 import org.openecomp.mso.bpmn.core.json.JsonUtils 
\r 
  30 import org.openecomp.mso.rest.APIResponse
\r 
  32 import java.util.UUID;
\r 
  34 import org.camunda.bpm.engine.delegate.BpmnError 
\r 
  35 import org.camunda.bpm.engine.runtime.Execution
\r 
  36 import org.apache.commons.lang3.*
\r 
  37 import org.apache.commons.codec.binary.Base64;
\r 
  38 import org.springframework.web.util.UriUtils 
\r 
  39 import org.openecomp.mso.rest.RESTClient 
\r 
  40 import org.openecomp.mso.rest.RESTConfig
\r 
  41 import org.openecomp.mso.rest.APIResponse;
\r 
  44  * This groovy class supports the <class>DODeleteVFCNetworkServiceInstance.bpmn</class> process.
\r 
  45  * flow for E2E ServiceInstance Delete
\r 
  47 public class DODeleteVFCNetworkServiceInstance extends AbstractServiceTaskProcessor {
\r 
  49     String deleteUrl = "/vfc/vfcadapters/v1/ns/{nsInstanceId}"
\r 
  51     String terminateUrl = "/vfcvfcadatpers/v1/ns/{nsInstanceId}/terminate"
\r 
  53     String queryJobUrl = "/vfc/vfcadatpers/v1/jobs/{jobId}"
\r 
  55     ExceptionUtil exceptionUtil = new ExceptionUtil()
\r 
  57     JsonUtils jsonUtil = new JsonUtils()
\r 
  60      * Pre Process the BPMN Flow Request
\r 
  62      * generate the nsOperationKey
\r 
  63      * generate the nsParameters
\r 
  65     public void preProcessRequest (Execution execution) {         
\r 
  71     public void deleteNetworkService(Execution execution) {
\r 
  76      * instantiate NS task
\r 
  78     public void terminateNetworkService(Execution execution) {
\r 
  85     public void queryNSProgress(Execution execution) {
\r 
  86         String jobId = execution.getVariable("jobId")
\r 
  87         String nsOperationKey = excution.getVariable("nsOperationKey");
\r 
  88         String url = queryJobUrl.replaceAll("{jobId}", execution.getVariable("jobId")) 
\r 
  89         APIResponse createRsp = postRequest(url, nsOperationKey)
\r 
  90         String returnCode = apiResponse.getStatusCode()
\r 
  91         String aaiResponseAsString = apiResponse.getResponseBodyAsString()
\r 
  92         String operationStatus = "error"
\r 
  93         if(returnCode== "200"){
\r 
  94             operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status")
\r 
  96         exection.setVariable("operationStatus", operationStatus)
\r 
 102     public void timeDelay(Execution execution) {
\r 
 104             Thread.sleep(5000);
\r 
 105         } catch(InterruptedException e) {           
\r 
 106             taskProcessor.utils.log("ERROR", "Time Delay exception" + e , isDebugEnabled)
\r 
 113     public void finishNSCreate(Execution execution) {
\r 
 114         //no need to do anything util now
\r 
 119      * url: the url of the request
\r 
 120      * requestBody: the body of the request
\r 
 122     private APIResponse postRequest(String url, String requestBody){
\r 
 123         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
\r 
 124         taskProcessor.logDebug( " ======== Started Execute VFC adapter Post Process ======== ", isDebugEnabled)
\r 
 125         taskProcessor.logDebug( "url:"+url +"\nrequestBody:"+ requestBody, isDebugEnabled)
\r 
 126         APIResponse apiResponse = null
\r 
 128             RESTConfig config = new RESTConfig(url);
\r 
 129             RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/json");
\r 
 130             apiResponse = client.httpPost(requestBody)
\r 
 131             taskProcessor.logDebug( "response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString(), isDebugEnabled)
\r 
 132             taskProcessor.logDebug( "======== Completed Execute VF-C adapter Post Process ======== ", isDebugEnabled)
\r 
 133         }catch(Exception e){
\r 
 134             taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Post Call. Exception is: \n" + e, isDebugEnabled)
\r 
 135             throw new BpmnError("MSOWorkflowException")
\r