0f384096cb68fcbb852d0704b66766a617da1941
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask;
22
23 import org.apache.commons.lang3.StringUtils;
24 import org.camunda.bpm.engine.delegate.DelegateExecution;
25 import org.onap.msb.sdk.httpclient.RestServiceCreater;
26 import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
27 import org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.GenericResourceApi;
28 import org.openecomp.mso.bpmn.core.BaseTask;
29 import org.openecomp.mso.logger.MessageEnum;
30 import org.openecomp.mso.logger.MsoLogger;
31 import org.openecomp.mso.requestsdb.RequestsDatabase;
32 import org.openecomp.mso.requestsdb.RequestsDbConstant;
33 import org.openecomp.mso.requestsdb.ResourceOperationStatus;
34
35 import java.util.Map;
36
37 /**
38  * Created by 10112215 on 2017/9/16.
39  */
40 public abstract class AbstractSdncOperationTask extends BaseTask {
41
42     private static final String DEFAULT_MSB_IP = "127.0.0.1";
43     private static final int DEFAULT_MSB_Port = 10081;
44     private static final String SDCADAPTOR_INPUTS = "SDCADAPTOR_INPUTS";
45     private RequestsDatabase requestsDB = RequestsDatabase.getInstance();
46
47
48     private static MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL);
49
50     @Override
51     public void execute(DelegateExecution execution) {
52         GenericResourceApi genericResourceApiClient = getGenericResourceApiClient(execution);
53         updateProgress(execution, RequestsDbConstant.Status.PROCESSING, null, "10", "execute begin!");
54         Map<String, String> inputs = (Map<String, String>) execution.getVariable(SDCADAPTOR_INPUTS);
55         updateProgress(execution, null, null, "30", "getGenericResourceApiClient finished!");
56         try {
57             sendRestrequestAndHandleResponse(execution, inputs, genericResourceApiClient);
58             execution.setVariable("SDNCA_SuccessIndicator", true);
59             updateProgress(execution, RequestsDbConstant.Status.FINISHED, null, RequestsDbConstant.Progress.ONE_HUNDRED, "execute finished!");
60         } catch (Exception e) {
61             e.printStackTrace();
62             execution.setVariable("SDNCA_SuccessIndicator", false);
63         }
64     }
65
66     public abstract void sendRestrequestAndHandleResponse(DelegateExecution execution,
67                                                           Map<String, String> inputs,
68                                                           GenericResourceApi genericResourceApiClient) throws Exception;
69
70     public void updateProgress(DelegateExecution execution,
71                                String status,
72                                String errorCode,
73                                String progress,
74                                String statusDescription) {
75         String serviceId = (String) execution.getVariable("serviceId");
76         String operationId = (String) execution.getVariable("operationId");
77         String resourceTemplateUUID = (String) execution.getVariable("resourceTemplateUUID");
78         ResourceOperationStatus resourceOperationStatus = requestsDB.getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
79         if (!StringUtils.isBlank(status)) {
80             resourceOperationStatus.setStatus(status);
81         }
82         if (!StringUtils.isBlank(errorCode)) {
83             resourceOperationStatus.setErrorCode(errorCode);
84         }
85         if (!StringUtils.isBlank(progress)) {
86             resourceOperationStatus.setProgress(progress);
87         }
88         if (!StringUtils.isBlank(statusDescription)) {
89             resourceOperationStatus.setStatusDescription(statusDescription);
90         }
91         requestsDB.updateResOperStatus(resourceOperationStatus);
92     }
93
94     private GenericResourceApi getGenericResourceApiClient(DelegateExecution execution) {
95         updateProgress(execution, null, null, "20", "getGenericResourceApiClient begin!");
96         String msbIp = getString(execution, "MSB_IP", DEFAULT_MSB_IP);
97         int msbPort = getInteger(execution, "MSB_Port", DEFAULT_MSB_Port);
98         MSBServiceClient msbClient = new MSBServiceClient(msbIp, msbPort);
99         RestServiceCreater restServiceCreater = new RestServiceCreater(msbClient);
100         return restServiceCreater.createService(GenericResourceApi.class);
101     }
102
103     private String getString(DelegateExecution execution, String name, String defaultValue) {
104         String vlaue = (String) execution.getVariable(name);
105         try {
106             if (!StringUtils.isBlank(vlaue)) {
107                 return vlaue;
108             }
109         } catch (Exception e) {
110             System.out.println(e);
111             logger.error(MessageEnum.GENERAL_EXCEPTION, " getMsbIp catch exception: ", "", this.getTaskName(), MsoLogger.ErrorCode.UnknownError, e.getClass().toString());
112         }
113         return defaultValue;
114     }
115
116     private Integer getInteger(DelegateExecution execution, String name, Integer defaultValue) {
117         Integer vlaue = (Integer) execution.getVariable(name);
118         try {
119             if (vlaue != null) {
120                 return vlaue;
121             }
122         } catch (Exception e) {
123             System.out.println(e);
124             logger.error(MessageEnum.GENERAL_EXCEPTION, " getMsbIp catch exception: ", "", this.getTaskName(), MsoLogger.ErrorCode.UnknownError, e.getClass().toString());
125         }
126         return defaultValue;
127     }
128
129     public String getProcessKey(DelegateExecution execution) {
130         return execution.getProcessEngineServices().getRepositoryService().getProcessDefinition(execution.getProcessDefinitionId()).getKey();
131     }
132 }