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 org.apache.commons.codec.binary.Base64;
26 import org.eclipse.jetty.util.security.Password;
27 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
28 import org.onap.portalsdk.core.util.SystemProperties;
29 import org.onap.vid.aai.util.HttpsAuthClient;
30 import org.onap.vid.changeManagement.MsoRequestDetails;
31 import org.onap.vid.changeManagement.RequestDetailsWrapper;
32 import org.onap.vid.client.SyncRestClient;
33 import org.onap.vid.model.RequestReferencesContainer;
34 import org.onap.vid.mso.*;
35 import org.onap.vid.utils.Logging;
37 import javax.ws.rs.core.HttpHeaders;
38 import javax.ws.rs.core.MediaType;
39 import java.text.DateFormat;
40 import java.text.SimpleDateFormat;
41 import java.util.Date;
42 import java.util.HashMap;
47 * Created by pickjonathan on 21/06/2017.
49 public class MsoRestClientNew extends RestMsoImplementation implements MsoInterface {
52 * The Constant dateFormat.
54 public static final String X_FROM_APP_ID = "X-FromAppId";
55 final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
56 private static final String START = " start";
57 private final SyncRestClient client;
58 private final String baseUrl;
59 private final Map<String, String> commonHeaders;
63 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoRestClientNew.class);
65 public MsoRestClientNew(SyncRestClient client, String baseUrl, HttpsAuthClient authClient) {
68 this.baseUrl = baseUrl;
69 this.commonHeaders = initCommonHeaders();
73 public MsoResponseWrapper createSvcInstance(RequestDetails requestDetails, String endpoint) {
74 String methodName = "createSvcInstance ";
75 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
76 String path = baseUrl + endpoint;
78 return createInstance(requestDetails, path);
82 public MsoResponseWrapper createE2eSvcInstance(Object requestDetails, String endpoint) {
83 String methodName = "createE2eSvcInstance ";
84 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
85 String path = baseUrl + endpoint;
87 return createInstance(requestDetails, path);
91 public MsoResponseWrapper createVnf(RequestDetails requestDetails, String endpoint) {
93 String methodName = "createVnf";
94 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
95 String path = baseUrl + endpoint;
97 return createInstance(requestDetails, path);
101 public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String endpoint) {
103 String methodName = "createNwInstance";
104 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
105 String path = baseUrl + endpoint;
107 return createInstance(requestDetails, path);
111 public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
112 String methodName = "createVolumeGroupInstance";
113 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
114 String path = baseUrl + endpoint;
116 return createInstance(requestDetails, path);
120 public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String endpoint) {
121 String methodName = "createVfModuleInstance";
122 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
123 String path = baseUrl + endpoint;
125 return createInstance(requestDetails, path);
129 public MsoResponseWrapper scaleOutVFModuleInstance(RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
130 String methodName = "scaleOutVFModuleInstance";
131 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
132 String path = baseUrl + endpoint;
133 return createInstance(requestDetailsWrapper, path);
137 public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
138 String methodName = "createConfigurationInstance";
139 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
140 String path = baseUrl + endpoint;
142 return createInstance(requestDetailsWrapper, path);
146 public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String endpoint) {
147 String methodName = "deleteE2eSvcInstance";
148 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
149 String path = baseUrl + endpoint;
150 return deleteInstance(requestDetails, path);
154 public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint) {
155 String methodName = "deleteSvcInstance";
156 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
157 String path = baseUrl + endpoint;
158 return deleteInstance(requestDetails, path);
162 public MsoResponseWrapper unassignSvcInstance(RequestDetails requestDetails, String endpoint) {
163 String methodName = "unassignSvcInstance";
164 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
165 String path = baseUrl + endpoint;
167 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
168 return MsoUtil.wrapResponse(response);
172 public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) {
173 String methodName = "deleteVnf";
174 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
175 String path = baseUrl + endpoint;
177 return deleteInstance(requestDetails, path);
181 public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) {
182 String methodName = "deleteVfModule";
183 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
184 String path = baseUrl + endpoint;
186 return deleteInstance(requestDetails, path);
190 public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
191 String methodName = "deleteVolumeGroupInstance";
192 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
193 String path = baseUrl + endpoint;
195 return deleteInstance(requestDetails, path);
199 public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) {
200 String methodName = "deleteNwInstance";
201 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
202 String path = baseUrl + endpoint;
204 return deleteInstance(requestDetails, path);
208 public MsoResponseWrapper getOrchestrationRequest(String t, String sourceId, String endpoint, RestObject restObject, boolean warpException) {
209 String path = baseUrl + endpoint;
211 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
212 return MsoUtil.wrapResponse(response);
216 public MsoResponseWrapper getOrchestrationRequest(String endpoint) {
217 String path = baseUrl + endpoint;
219 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
220 return MsoUtil.wrapResponse(response);
223 public MsoResponseWrapper getManualTasks(String endpoint) {
224 String path = baseUrl + endpoint;
226 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
227 return MsoUtil.wrapResponse(response);
230 public MsoResponseWrapper getManualTasksByRequestId(String t, String sourceId, String endpoint, RestObject restObject) {
231 String methodName = "getManualTasksByRequestId";
232 logger.debug(methodName + START);
235 String path = baseUrl + endpoint;
237 MsoResponseWrapper w =getManualTasks(path);
238 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);