2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2018 - 2019 Nokia. All rights reserved.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 package org.onap.vid.mso.rest;
23 import com.google.common.collect.ImmutableMap;
24 import io.joshworks.restclient.http.HttpResponse;
25 import java.text.DateFormat;
26 import java.text.SimpleDateFormat;
27 import java.util.Date;
28 import java.util.HashMap;
30 import javax.ws.rs.core.HttpHeaders;
31 import javax.ws.rs.core.MediaType;
32 import org.apache.commons.codec.binary.Base64;
33 import org.eclipse.jetty.util.security.Password;
34 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
35 import org.onap.portalsdk.core.util.SystemProperties;
36 import org.onap.vid.aai.util.HttpsAuthClient;
37 import org.onap.vid.changeManagement.MsoRequestDetails;
38 import org.onap.vid.changeManagement.RequestDetailsWrapper;
39 import org.onap.vid.client.SyncRestClient;
40 import org.onap.vid.model.RequestReferencesContainer;
41 import org.onap.vid.mso.MsoInterface;
42 import org.onap.vid.mso.MsoProperties;
43 import org.onap.vid.mso.MsoResponseWrapper;
44 import org.onap.vid.mso.MsoResponseWrapperInterface;
45 import org.onap.vid.mso.MsoUtil;
46 import org.onap.vid.mso.RestMsoImplementation;
47 import org.onap.vid.mso.RestObject;
48 import org.onap.vid.utils.Logging;
52 * Created by pickjonathan on 21/06/2017.
54 public class MsoRestClientNew extends RestMsoImplementation implements MsoInterface {
57 * The Constant dateFormat.
59 public static final String X_FROM_APP_ID = "X-FromAppId";
60 final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
61 private static final String START = " start";
62 private final SyncRestClient client;
63 private final String baseUrl;
64 private final Map<String, String> commonHeaders;
68 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoRestClientNew.class);
70 public MsoRestClientNew(SyncRestClient client, String baseUrl, HttpsAuthClient authClient) {
73 this.baseUrl = baseUrl;
74 this.commonHeaders = initCommonHeaders();
78 public MsoResponseWrapper createSvcInstance(RequestDetails requestDetails, String endpoint) {
79 String methodName = "createSvcInstance ";
80 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
81 String path = baseUrl + endpoint;
83 return createInstance(requestDetails, path);
87 public MsoResponseWrapper createE2eSvcInstance(Object requestDetails, String endpoint) {
88 String methodName = "createE2eSvcInstance ";
89 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
90 String path = baseUrl + endpoint;
92 return createInstance(requestDetails, path);
96 public MsoResponseWrapper createVnf(RequestDetails requestDetails, String endpoint) {
98 String methodName = "createVnf";
99 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
100 String path = baseUrl + endpoint;
102 return createInstance(requestDetails, path);
106 public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String endpoint) {
108 String methodName = "createNwInstance";
109 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
110 String path = baseUrl + endpoint;
112 return createInstance(requestDetails, path);
116 public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
117 String methodName = "createVolumeGroupInstance";
118 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
119 String path = baseUrl + endpoint;
121 return createInstance(requestDetails, path);
125 public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String endpoint) {
126 String methodName = "createVfModuleInstance";
127 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
128 String path = baseUrl + endpoint;
130 return createInstance(requestDetails, path);
134 public MsoResponseWrapper scaleOutVFModuleInstance(RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
135 String methodName = "scaleOutVFModuleInstance";
136 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
137 String path = baseUrl + endpoint;
138 return createInstance(requestDetailsWrapper, path);
142 public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
143 String methodName = "createConfigurationInstance";
144 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
145 String path = baseUrl + endpoint;
147 return createInstance(requestDetailsWrapper, path);
151 public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String endpoint) {
152 String methodName = "deleteE2eSvcInstance";
153 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
154 String path = baseUrl + endpoint;
155 return deleteInstance(requestDetails, path);
159 public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint) {
160 String methodName = "deleteSvcInstance";
161 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
162 String path = baseUrl + endpoint;
163 return deleteInstance(requestDetails, path);
167 public MsoResponseWrapper unassignSvcInstance(RequestDetails requestDetails, String endpoint) {
168 String methodName = "unassignSvcInstance";
169 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
170 String path = baseUrl + endpoint;
172 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
173 return MsoUtil.wrapResponse(response);
177 public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) {
178 String methodName = "deleteVnf";
179 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
180 String path = baseUrl + endpoint;
182 return deleteInstance(requestDetails, path);
186 public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) {
187 String methodName = "deleteVfModule";
188 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
189 String path = baseUrl + endpoint;
191 return deleteInstance(requestDetails, path);
195 public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
196 String methodName = "deleteVolumeGroupInstance";
197 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
198 String path = baseUrl + endpoint;
200 return deleteInstance(requestDetails, path);
204 public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) {
205 String methodName = "deleteNwInstance";
206 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
207 String path = baseUrl + endpoint;
209 return deleteInstance(requestDetails, path);
213 public MsoResponseWrapper getOrchestrationRequest(String t, String sourceId, String endpoint, RestObject restObject, boolean warpException) {
214 String path = baseUrl + endpoint;
216 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
217 return MsoUtil.wrapResponse(response);
221 public MsoResponseWrapper getOrchestrationRequest(String endpoint) {
222 String path = baseUrl + endpoint;
224 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
225 return MsoUtil.wrapResponse(response);
229 public MsoResponseWrapper getManualTasksByRequestId(String t, String sourceId, String endpoint, RestObject restObject) {
230 String methodName = "getManualTasksByRequestId";
231 logger.debug(methodName + START);
234 String path = baseUrl + endpoint;
236 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
237 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
239 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
242 } catch (Exception e) {
243 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
244 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
250 public MsoResponseWrapper completeManualTask(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject restObject) {
251 String methodName = "completeManualTask";
252 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Complete ");
254 String path = baseUrl + endpoint;
256 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
257 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
259 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
262 } catch (Exception e) {
263 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
264 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
270 public MsoResponseWrapper replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
271 String methodName = "replaceVnf";
272 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
273 String path = baseUrl + endpoint;
274 return replaceInstance(requestDetails, path);
278 public MsoResponseWrapper deleteConfiguration(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String pmc_endpoint) {
279 String methodName = "deleteConfiguration";
280 logger.debug(EELFLoggerDelegate.debugLogger,
282 String path = baseUrl + pmc_endpoint;
284 return deleteInstance(requestDetailsWrapper, path);
288 public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String endpoint) {
289 String methodName = "setConfigurationActiveStatus";
290 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
293 String path = baseUrl + endpoint;
295 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
296 + methodName + " calling change configuration active status, path =[" + path + "]");
297 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
298 return MsoUtil.wrapResponse(response);
299 } catch (Exception e) {
300 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
301 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
307 public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String endpoint) {
308 String methodName = "setPortOnConfigurationStatus";
309 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
312 String path = baseUrl + endpoint;
313 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
314 + methodName + " calling change port configuration status, path =[" + path + "]");
315 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
316 return MsoUtil.wrapResponse(response);
317 } catch (Exception e) {
318 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
319 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
325 public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) {
326 String path = baseUrl + endpoint;
327 HttpResponse<RequestReferencesContainer> response = client.post(path, commonHeaders, requestDetails, RequestReferencesContainer.class);
328 return MsoUtil.wrapResponse(response);
331 public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
332 String methodName = "replaceInstance";
333 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
336 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Replace VNF, path =[" + path + "]");
337 RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
338 requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
340 HttpResponse<String> response = client.post(path, commonHeaders, requestDetailsWrapper, String.class);
341 MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(response);
342 int status = msoResponseWrapperObject.getStatus();
344 logger.debug(EELFLoggerDelegate.debugLogger, methodName +
345 ",post succeeded, msoResponseWrapperObject response:" + msoResponseWrapperObject.getResponse());
347 logger.error(EELFLoggerDelegate.debugLogger, methodName +
348 ": post failed, msoResponseWrapperObject status" + status + ", response:" + msoResponseWrapperObject.getResponse());
351 return msoResponseWrapperObject;
353 } catch (Exception e) {
354 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
355 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
362 public MsoResponseWrapper updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
363 String methodName = "updateVnf";
364 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
365 String path = baseUrl + endpoint;
367 RequestDetailsWrapper wrapper = new RequestDetailsWrapper();
368 wrapper.requestDetails = new MsoRequestDetails(requestDetails);
369 return updateInstance(requestDetails, path);
372 public MsoResponseWrapper updateInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
373 String methodName = "updateInstance";
374 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
377 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Delete, path =[" + path + "]");
379 RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
380 requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
381 HttpResponse<String> response = client.put(path, commonHeaders, requestDetailsWrapper, String.class);
382 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
384 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
387 } catch (Exception e) {
388 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
389 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
395 public void setServiceInstanceStatus(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject<String> restObject) {
396 String methodName = "activateServiceInstance";
397 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " start ");
399 String path = baseUrl + endpoint;
400 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
401 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
402 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w =" + w.getResponse());
404 } catch (Exception e) {
405 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
406 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
412 public MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String endpoint) {
413 String methodName = "removeRelationshipFromServiceInstance";
414 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
417 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Remove relationship from service instance, path =[" + endpoint + "]");
418 String path = baseUrl + endpoint;
419 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
420 return MsoUtil.wrapResponse(response);
421 } catch (Exception e) {
422 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
423 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
429 public MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String addRelationshipsPath) {
430 String methodName = "addRelationshipToServiceInstance";
431 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
434 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Add relationship to service instance, path =[" + addRelationshipsPath + "]");
435 String path = baseUrl + addRelationshipsPath;
437 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
438 return MsoUtil.wrapResponse(response);
439 } catch (Exception e) {
440 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
441 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
447 public <T> HttpResponse<T> get(String endpoint, Class<T> responseClass) {
448 String path = baseUrl + endpoint;
449 return client.get(path, commonHeaders, new HashMap<>(), responseClass);
453 public <T> HttpResponse<T> post(String endpoint, RequestDetailsWrapper<?> requestDetailsWrapper, Class<T> responseClass) {
454 String path = baseUrl + endpoint;
456 return client.post(path, commonHeaders, requestDetailsWrapper, responseClass);
460 private MsoResponseWrapper createInstance(Object request, String path) {
461 String methodName = "createInstance";
462 logger.debug(methodName + START);
465 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
466 return MsoUtil.wrapResponse(response);
467 } catch (Exception e) {
468 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
469 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
477 * @param request the request
478 * @param path the path
479 * @return the mso response wrapper
480 * @throws Exception the exception
482 private MsoResponseWrapper deleteInstance(Object request, String path) {
483 String methodName = "deleteInstance";
484 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
487 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Delete, path =[" + path + "]");
489 HttpResponse<String> response = client.delete(path, commonHeaders, request, String.class);
490 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
492 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
495 } catch (Exception e) {
496 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
497 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
503 private Map<String, String> initCommonHeaders() {
504 String username = SystemProperties.getProperty(MsoProperties.MSO_USER_NAME);
505 String password = SystemProperties.getProperty(MsoProperties.MSO_PASSWORD);
506 String decrypted_password = Password.deobfuscate(password);
508 String authString = username + ":" + decrypted_password;
510 byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
511 String authStringEnc = new String(authEncBytes);
513 Map<String, String> map = new HashMap<>();
514 map.put(HttpHeaders.AUTHORIZATION, "Basic " + authStringEnc);
515 map.put(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
516 map.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
517 map.put(X_FROM_APP_ID, SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME));
518 map.put(SystemProperties.ECOMP_REQUEST_ID, Logging.extractOrGenerateRequestId());
519 return ImmutableMap.copyOf(map);