2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.mso.apihandler.common;
24 import org.openecomp.mso.apihandler.camundabeans.*;
25 import org.openecomp.mso.logger.MessageEnum;
26 import org.openecomp.mso.logger.MsoLogger;
27 import org.apache.http.HttpResponse;
28 import org.apache.http.client.ClientProtocolException;
29 import org.apache.http.client.methods.HttpPost;
30 import org.apache.http.entity.StringEntity;
31 import org.codehaus.jackson.map.ObjectMapper;
32 import org.codehaus.jackson.map.SerializationConfig;
34 import javax.xml.bind.DatatypeConverter;
35 import java.io.IOException;
37 public class CamundaClient extends RequestClient{
38 private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH);
40 public CamundaClient() {
41 super(CommonConstants.CAMUNDA);
46 public HttpResponse post(String camundaReqXML, String requestId,
47 String requestTimeout, String schemaVersion, String serviceInstanceId, String action)
48 throws ClientProtocolException, IOException{
49 HttpPost post = new HttpPost(url);
50 msoLogger.debug("Camunda url is: "+ url);
51 String jsonReq = wrapRequest(camundaReqXML, requestId, serviceInstanceId, requestTimeout, schemaVersion);
53 StringEntity input = new StringEntity(jsonReq);
54 input.setContentType(CommonConstants.CONTENT_TYPE_JSON);
56 String encryptedCredentials = null;
58 encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);
59 if(encryptedCredentials != null){
60 String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY);
61 if(userCredentials != null){
62 post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes())));
67 post.setEntity(input);
68 HttpResponse response = client.execute(post);
74 public HttpResponse post(String jsonReq)
75 throws ClientProtocolException, IOException{
76 HttpPost post = new HttpPost(url);
77 msoLogger.debug("Camunda url is: "+ url);
78 //String jsonReq = wrapRequest(camundaReqXML, requestId, serviceInstanceId, requestTimeout, schemaVersion);
80 StringEntity input = new StringEntity(jsonReq);
81 input.setContentType(CommonConstants.CONTENT_TYPE_JSON);
83 String encryptedCredentials = null;
85 encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);
86 if(encryptedCredentials != null){
87 String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY);
88 if(userCredentials != null){
89 post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes())));
94 post.setEntity(input);
95 HttpResponse response = client.execute(post);
101 public HttpResponse post(String requestId, boolean isBaseVfModule,
102 int recipeTimeout, String requestAction, String serviceInstanceId,
103 String vnfId, String vfModuleId, String volumeGroupId, String networkId,
104 String serviceType, String vnfType, String vfModuleType, String networkType,
105 String requestDetails)
106 throws ClientProtocolException, IOException{
107 HttpPost post = new HttpPost(url);
108 msoLogger.debug("Camunda url is: "+ url);
109 String jsonReq = wrapVIDRequest(requestId, isBaseVfModule, recipeTimeout, requestAction,
110 serviceInstanceId, vnfId, vfModuleId, volumeGroupId, networkId,
111 serviceType, vnfType, vfModuleType, networkType, requestDetails);
113 StringEntity input = new StringEntity(jsonReq);
114 input.setContentType(CommonConstants.CONTENT_TYPE_JSON);
116 String encryptedCredentials = null;
118 encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);
119 if(encryptedCredentials != null){
120 String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY);
121 if(userCredentials != null){
122 post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes())));
127 post.setEntity(input);
128 HttpResponse response = client.execute(post);
133 private String wrapRequest(String reqXML, String requestId, String serviceInstanceId, String requestTimeout, String schemaVersion){
134 String jsonReq = null;
138 if(requestTimeout == null){
141 if(schemaVersion == null){
147 CamundaRequest camundaRequest = new CamundaRequest();
148 CamundaInput camundaInput = new CamundaInput();
149 CamundaInput host = new CamundaInput();
150 CamundaInput schema = new CamundaInput();
151 CamundaInput reqid = new CamundaInput();
152 CamundaInput svcid = new CamundaInput();
153 CamundaInput timeout = new CamundaInput();
154 camundaInput.setValue(reqXML);
155 host.setValue(parseURL());
156 schema.setValue(schemaVersion);
157 reqid.setValue(requestId);
158 svcid.setValue(serviceInstanceId);
159 timeout.setValue(requestTimeout);
160 camundaRequest.setServiceInput(camundaInput);
161 camundaRequest.setHost(host);
162 camundaRequest.setReqid(reqid);
163 camundaRequest.setSvcid(svcid);
164 camundaRequest.setSchema(schema);
165 camundaRequest.setTimeout(timeout);
166 ObjectMapper mapper = new ObjectMapper();
167 mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
169 jsonReq = mapper.writeValueAsString(camundaRequest);
170 msoLogger.debug("request body is " + jsonReq);
172 msoLogger.error(MessageEnum.APIH_WARP_REQUEST, "Camunda", "wrapRequest", MsoLogger.ErrorCode.BusinessProcesssError, "Error in APIH Warp request", e);
177 private String wrapVIDRequest(String requestId, boolean isBaseVfModule,
178 int recipeTimeout, String requestAction, String serviceInstanceId,
179 String vnfId, String vfModuleId, String volumeGroupId, String networkId,
180 String serviceType, String vnfType, String vfModuleType, String networkType,
181 String requestDetails){
182 String jsonReq = null;
183 if(requestId == null){
186 if(requestAction == null){
189 if(serviceInstanceId == null){
190 serviceInstanceId ="";
195 if(vfModuleId == null){
198 if(volumeGroupId == null){
201 if(networkId == null){
204 if(serviceType == null){
210 if(vfModuleType == null){
213 if(networkType == null){
216 if(requestDetails == null){
223 CamundaVIDRequest camundaRequest = new CamundaVIDRequest();
224 CamundaInput serviceInput = new CamundaInput();
225 CamundaInput host = new CamundaInput();
226 CamundaInput requestIdInput= new CamundaInput();
227 CamundaBooleanInput isBaseVfModuleInput = new CamundaBooleanInput();
228 CamundaIntegerInput recipeTimeoutInput = new CamundaIntegerInput();
229 CamundaInput requestActionInput = new CamundaInput();
230 CamundaInput serviceInstanceIdInput = new CamundaInput();
231 CamundaInput vnfIdInput = new CamundaInput();
232 CamundaInput vfModuleIdInput = new CamundaInput();
233 CamundaInput volumeGroupIdInput = new CamundaInput();
234 CamundaInput networkIdInput = new CamundaInput();
235 CamundaInput serviceTypeInput = new CamundaInput();
236 CamundaInput vnfTypeInput = new CamundaInput();
237 CamundaInput vfModuleTypeInput = new CamundaInput();
238 CamundaInput networkTypeInput = new CamundaInput();
240 host.setValue(parseURL());
241 requestIdInput.setValue(requestId);
242 isBaseVfModuleInput.setValue(isBaseVfModule);
243 recipeTimeoutInput.setValue(recipeTimeout);
244 requestActionInput.setValue(requestAction);
245 serviceInstanceIdInput.setValue(serviceInstanceId);
246 vnfIdInput.setValue(vnfId);
247 vfModuleIdInput.setValue(vfModuleId);
248 volumeGroupIdInput.setValue(volumeGroupId);
249 networkIdInput.setValue(networkId);
250 serviceTypeInput.setValue(serviceType);
251 vnfTypeInput.setValue(vnfType);
252 vfModuleTypeInput.setValue(vfModuleType);
253 networkTypeInput.setValue(networkType);
255 serviceInput.setValue(requestDetails);
256 camundaRequest.setServiceInput(serviceInput);
257 camundaRequest.setHost(host);
258 camundaRequest.setRequestId(requestIdInput);
259 camundaRequest.setMsoRequestId(requestIdInput);
260 camundaRequest.setIsBaseVfModule(isBaseVfModuleInput);
261 camundaRequest.setRecipeTimeout(recipeTimeoutInput);
262 camundaRequest.setRequestAction(requestActionInput);
263 camundaRequest.setServiceInstanceId(serviceInstanceIdInput);
264 camundaRequest.setVnfId(vnfIdInput);
265 camundaRequest.setVfModuleId(vfModuleIdInput);
266 camundaRequest.setVolumeGroupId(volumeGroupIdInput);
267 camundaRequest.setNetworkId(networkIdInput);
268 camundaRequest.setServiceType(serviceTypeInput);
269 camundaRequest.setVnfType(vnfTypeInput);
270 camundaRequest.setVfModuleType(vfModuleTypeInput);
271 camundaRequest.setNetworkType(networkTypeInput);
273 ObjectMapper mapper = new ObjectMapper();
274 mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
276 jsonReq = mapper.writeValueAsString(camundaRequest);
277 msoLogger.debug("request body is " + jsonReq);
279 msoLogger.error(MessageEnum.APIH_WARP_REQUEST, "Camunda", "wrapVIDRequest", MsoLogger.ErrorCode.BusinessProcesssError, "Error in APIH Warp request", e);
284 private String parseURL(){
285 String[] parts = url.split(":");
290 host = host.substring(2);