2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2018 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.util.HashMap;
27 import javax.ws.rs.core.HttpHeaders;
28 import javax.ws.rs.core.MediaType;
29 import org.apache.commons.codec.binary.Base64;
30 import org.eclipse.jetty.util.security.Password;
31 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
32 import org.onap.portalsdk.core.util.SystemProperties;
33 import org.onap.vid.changeManagement.MsoRequestDetails;
34 import org.onap.vid.changeManagement.RequestDetailsWrapper;
35 import org.onap.vid.client.SyncRestClient;
36 import org.onap.vid.model.RequestReferencesContainer;
37 import org.onap.vid.mso.*;
39 import java.text.DateFormat;
40 import java.text.SimpleDateFormat;
41 import java.util.Date;
42 import org.onap.vid.utils.Logging;
46 * Created by pickjonathan on 21/06/2017.
48 public class MsoRestClientNew implements MsoInterface {
51 * The Constant dateFormat.
53 public static final String X_FROM_APP_ID = "X-FromAppId";
54 final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
55 private static final String START = " start";
56 private final SyncRestClient client;
57 private final String baseUrl;
58 private final Map<String, String> commonHeaders;
62 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoRestClientNew.class);
64 public MsoRestClientNew(SyncRestClient client, String baseUrl) {
66 this.baseUrl = baseUrl;
67 this.commonHeaders = initCommonHeaders();
71 public MsoResponseWrapper createSvcInstance(RequestDetails requestDetails, String endpoint) {
72 String methodName = "createSvcInstance ";
73 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
74 String path = baseUrl + endpoint;
76 return createInstance(requestDetails, path);
80 public MsoResponseWrapper createE2eSvcInstance(Object requestDetails, String endpoint) {
81 String methodName = "createE2eSvcInstance ";
82 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
83 String path = baseUrl + endpoint;
85 return createInstance(requestDetails, path);
89 public MsoResponseWrapper createVnf(RequestDetails requestDetails, String endpoint) {
91 String methodName = "createVnf";
92 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
93 String path = baseUrl + endpoint;
95 return createInstance(requestDetails, path);
99 public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String endpoint) {
101 String methodName = "createNwInstance";
102 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
103 String path = baseUrl + endpoint;
105 return createInstance(requestDetails, path);
109 public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
110 String methodName = "createVolumeGroupInstance";
111 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
112 String path = baseUrl + endpoint;
114 return createInstance(requestDetails, path);
118 public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String endpoint) {
119 String methodName = "createVfModuleInstance";
120 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
121 String path = baseUrl + endpoint;
123 return createInstance(requestDetails, path);
127 public MsoResponseWrapper scaleOutVFModuleInstance(RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
128 String methodName = "scaleOutVFModuleInstance";
129 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
130 String path = baseUrl + endpoint;
131 return createInstance(requestDetailsWrapper, path);
135 public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
136 String methodName = "createConfigurationInstance";
137 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
138 String path = baseUrl + endpoint;
140 return createInstance(requestDetailsWrapper, path);
144 public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String endpoint) {
145 String methodName = "deleteE2eSvcInstance";
146 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
147 String path = baseUrl + endpoint;
148 return deleteInstance(requestDetails, path);
152 public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint) {
153 String methodName = "deleteSvcInstance";
154 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
155 String path = baseUrl + endpoint;
156 return deleteInstance(requestDetails, path);
160 public MsoResponseWrapper unassignSvcInstance(RequestDetails requestDetails, String endpoint) {
161 String methodName = "unassignSvcInstance";
162 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
163 HttpResponse<String> response = client.post(endpoint, commonHeaders, requestDetails, String.class);
164 return MsoUtil.wrapResponse(response);
168 public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) {
169 String methodName = "deleteVnf";
170 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
171 String path = baseUrl + endpoint;
173 return deleteInstance(requestDetails, path);
177 public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) {
178 String methodName = "deleteVfModule";
179 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
180 String path = baseUrl + endpoint;
182 return deleteInstance(requestDetails, path);
186 public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
187 String methodName = "deleteVolumeGroupInstance";
188 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
189 String path = baseUrl + endpoint;
191 return deleteInstance(requestDetails, path);
195 public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) {
196 String methodName = "deleteNwInstance";
197 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
198 String path = baseUrl + endpoint;
200 return deleteInstance(requestDetails, path);
204 public MsoResponseWrapper getOrchestrationRequest(String endpoint) {
205 String path = baseUrl + endpoint;
207 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
208 return MsoUtil.wrapResponse(response);
211 public MsoResponseWrapper getManualTasks(String endpoint) {
212 String path = baseUrl + endpoint;
214 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
215 return MsoUtil.wrapResponse(response);
218 public MsoResponseWrapper getOrchestrationRequestsForDashboard(String t, String sourceId, String path, RestObject restObject) {
219 String methodName = "getOrchestrationRequestsForDashboard";
220 logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
223 MsoResponseWrapper w = getOrchestrationRequest(path);
224 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
228 } catch (Exception e) {
229 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
230 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
235 public MsoResponseWrapper getManualTasksByRequestId(String t, String sourceId, String endpoint, RestObject restObject) {
236 String methodName = "getManualTasksByRequestId";
237 logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
240 String path = baseUrl + endpoint;
242 MsoResponseWrapper w =getManualTasks(path);
243 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
247 } catch (Exception e) {
248 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
249 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
255 public MsoResponseWrapper completeManualTask(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject restObject) {
256 String methodName = "completeManualTask";
257 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Complete ");
259 String path = baseUrl + endpoint;
261 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
262 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
264 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
267 } catch (Exception e) {
268 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
269 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
275 public MsoResponseWrapper replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
276 String methodName = "replaceVnf";
277 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
278 String path = baseUrl + endpoint;
279 return replaceInstance(requestDetails, path);
283 public MsoResponseWrapper deleteConfiguration(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String pmc_endpoint) {
284 String methodName = "deleteConfiguration";
285 logger.debug(EELFLoggerDelegate.debugLogger,
286 dateFormat.format(new Date()) + "<== " + methodName + START);
287 String path = baseUrl + pmc_endpoint;
289 return deleteInstance(requestDetailsWrapper, path);
293 public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String endpoint) {
294 String methodName = "setConfigurationActiveStatus";
295 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
298 String path = baseUrl + endpoint;
300 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
301 + methodName + " calling change configuration active status, path =[" + path + "]");
302 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
303 return MsoUtil.wrapResponse(response);
304 } catch (Exception e) {
305 logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
306 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
312 public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String endpoint) {
313 String methodName = "setPortOnConfigurationStatus";
314 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
317 String path = baseUrl + endpoint;
318 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
319 + methodName + " calling change port configuration status, path =[" + path + "]");
320 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
321 return MsoUtil.wrapResponse(response);
322 } catch (Exception e) {
323 logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
324 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
330 public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) {
331 String path = baseUrl + endpoint;
332 HttpResponse<RequestReferencesContainer> response = client.post(path, commonHeaders, requestDetails, RequestReferencesContainer.class);
333 return MsoUtil.wrapResponse(response);
336 public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
337 String methodName = "replaceInstance";
338 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
341 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Replace VNF, path =[" + path + "]");
343 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
344 MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(response);
345 int status = msoResponseWrapperObject.getStatus();
347 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName +
348 ",post succeeded, msoResponseWrapperObject response:" + msoResponseWrapperObject.getResponse());
350 logger.error(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName +
351 ": post failed, msoResponseWrapperObject status" + status + ", response:" + msoResponseWrapperObject.getResponse());
355 return msoResponseWrapperObject;
357 } catch (Exception e) {
358 logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
359 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
366 public MsoResponseWrapper updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
367 String methodName = "updateVnf";
368 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
369 String path = baseUrl + endpoint;
371 RequestDetailsWrapper wrapper = new RequestDetailsWrapper();
372 wrapper.requestDetails = new MsoRequestDetails(requestDetails);
373 return updateInstance(requestDetails, path);
376 public MsoResponseWrapper updateInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
377 String methodName = "updateInstance";
378 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
381 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
383 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
384 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
386 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
389 } catch (Exception e) {
390 logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
391 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
397 public void setServiceInstanceStatus(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject<String> restObject) {
398 String methodName = "activateServiceInstance";
399 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start ");
401 String path = baseUrl + endpoint;
402 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
403 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
404 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w =" + w.getResponse());
406 } catch (Exception e) {
407 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
408 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
414 public MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String endpoint) {
415 String methodName = "removeRelationshipFromServiceInstance";
416 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
419 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Remove relationship from service instance, path =[" + endpoint + "]");
420 String path = baseUrl + endpoint;
421 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
422 return MsoUtil.wrapResponse(response);
423 } catch (Exception e) {
424 logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
425 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
431 public MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String addRelationshipsPath) {
432 String methodName = "addRelationshipToServiceInstance";
433 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + START);
436 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Add relationship to service instance, path =[" + addRelationshipsPath + "]");
437 String path = baseUrl + addRelationshipsPath;
439 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
440 return MsoUtil.wrapResponse(response);
441 } catch (Exception e) {
442 logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
443 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
449 public <T> HttpResponse<T> get(String path, Class<T> responseClass) {
450 return client.get(path, commonHeaders, new HashMap<>(), responseClass);
454 public <T> HttpResponse<T> post(String path, RequestDetailsWrapper<?> requestDetailsWrapper,
455 Class<T> responseClass) {
456 return client.post(path, commonHeaders, requestDetailsWrapper, responseClass);
460 private MsoResponseWrapper createInstance(Object request, String endpoint) {
461 String methodName = "createInstance";
462 logger.debug(dateFormat.format(new Date()) + "<== " + methodName + START);
465 HttpResponse<String> response = client.post(endpoint, commonHeaders, request, String.class);
466 return MsoUtil.wrapResponse(response);
467 } catch (Exception e) {
468 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
469 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + 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, dateFormat.format(new Date()) + "<== " + methodName + START);
487 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
489 HttpResponse<String> response = client.delete(path, commonHeaders, String.class);
490 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
492 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
495 } catch (Exception e) {
496 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
497 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + 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);