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 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.changeManagement.MsoRequestDetails;
30 import org.onap.vid.changeManagement.RequestDetailsWrapper;
31 import org.onap.vid.client.SyncRestClient;
32 import org.onap.vid.model.RequestReferencesContainer;
33 import org.onap.vid.mso.*;
34 import org.onap.vid.utils.Logging;
36 import javax.ws.rs.core.HttpHeaders;
37 import javax.ws.rs.core.MediaType;
38 import java.text.DateFormat;
39 import java.text.SimpleDateFormat;
40 import java.util.Date;
41 import java.util.HashMap;
46 * Created by pickjonathan on 21/06/2017.
48 public class MsoRestClientNew extends RestMsoImplementation 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, methodName + START);
163 String path = baseUrl + endpoint;
165 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
166 return MsoUtil.wrapResponse(response);
170 public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) {
171 String methodName = "deleteVnf";
172 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
173 String path = baseUrl + endpoint;
175 return deleteInstance(requestDetails, path);
179 public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) {
180 String methodName = "deleteVfModule";
181 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
182 String path = baseUrl + endpoint;
184 return deleteInstance(requestDetails, path);
188 public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
189 String methodName = "deleteVolumeGroupInstance";
190 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
191 String path = baseUrl + endpoint;
193 return deleteInstance(requestDetails, path);
197 public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) {
198 String methodName = "deleteNwInstance";
199 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
200 String path = baseUrl + endpoint;
202 return deleteInstance(requestDetails, path);
206 public MsoResponseWrapper getOrchestrationRequest(String t, String sourceId, String endpoint, RestObject restObject, boolean warpException) {
207 String path = baseUrl + endpoint;
209 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
210 return MsoUtil.wrapResponse(response);
214 public MsoResponseWrapper getOrchestrationRequest(String endpoint) {
215 String path = baseUrl + endpoint;
217 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
218 return MsoUtil.wrapResponse(response);
221 public MsoResponseWrapper getManualTasks(String endpoint) {
222 String path = baseUrl + endpoint;
224 HttpResponse<String> response = client.get(path, commonHeaders, new HashMap<>(), String.class);
225 return MsoUtil.wrapResponse(response);
228 public MsoResponseWrapper getManualTasksByRequestId(String t, String sourceId, String endpoint, RestObject restObject) {
229 String methodName = "getManualTasksByRequestId";
230 logger.debug(methodName + START);
233 String path = baseUrl + endpoint;
235 MsoResponseWrapper w =getManualTasks(path);
236 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
240 } catch (Exception e) {
241 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
242 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
248 public MsoResponseWrapper completeManualTask(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject restObject) {
249 String methodName = "completeManualTask";
250 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Complete ");
252 String path = baseUrl + endpoint;
254 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
255 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
257 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
260 } catch (Exception e) {
261 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
262 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
268 public MsoResponseWrapper replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
269 String methodName = "replaceVnf";
270 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
271 String path = baseUrl + endpoint;
272 return replaceInstance(requestDetails, path);
276 public MsoResponseWrapper deleteConfiguration(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String pmc_endpoint) {
277 String methodName = "deleteConfiguration";
278 logger.debug(EELFLoggerDelegate.debugLogger,
280 String path = baseUrl + pmc_endpoint;
282 return deleteInstance(requestDetailsWrapper, path);
286 public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String endpoint) {
287 String methodName = "setConfigurationActiveStatus";
288 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
291 String path = baseUrl + endpoint;
293 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
294 + methodName + " calling change configuration active status, path =[" + path + "]");
295 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
296 return MsoUtil.wrapResponse(response);
297 } catch (Exception e) {
298 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
299 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
305 public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String endpoint) {
306 String methodName = "setPortOnConfigurationStatus";
307 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
310 String path = baseUrl + endpoint;
311 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
312 + methodName + " calling change port configuration status, path =[" + path + "]");
313 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
314 return MsoUtil.wrapResponse(response);
315 } catch (Exception e) {
316 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
317 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
323 public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) {
324 String path = baseUrl + endpoint;
325 HttpResponse<RequestReferencesContainer> response = client.post(path, commonHeaders, requestDetails, RequestReferencesContainer.class);
326 return MsoUtil.wrapResponse(response);
329 public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
330 String methodName = "replaceInstance";
331 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
334 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Replace VNF, path =[" + path + "]");
335 RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
336 requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
338 HttpResponse<String> response = client.post(path, commonHeaders, requestDetailsWrapper, String.class);
339 MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(response);
340 int status = msoResponseWrapperObject.getStatus();
342 logger.debug(EELFLoggerDelegate.debugLogger, methodName +
343 ",post succeeded, msoResponseWrapperObject response:" + msoResponseWrapperObject.getResponse());
345 logger.error(EELFLoggerDelegate.debugLogger, methodName +
346 ": post failed, msoResponseWrapperObject status" + status + ", response:" + msoResponseWrapperObject.getResponse());
349 return msoResponseWrapperObject;
351 } catch (Exception e) {
352 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
353 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
360 public MsoResponseWrapper updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
361 String methodName = "updateVnf";
362 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
363 String path = baseUrl + endpoint;
365 RequestDetailsWrapper wrapper = new RequestDetailsWrapper();
366 wrapper.requestDetails = new MsoRequestDetails(requestDetails);
367 return updateInstance(requestDetails, path);
370 public MsoResponseWrapper updateInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
371 String methodName = "updateInstance";
372 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
375 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Delete, path =[" + path + "]");
377 RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
378 requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
379 HttpResponse<String> response = client.put(path, commonHeaders, requestDetailsWrapper, String.class);
380 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
382 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
385 } catch (Exception e) {
386 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
387 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
393 public void setServiceInstanceStatus(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject<String> restObject) {
394 String methodName = "activateServiceInstance";
395 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " start ");
397 String path = baseUrl + endpoint;
398 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
399 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
400 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w =" + w.getResponse());
402 } catch (Exception e) {
403 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
404 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
410 public MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String endpoint) {
411 String methodName = "removeRelationshipFromServiceInstance";
412 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
415 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Remove relationship from service instance, path =[" + endpoint + "]");
416 String path = baseUrl + endpoint;
417 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
418 return MsoUtil.wrapResponse(response);
419 } catch (Exception e) {
420 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
421 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
427 public MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String addRelationshipsPath) {
428 String methodName = "addRelationshipToServiceInstance";
429 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
432 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Add relationship to service instance, path =[" + addRelationshipsPath + "]");
433 String path = baseUrl + addRelationshipsPath;
435 HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
436 return MsoUtil.wrapResponse(response);
437 } catch (Exception e) {
438 logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
439 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
445 public <T> HttpResponse<T> get(String endpoint, Class<T> responseClass) {
446 String path = baseUrl + endpoint;
447 return client.get(path, commonHeaders, new HashMap<>(), responseClass);
451 public <T> HttpResponse<T> post(String endpoint, RequestDetailsWrapper<?> requestDetailsWrapper, Class<T> responseClass) {
452 String path = baseUrl + endpoint;
454 return client.post(path, commonHeaders, requestDetailsWrapper, responseClass);
458 private MsoResponseWrapper createInstance(Object request, String path) {
459 String methodName = "createInstance";
460 logger.debug(methodName + START);
463 HttpResponse<String> response = client.post(path, commonHeaders, request, String.class);
464 return MsoUtil.wrapResponse(response);
465 } catch (Exception e) {
466 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
467 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
475 * @param request the request
476 * @param path the path
477 * @return the mso response wrapper
478 * @throws Exception the exception
480 private MsoResponseWrapper deleteInstance(Object request, String path) {
481 String methodName = "deleteInstance";
482 logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
485 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Delete, path =[" + path + "]");
487 HttpResponse<String> response = client.delete(path, commonHeaders, request, String.class);
488 MsoResponseWrapper w = MsoUtil.wrapResponse(response);
490 logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
493 } catch (Exception e) {
494 logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
495 logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
501 private Map<String, String> initCommonHeaders() {
502 String username = SystemProperties.getProperty(MsoProperties.MSO_USER_NAME);
503 String password = SystemProperties.getProperty(MsoProperties.MSO_PASSWORD);
504 String decrypted_password = Password.deobfuscate(password);
506 String authString = username + ":" + decrypted_password;
508 byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
509 String authStringEnc = new String(authEncBytes);
511 Map<String, String> map = new HashMap<>();
512 map.put(HttpHeaders.AUTHORIZATION, "Basic " + authStringEnc);
513 map.put(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
514 map.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
515 map.put(X_FROM_APP_ID, SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME));
516 map.put(SystemProperties.ECOMP_REQUEST_ID, Logging.extractOrGenerateRequestId());
517 return ImmutableMap.copyOf(map);