From 9d480cc0089e139c77c772c57fdd0432e52b5bdd Mon Sep 17 00:00:00 2001
From: Zhuoyao Huang <10112215@zte.com.cn>
Date: Sat, 28 Oct 2017 14:42:04 +0800
Subject: update progress by http request
Change-Id: I0706639eb4d4638fbccf790d67df594b504808b2
Issue-ID:SO-181
Signed-off-by: Zhuoyao Huang <10112215@zte.com.cn>
---
.../serviceTask/AbstractSdncOperationTask.java | 254 +++++++++++++++++++--
.../SdncNetworkTopologyOperationTask.java | 2 +
.../SdncServiceTopologyOperationTask.java | 8 +-
.../serviceTask/SdncUnderlayVpnPreprocessTask.java | 2 +-
4 files changed, 240 insertions(+), 26 deletions(-)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/AbstractSdncOperationTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/AbstractSdncOperationTask.java
index c52c3b2f14..f6f8fd25dd 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/AbstractSdncOperationTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/AbstractSdncOperationTask.java
@@ -21,8 +21,18 @@
package org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask;
import org.apache.commons.lang3.StringUtils;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.json.JSONObject;
+import org.onap.msb.sdk.discovery.common.RouteException;
import org.onap.msb.sdk.httpclient.RestServiceCreater;
import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
import org.openecomp.mso.bpmn.core.BaseTask;
@@ -34,6 +44,7 @@ import org.openecomp.mso.requestsdb.RequestsDatabase;
import org.openecomp.mso.requestsdb.RequestsDbConstant;
import org.openecomp.mso.requestsdb.ResourceOperationStatus;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -48,19 +59,204 @@ public abstract class AbstractSdncOperationTask extends BaseTask {
public static final String ONAP_IP = "ONAP_IP";
private RequestsDatabase requestsDB = RequestsDatabase.getInstance();
+ private static final String postBodyTemplate = "\n"+
+ " \n"+
+ " $errorCode\n"+
+ " $jobId\n"+
+ " $operType\n"+
+ " $operationId\n"+
+ " \n"+
+ " $resourceTemplateUUID\n"+
+ " $serviceId\n"+
+ " $status\n"+
+ " $statusDescription\n"+
+ " ";
+
+
+ private void updateResOperStatus(ResourceOperationStatus resourceOperationStatus) throws RouteException {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ String url = "http://mso:8080/dbadapters/RequestsDbAdapter";
+ HttpPost httpPost = new HttpPost(url);
+ httpPost.addHeader("Authorization", "Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
+ httpPost.addHeader("Content-type", "application/soap+xml");
+ String postBody = getStringBody(resourceOperationStatus);
+ httpPost.setEntity(new StringEntity(postBody, ContentType.APPLICATION_XML));
+ String result;
+ boolean var15 = false;
+
+ String errorMsg;
+ label91: {
+ try {
+ var15 = true;
+ CloseableHttpResponse closeableHttpResponse = httpClient.execute(httpPost);
+ result = EntityUtils.toString(closeableHttpResponse.getEntity());
+ if(closeableHttpResponse.getStatusLine().getStatusCode() != 200) {
+ throw new RouteException(result, "SERVICE_GET_ERR");
+ }
+
+ closeableHttpResponse.close();
+ var15 = false;
+ break label91;
+ } catch (IOException var19) {
+ errorMsg = url + ":httpPostWithJSON connect faild";
+ throwsRouteException(errorMsg, var19, "POST_CONNECT_FAILD");
+ var15 = false;
+ } finally {
+ if(var15) {
+ try {
+ httpClient.close();
+ } catch (IOException var16) {
+ String errorMsg1 = url + ":close httpClient faild";
+ throwsRouteException(errorMsg1, var16, "CLOSE_CONNECT_FAILD");
+ }
+
+ }
+ }
+
+ try {
+ httpClient.close();
+ } catch (IOException var17) {
+ errorMsg = url + ":close httpClient faild";
+ throwsRouteException(errorMsg, var17, "CLOSE_CONNECT_FAILD");
+ }
+ }
+
+ try {
+ httpClient.close();
+ } catch (IOException var18) {
+ errorMsg = url + ":close httpClient faild";
+ throwsRouteException(errorMsg, var18, "CLOSE_CONNECT_FAILD");
+ }
+
+ //requestsDB.updateResOperStatus(resourceOperationStatus);
+ }
+
+ private static void throwsRouteException(String errorMsg, Exception e, String errorCode) throws RouteException {
+ String msg = errorMsg + ".errorMsg:" + e.getMessage();
+ throw new RouteException(errorMsg, errorCode);
+ }
+
+ private String getStringBody(ResourceOperationStatus resourceOperationStatus) {
+ String postBody = new String(postBodyTemplate);
+ postBody.replace("$errorCode", resourceOperationStatus.getErrorCode());
+ postBody.replace("$jobId", resourceOperationStatus.getJobId());
+ postBody.replace("$operType", resourceOperationStatus.getOperType());
+ postBody.replace("$operationId", resourceOperationStatus.getOperationId());
+ postBody.replace("$progress", resourceOperationStatus.getProgress());
+ postBody.replace("$resourceTemplateUUID", resourceOperationStatus.getResourceTemplateUUID());
+ postBody.replace("$serviceId", resourceOperationStatus.getServiceId());
+ postBody.replace("$status", resourceOperationStatus.getStatus());
+ postBody.replace("$statusDescription", resourceOperationStatus.getStatusDescription());
+ return postBody;
+ }
+
+ private ResourceOperationStatus getResourceOperationStatus(String serviceId, String operationId, String resourceTemplateUUID) throws RouteException {
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ String url = "http://mso:8080/dbadapters/RequestsDbAdapter";
+ HttpGet httpGet = new HttpGet(url);
+ httpGet.setHeader("Authorization", "Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
+ httpGet.setHeader("Content-type", "application/soap+xml");
+ boolean var16 = false;
+ String result="";
+ String errorMsg;
+ label109: {
+ label110: {
+ try {
+ var16 = true;
+ CloseableHttpResponse e = httpClient.execute(httpGet);
+ result = EntityUtils.toString(e.getEntity());
+ if(e.getStatusLine().getStatusCode() != 200) {
+ throw new RouteException(result, "SERVICE_GET_ERR");
+ }
+
+ e.close();
+ var16 = false;
+ break label110;
+ } catch (ClientProtocolException var21) {
+ errorMsg = url + ":httpGetWithJSON connect faild";
+ throwsRouteException(errorMsg, var21, "GET_CONNECT_FAILD");
+ var16 = false;
+ } catch (IOException var22) {
+ errorMsg = url + ":httpGetWithJSON connect faild";
+ throwsRouteException(errorMsg, var22, "GET_CONNECT_FAILD");
+ var16 = false;
+ break label109;
+ } finally {
+ if(var16) {
+ try {
+ httpClient.close();
+ } catch (IOException var17) {
+ String errorMsg1 = url + ":close httpClient faild";
+ throwsRouteException(errorMsg1, var17, "CLOSE_CONNECT_FAILD");
+ }
+
+ }
+ }
+
+ try {
+ httpClient.close();
+ } catch (IOException var19) {
+ errorMsg = url + ":close httpClient faild";
+ throwsRouteException(errorMsg, var19, "CLOSE_CONNECT_FAILD");
+ }
+
+ }
+
+ try {
+ httpClient.close();
+ } catch (IOException var20) {
+ errorMsg = url + ":close httpClient faild";
+ throwsRouteException(errorMsg, var20, "CLOSE_CONNECT_FAILD");
+ }
+
+ }
+
+ try {
+ httpClient.close();
+ } catch (IOException var18) {
+ errorMsg = url + ":close httpClient faild";
+ throwsRouteException(errorMsg, var18, "CLOSE_CONNECT_FAILD");
+ }
+
+ ResourceOperationStatus resourceOperationStatus = getResourceOperationStatusFromXmlString(result);
+
+ return resourceOperationStatus;
+
+ //return requestsDB.getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
+ }
+
+ private ResourceOperationStatus getResourceOperationStatusFromXmlString(String result) {
+ ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus();
+ resourceOperationStatus.setErrorCode(getValueByName("errorCode", result));
+ resourceOperationStatus.setJobId(getValueByName("jobId", result));
+ resourceOperationStatus.setOperType(getValueByName("operType", result));
+ resourceOperationStatus.setOperationId(getValueByName("operationId", result));
+ resourceOperationStatus.setProgress(getValueByName("progress", result));
+ resourceOperationStatus.setResourceTemplateUUID(getValueByName("resourceTemplateUUID", result));
+ resourceOperationStatus.setServiceId(getValueByName("serviceId", result));
+ resourceOperationStatus.setStatus(getValueByName("status", result));
+ resourceOperationStatus.setStatusDescription(getValueByName("statusDescription", result));
+ return resourceOperationStatus;
+ }
+
+ private String getValueByName(String Name, String xml) {
+ String start = "<" + Name + ">";
+ String end = "" + Name + ">";
+ return xml.substring(xml.indexOf(start), xml.indexOf(end)).replace(start, "");
+ }
private static MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL);
@Override
public void execute(DelegateExecution execution) {
GenericResourceApi genericResourceApiClient = getGenericResourceApiClient(execution);
- updateProgress(execution, RequestsDbConstant.Status.PROCESSING, null, "10", "execute begin!");
+// updateProgress(execution, RequestsDbConstant.Status.PROCESSING, null, "10", "execute begin!");
Map inputs = getInputs(execution);
- updateProgress(execution, null, null, "30", "getGenericResourceApiClient finished!");
+// updateProgress(execution, null, null, "30", "getGenericResourceApiClient finished!");
try {
sendRestrequestAndHandleResponse(execution, inputs, genericResourceApiClient);
execution.setVariable("SDNCA_SuccessIndicator", true);
- updateProgress(execution, RequestsDbConstant.Status.FINISHED, null, RequestsDbConstant.Progress.ONE_HUNDRED, "execute finished!");
+// updateProgress(execution, RequestsDbConstant.Status.FINISHED, null, RequestsDbConstant.Progress.ONE_HUNDRED, "execute finished!");
} catch (Exception e) {
e.printStackTrace();
execution.setVariable("SDNCA_SuccessIndicator", false);
@@ -87,39 +283,55 @@ public abstract class AbstractSdncOperationTask extends BaseTask {
String statusDescription) {
String serviceId = (String) execution.getVariable("serviceId");
String operationId = (String) execution.getVariable("operationId");
- String resourceTemplateUUID = (String) execution.getVariable("resourceTemplateUUID");
- ResourceOperationStatus resourceOperationStatus = requestsDB.getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
- if (!StringUtils.isBlank(status)) {
- resourceOperationStatus.setStatus(status);
- }
- if (!StringUtils.isBlank(errorCode)) {
- resourceOperationStatus.setErrorCode(errorCode);
- }
- if (!StringUtils.isBlank(progress)) {
- resourceOperationStatus.setProgress(progress);
- }
- if (!StringUtils.isBlank(statusDescription)) {
- resourceOperationStatus.setStatusDescription(statusDescription);
+ String resourceTemplateUUID = (String) execution.getVariable("resourceUUID");
+ try {
+ ResourceOperationStatus resourceOperationStatus = getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
+ if (!StringUtils.isBlank(status)) {
+ resourceOperationStatus.setStatus(status);
+ }
+ if (!StringUtils.isBlank(errorCode)) {
+ resourceOperationStatus.setErrorCode(errorCode);
+ }
+ if (!StringUtils.isBlank(progress)) {
+ resourceOperationStatus.setProgress(progress);
+ }
+ if (!StringUtils.isBlank(statusDescription)) {
+ resourceOperationStatus.setStatusDescription(statusDescription);
+ }
+ updateResOperStatus(resourceOperationStatus);
+ } catch (Exception exception) {
+ System.out.println(exception);
+ logger.error(MessageEnum.GENERAL_EXCEPTION, " updateProgress catch exception: ", "", this.getTaskName(), MsoLogger.ErrorCode.UnknownError, exception.getClass().toString());
}
- requestsDB.updateResOperStatus(resourceOperationStatus);
}
private GenericResourceApi getGenericResourceApiClient(DelegateExecution execution) {
- updateProgress(execution, null, null, "20", "getGenericResourceApiClient begin!");
+// updateProgress(execution, null, null, "20", "getGenericResourceApiClient begin!");
String msbIp = System.getenv().get(ONAP_IP);
int msbPort = DEFAULT_MSB_Port;
Map properties = PropertyConfiguration.getInstance().getProperties("mso.bpmn.urn.properties");
if (properties != null) {
- if (StringUtils.isBlank(msbIp)) {
- msbIp = getString(properties, "msb.address", DEFAULT_MSB_IP);
+ if (StringUtils.isBlank(msbIp) || !isIp(msbIp)) {
+ msbIp = properties.get("msb-ip");
+ if (StringUtils.isBlank(msbIp)) {
+ msbIp = getString(properties, "msb.address", DEFAULT_MSB_IP);
+ }
}
- msbPort = Integer.valueOf(getString(properties, "msb.port", String.valueOf(DEFAULT_MSB_Port)));
+ String strMsbPort = properties.get("msb-port");
+ if (StringUtils.isBlank(strMsbPort)) {
+ strMsbPort = getString(properties, "msb.port", String.valueOf(DEFAULT_MSB_Port));
+ }
+ msbPort = Integer.valueOf(strMsbPort);
}
MSBServiceClient msbClient = new MSBServiceClient(msbIp, msbPort);
RestServiceCreater restServiceCreater = new RestServiceCreater(msbClient);
return restServiceCreater.createService(GenericResourceApi.class);
}
+ protected boolean isIp(String msbIp) {
+ return !StringUtils.isBlank(msbIp) && msbIp.split("\\.").length == 4;
+ }
+
private String getString(Map properties, String name, String defaultValue) {
String vlaue = properties.get(name);
try {
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java
index 9e0b4f7806..e72bf8aea8 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java
@@ -58,6 +58,8 @@ public class SdncNetworkTopologyOperationTask extends AbstractSdncOperationTask
updateProgress(execution, RequestsDbConstant.Status.ERROR, String.valueOf(errorCode), null, errorMessage);
throw new Exception("");
}
+ updateProgress(execution, RequestsDbConstant.Status.FINISHED, null, RequestsDbConstant.Progress.ONE_HUNDRED, "execute finished!");
+
}
}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java
index d6ccc8b03b..bea7a129fa 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java
@@ -40,12 +40,12 @@ public class SdncServiceTopologyOperationTask extends AbstractSdncOperationTask
public void sendRestrequestAndHandleResponse(DelegateExecution execution,
Map inputs,
GenericResourceApi genericResourceApiClient) throws Exception {
- updateProgress(execution, null, null, "40", "sendRestrequestAndHandleResponse begin!");
+// updateProgress(execution, null, null, "40", "sendRestrequestAndHandleResponse begin!");
ServiceRpcInputEntityBuilder builder = new ServiceRpcInputEntityBuilder();
RpcServiceTopologyOperationInputEntity inputEntity = builder.build(execution, inputs);
- updateProgress(execution, null, null, "50", "RequestBody build finished!");
+// updateProgress(execution, null, null, "50", "RequestBody build finished!");
RpcServiceTopologyOperationOutputEntity outputEntity = genericResourceApiClient.postServiceTopologyOperation(inputEntity).execute().body();
- updateProgress(execution, null, null, "90", "sendRestrequestAndHandleResponse finished!");
+// updateProgress(execution, null, null, "90", "sendRestrequestAndHandleResponse finished!");
saveOutput(execution, outputEntity);
}
@@ -57,7 +57,7 @@ public class SdncServiceTopologyOperationTask extends AbstractSdncOperationTask
String errorMessage = output.getOutput().getResponseMessage();
WorkflowException workflowException = new WorkflowException(processKey, errorCode, errorMessage);
execution.setVariable("SDNCA_SuccessIndicator", workflowException);
- updateProgress(execution, RequestsDbConstant.Status.ERROR, String.valueOf(errorCode), null, errorMessage);
+// updateProgress(execution, RequestsDbConstant.Status.ERROR, String.valueOf(errorCode), null, errorMessage);
throw new Exception("");
}
}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java
index 49ded45b4a..119ac42e76 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java
@@ -41,7 +41,7 @@ public class SdncUnderlayVpnPreprocessTask extends BaseTask {
private String getOperType(DelegateExecution execution) {
String serviceId = (String) execution.getVariable("serviceId");
String operationId = (String) execution.getVariable("operationId");
- String resourceTemplateUUID = (String) execution.getVariable("resourceTemplateUUID");
+ String resourceTemplateUUID = (String) execution.getVariable("resourceUUID");
ResourceOperationStatus resourceOperationStatus = requestsDB.getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
return resourceOperationStatus.getOperType();
}
--
cgit 1.2.3-korg