MsoRestClientNew not extends RestMsoImplementation
[vid.git] / vid-app-common / src / main / java / org / onap / vid / mso / rest / MsoRestClientNew.java
index 14761ca..6d7f74f 100644 (file)
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 - 2019 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.vid.mso.rest;
 
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.vid.changeManagement.MsoRequestDetails;
-import org.onap.vid.changeManagement.RequestDetailsWrapper;
-import org.onap.vid.model.RequestReferencesContainer;
-import org.onap.vid.mso.*;
+import static org.onap.vid.logging.Headers.PARTNER_NAME;
+import static org.onap.vid.utils.Logging.ONAP_REQUEST_ID_HEADER_KEY;
 
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import io.joshworks.restclient.http.HttpResponse;
+import io.joshworks.restclient.http.JsonNode;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import org.apache.commons.codec.binary.Base64;
+import org.eclipse.jetty.util.security.Password;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.aai.HttpResponseWithRequestInfo;
+import org.onap.vid.changeManagement.MsoRequestDetails;
+import org.onap.vid.changeManagement.RequestDetailsWrapper;
+import org.onap.vid.changeManagement.WorkflowRequestDetail;
+import org.onap.vid.client.SyncRestClient;
+import org.onap.vid.model.RequestReferencesContainer;
+import org.onap.vid.model.SOWorkflowList;
+import org.onap.vid.mso.MsoInterface;
+import org.onap.vid.mso.MsoProperties;
+import org.onap.vid.mso.MsoResponseWrapper;
+import org.onap.vid.mso.MsoResponseWrapperInterface;
+import org.onap.vid.mso.MsoUtil;
+import org.onap.vid.mso.RestObject;
+import org.onap.vid.utils.Logging;
+import org.onap.vid.utils.SystemPropertiesWrapper;
+import org.springframework.http.HttpMethod;
 
 
 /**
  * Created by pickjonathan on 21/06/2017.
  */
-public class MsoRestClientNew extends RestMsoImplementation implements MsoInterface {
+public class MsoRestClientNew implements MsoInterface {
 
     /**
      * The Constant dateFormat.
      */
+    public static final String X_FROM_APP_ID = "X-FromAppId";
     final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
-    private final String ORIGINAL_REQUEST_ID = "originalRequestId";
+    private static final String START = " start";
+    private final SyncRestClient client;
+    private final String baseUrl;
+    private final SystemPropertiesWrapper systemProperties;
+    private final Map<String, String> commonHeaders;
+
     /**
      * The logger.
      */
     EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoRestClientNew.class);
 
+    public MsoRestClientNew(SyncRestClient client, String baseUrl, SystemPropertiesWrapper systemPropertiesWrapper) {
+        this.client = client;
+        this.baseUrl = baseUrl;
+        this.systemProperties = systemPropertiesWrapper;
+        this.commonHeaders = initCommonHeaders();
+    }
+
     @Override
-    public MsoResponseWrapper createSvcInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createSvcInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "createSvcInstance ";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
     
     @Override
-    public MsoResponseWrapper createE2eSvcInstance(Object requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createE2eSvcInstance(Object requestDetails, String endpoint) {
         String methodName = "createE2eSvcInstance ";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper createVnf(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createVnf(RequestDetails requestDetails, String endpoint) {
 
         String methodName = "createVnf";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String endpoint) {
 
         String methodName = "createNwInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "createVolumeGroupInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "createVfModuleInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+
+        return createInstance(requestDetails, path);
+    }
 
-        return createInstance(requestDetails, endpoint);
+    @Override
+    public MsoResponseWrapper scaleOutVFModuleInstance(RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
+        String methodName = "scaleOutVFModuleInstance";
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+        return createInstance(requestDetailsWrapper, path);
     }
 
     @Override
-    public MsoResponseWrapper createConfigurationInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper createConfigurationInstance(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String endpoint) {
         String methodName = "createConfigurationInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return createInstance(requestDetails, endpoint);
+        return createInstance(requestDetailsWrapper, path);
     }
 
     @Override
-    public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper deleteE2eSvcInstance(Object requestDetails, String endpoint) {
         String methodName = "deleteE2eSvcInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
-
-        return deleteInstance(requestDetails, endpoint);
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+        return deleteInstance(requestDetails, path);
     }
-    
+
     @Override
-    public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteSvcInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+        return deleteInstance(requestDetails, path);
+    }
 
-        return deleteInstance(requestDetails, endpoint);
+    @Override
+    public MsoResponseWrapper unassignSvcInstance(RequestDetails requestDetails, String endpoint) {
+        String methodName = "unassignSvcInstance";
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+
+        HttpResponse<String> response = client.post(path, getHeaders(), requestDetails, String.class);
+        return MsoUtil.wrapResponse(response);
     }
 
     @Override
-    public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteVnf";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteVfModule";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteVolumeGroupInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "deleteNwInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
 
-        return deleteInstance(requestDetails, endpoint);
+        return deleteInstance(requestDetails, path);
     }
 
     @Override
-    public void getOrchestrationRequest(String t, String sourceId, String endpoint, RestObject restObject) throws Exception {
-        Get(t, sourceId, endpoint, restObject);
-    }
+    public HttpResponseWithRequestInfo<String> getOrchestrationRequest(String endpoint, boolean warpException) {
+        String path = baseUrl + endpoint;
 
-    public void getManualTasks(String t, String sourceId, String endpoint, RestObject restObject) throws Exception {
-        Get(t, sourceId, endpoint, restObject);
+        HttpResponse<String> response = client.get(path, getHeaders(), new HashMap<>(), String.class);
+        return new HttpResponseWithRequestInfo<>(response, path, HttpMethod.GET);
     }
 
+    @Override
+    public MsoResponseWrapper getOrchestrationRequest(String endpoint) {
+        String path = baseUrl + endpoint;
 
-    public MsoResponseWrapper createInstance(Object request, String path) throws Exception {
-        String methodName = "createInstance";
-        logger.debug(dateFormat.format(new Date()) + "<== " + methodName + " start");
-
-        try {
-            RestObject<String> restObjStr = new RestObject<String>();
-
-            String str = new String();
-
-            restObjStr.set(str);
-
-            Post(str, request, "", path, restObjStr);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObjStr);
-
-            return w;
-        } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            throw e;
-        }
+        HttpResponse<String> response = client.get(path, getHeaders(), new HashMap<>(), String.class);
+        return MsoUtil.wrapResponse(response);
     }
 
-
-    /**
-     * Delete instance.
-     *
-     * @param request the request
-     * @param path    the path
-     * @return the mso response wrapper
-     * @throws Exception the exception
-     */
-    public MsoResponseWrapper deleteInstance(Object request, String path) throws Exception {
-        String methodName = "deleteInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+    @Override
+    public MsoResponseWrapper getManualTasksByRequestId(String t, String sourceId, String endpoint, RestObject restObject) {
+        String methodName = "getManualTasksByRequestId";
+        logger.debug(methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
-
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            Delete(str, request, "", path, restObjStr);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObjStr);
-
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
-            return w;
-
-        } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            throw e;
-        }
+            String path = baseUrl + endpoint;
 
-    }
-
-    public MsoResponseWrapper getOrchestrationRequestsForDashboard(String t, String sourceId, String endpoint, RestObject restObject) throws Exception {
-        String methodName = "getOrchestrationRequestsForDashboard";
-        logger.debug(dateFormat.format(new Date()) + "<== " + methodName + " start");
-
-        try {
-            getOrchestrationRequest(t, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
+            HttpResponse<String> response = client.get(path, getHeaders(), new HashMap<>(), String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
 
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
             return w;
 
         } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
     }
 
-    public MsoResponseWrapper getManualTasksByRequestId(String t, String sourceId, String endpoint, RestObject restObject) throws Exception {
-        String methodName = "getManualTasksByRequestId";
-        logger.debug(dateFormat.format(new Date()) + "<== " + methodName + " start");
-
-        try {
-            getManualTasks(t, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
-
-            return MsoUtil.wrapResponse(restObject);
-
-        } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            throw e;
-        }
-    }
-
-
     @Override
-    public MsoResponseWrapper completeManualTask(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject restObject) throws Exception {
+    public MsoResponseWrapper completeManualTask(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject restObject) {
         String methodName = "completeManualTask";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Complete ");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Complete ");
         try {
+            String path = baseUrl + endpoint;
 
-            Post(t, requestDetails, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
+            HttpResponse<String> response = client.post(path, getHeaders(), requestDetails, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
 
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
             return w;
 
         } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
     }
 
     @Override
-    public MsoResponseWrapper replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper replaceVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
         String methodName = "replaceVnf";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
-        return replaceInstance(requestDetails, endpoint);
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+        return replaceInstance(requestDetails, path);
     }
 
     @Override
-    public MsoResponseWrapper deleteConfiguration(RequestDetails requestDetails, String pmc_endpoint)
-            throws Exception {
+    public MsoResponseWrapper deleteConfiguration(org.onap.vid.mso.rest.RequestDetailsWrapper requestDetailsWrapper, String pmc_endpoint) {
         String methodName = "deleteConfiguration";
         logger.debug(EELFLoggerDelegate.debugLogger,
-                dateFormat.format(new Date()) + "<== " + methodName + " start");
+                methodName + START);
+        String path = baseUrl + pmc_endpoint;
 
-        return deleteInstance(requestDetails, pmc_endpoint);
+        return deleteInstance(requestDetailsWrapper, path);
     }
 
     @Override
-    public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String path) throws Exception {
+    public MsoResponseWrapper setConfigurationActiveStatus(RequestDetails request, String endpoint) {
         String methodName = "setConfigurationActiveStatus";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling change configuration active status, path =[" + path + "]");
+            String path = baseUrl + endpoint;
 
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            Post(str, request, "", path, restObjStr);
-            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(restObjStr);
-
-            return msoResponseWrapperObject;
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
+                  + methodName + " calling change configuration active status, path =[" + path + "]");
+            HttpResponse<String> response = client.post(path, getHeaders(), request, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
-            logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
     }
 
     @Override
-    public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String path) throws Exception {
+    public MsoResponseWrapper setPortOnConfigurationStatus(RequestDetails request, String endpoint) {
         String methodName = "setPortOnConfigurationStatus";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling change port configuration status, path =[" + path + "]");
-
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
-            Post(str, request, "", path, restObjStr);
-            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(restObjStr);
-
-            return msoResponseWrapperObject;
+            String path = baseUrl + endpoint;
+            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== "
+                + methodName + " calling change port configuration status, path =[" + path + "]");
+            HttpResponse<String> response = client.post(path, getHeaders(), request, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
-            logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
     }
 
     @Override
-    public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) throws Exception {
-        RestObject<RequestReferencesContainer> msoResponse = PostForObject(requestDetails, "", endpoint, RequestReferencesContainer.class);
-        return new MsoResponseWrapper2<>(msoResponse);
+    public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) {
+        String path = baseUrl + endpoint;
+        HttpResponse<String> response = client.post(path, getHeaders(), requestDetails, String.class);
+        return MsoUtil.wrapResponse2(response, RequestReferencesContainer.class);
     }
 
-    public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) throws Exception {
+    public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
         String methodName = "replaceInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
         try {
-
-
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Replace VNF, path =[" + path + "]");
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Replace VNF, path =[" + path + "]");
             RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
             requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
 
-            Post(str, requestDetailsWrapper, "", path, restObjStr);
-            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(restObjStr);
+            HttpResponse<String> response = client.post(path, getHeaders(), requestDetailsWrapper, String.class);
+            MsoResponseWrapper msoResponseWrapperObject = MsoUtil.wrapResponse(response);
             int status = msoResponseWrapperObject.getStatus();
             if (status == 202) {
-                logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName +
+                logger.debug(EELFLoggerDelegate.debugLogger, methodName +
                         ",post succeeded, msoResponseWrapperObject response:" + msoResponseWrapperObject.getResponse());
             } else {
-                logger.error(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName +
+                logger.error(EELFLoggerDelegate.debugLogger, methodName +
                         ": post failed, msoResponseWrapperObject status" + status + ", response:" + msoResponseWrapperObject.getResponse());
 
-                // TODO
             }
             return msoResponseWrapperObject;
 
         } catch (Exception e) {
-            logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
 
     }
 
     @Override
-    public MsoResponseWrapper updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper updateVnf(org.onap.vid.changeManagement.RequestDetails requestDetails, String endpoint) {
         String methodName = "updateVnf";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
+        String path = baseUrl + endpoint;
+
         RequestDetailsWrapper wrapper = new RequestDetailsWrapper();
         wrapper.requestDetails = new MsoRequestDetails(requestDetails);
-        return updateInstance(requestDetails, endpoint);
+        return updateInstance(requestDetails, path);
     }
 
-    public MsoResponseWrapper updateInstance(org.onap.vid.changeManagement.RequestDetails request, String path) throws Exception {
+    public MsoResponseWrapper updateInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
         String methodName = "updateInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Delete, path =[" + path + "]");
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = new String();
-            restObjStr.set(str);
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Delete, path =[" + path + "]");
+
             RequestDetailsWrapper requestDetailsWrapper = new RequestDetailsWrapper();
             requestDetailsWrapper.requestDetails = new MsoRequestDetails(request);
-            Put(str, requestDetailsWrapper, "", path, restObjStr);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObjStr);
+            HttpResponse<String> response = client.put(path, getHeaders(), requestDetailsWrapper, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
 
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
             return w;
 
         } catch (Exception e) {
-            logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
 
     }
 
-    public void setServiceInstanceStatus(RequestDetails requestDetails, String t, String sourceId, String endpoint, RestObject<String> restObject) throws Exception {
+    public MsoResponseWrapper setServiceInstanceStatus(RequestDetails requestDetails,
+        String endpoint) {
         String methodName = "activateServiceInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start ");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + " start ");
         try {
-
-            Post(t, requestDetails, sourceId, endpoint, restObject);
-            MsoResponseWrapper w = MsoUtil.wrapResponse(restObject);
-
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w =" + w.getResponse());
+            String path = baseUrl + endpoint;
+            HttpResponse<String> response = client.post(path, getHeaders(), requestDetails, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w =" + w.getResponse());
+            return w;
 
         } catch (Exception e) {
-            logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
     }
 
     @Override
-    public MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String endpoint) throws Exception {
+    public MsoResponseWrapper removeRelationshipFromServiceInstance(RequestDetails requestDetails, String endpoint) {
         String methodName = "removeRelationshipFromServiceInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Remove relationship from service instance, path =[" + endpoint + "]");
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Remove relationship from service instance, path =[" + endpoint + "]");
+            String path = baseUrl + endpoint;
+            HttpResponse<String> response = client.post(path, getHeaders(), requestDetails, String.class);
+            return MsoUtil.wrapResponse(response);
+        } catch (Exception e) {
+            logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
+            throw e;
+        }
+    }
+
+    @Override
+    public MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String addRelationshipsPath) {
+        String methodName = "addRelationshipToServiceInstance";
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
-            RestObject<String> restObjStr = new RestObject<String>();
-            String str = "";
-            restObjStr.set(str);
-            Post(str, requestDetails, "", endpoint, restObjStr);
+        try {
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Add relationship to service instance, path =[" + addRelationshipsPath + "]");
+            String path = baseUrl + addRelationshipsPath;
 
-            return MsoUtil.wrapResponse(restObjStr);
+            HttpResponse<String> response = client.post(path, getHeaders(), requestDetails, String.class);
+            return MsoUtil.wrapResponse(response);
         } catch (Exception e) {
-            logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.info(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
     }
 
     @Override
-    public MsoResponseWrapper addRelationshipToServiceInstance(RequestDetails requestDetails, String addRelationshipsPath) throws Exception {
-        String methodName = "addRelationshipToServiceInstance";
-        logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
+    public MsoResponseWrapper invokeWorkflow(WorkflowRequestDetail workflowRequestDetail, String invokeWorkflowsPath, Map<String, String> extraHeaders) {
+        String path = baseUrl + invokeWorkflowsPath;
+        Map<String, String> finalHeader = new HashMap<>();
+
+        finalHeader.putAll(getHeaders());
+        finalHeader.putAll(extraHeaders);
+
+        RequestDetailsWrapper<WorkflowRequestDetail> requestDetailsWrapper = new RequestDetailsWrapper<>(workflowRequestDetail);
+
+        HttpResponse<JsonNode> response = client.post(path, finalHeader, requestDetailsWrapper);
+        return MsoUtil.wrapResponse(response);
+    }
+
+    @Override
+    public <T> HttpResponse<T> get(String endpoint, Class<T> responseClass) {
+        String path = baseUrl + endpoint;
+        return client.get(path, getHeaders(), new HashMap<>(), responseClass);
+    }
+
+    @Override
+    public <T> HttpResponse<T> post(String endpoint, RequestDetailsWrapper<?> requestDetailsWrapper, Class<T> responseClass) {
+        String path = baseUrl + endpoint;
+
+        return client.post(path, getHeaders(), requestDetailsWrapper, responseClass);
+    }
+
+    @Override
+    public <T> HttpResponse<T> post(String endpoint, RequestDetails requestDetails, Class<T> responseClass) {
+        String path = baseUrl + endpoint;
+
+        return client.post(path, getHeaders(), requestDetails, responseClass);
+    }
+
+
+    public HttpResponse<SOWorkflowList> getWorkflowListByModelId(String endpoint){
+        String path = baseUrl + endpoint;
+
+        return client.get(path, getHeaders(), Maps.newHashMap(), SOWorkflowList.class);
+    }
+
+    protected MsoResponseWrapper createInstance(Object request, String path) {
+        String methodName = "createInstance";
+        logger.debug(methodName + START);
+
+        try {
+            HttpResponse<String> response = client.post(path, getHeaders(), request, String.class);
+            return MsoUtil.wrapResponse(response);
+        } catch (Exception e) {
+            logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
+            throw e;
+        }
+    }
+
+    /**
+     * Delete instance.
+     *
+     * @param request the request
+     * @param path    the path
+     * @return the mso response wrapper
+     * @throws Exception the exception
+     */
+    private MsoResponseWrapper deleteInstance(Object request, String path) {
+        String methodName = "deleteInstance";
+        logger.debug(EELFLoggerDelegate.debugLogger, methodName + START);
 
         try {
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " calling Add relationship to service instance, path =[" + addRelationshipsPath + "]");
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " calling Delete, path =[" + path + "]");
 
-            RestObject<String> restObjStr = new RestObject<>();
-            restObjStr.set("");
-            Post("", requestDetails, "", addRelationshipsPath, restObjStr);
+            HttpResponse<String> response = client.delete(path, getHeaders(), request, String.class);
+            MsoResponseWrapper w = MsoUtil.wrapResponse(response);
+
+            logger.debug(EELFLoggerDelegate.debugLogger, methodName + " w=" + w.getResponse());
+            return w;
 
-            return MsoUtil.wrapResponse(restObjStr);
         } catch (Exception e) {
-            logger.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
-            logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
+            logger.error(EELFLoggerDelegate.errorLogger, "." + methodName + e.toString());
+            logger.debug(EELFLoggerDelegate.debugLogger, "." + methodName + e.toString());
             throw e;
         }
+
+    }
+
+    private Map<String, String> getHeaders() {
+        Map<String, String> map = new HashMap<>();
+        map.putAll(commonHeaders);
+        String requestIdValue = Logging.extractOrGenerateRequestId();
+        map.put(SystemProperties.ECOMP_REQUEST_ID, requestIdValue);
+        map.put(ONAP_REQUEST_ID_HEADER_KEY, requestIdValue);
+        return map;
+    }
+
+    private Map<String, String> initCommonHeaders() {
+        String username = systemProperties.getProperty(MsoProperties.MSO_USER_NAME);
+        String password = systemProperties.getProperty(MsoProperties.MSO_PASSWORD);
+        String decrypted_password = Password.deobfuscate(password);
+
+        String authString = username + ":" + decrypted_password;
+
+        byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
+        String authStringEnc = new String(authEncBytes);
+
+        Map<String, String> map = new HashMap<>();
+        map.put(HttpHeaders.AUTHORIZATION,  "Basic " + authStringEnc);
+        map.put(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
+        map.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
+        map.put(X_FROM_APP_ID, systemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME));
+        map.put(PARTNER_NAME.getHeaderName(), PARTNER_NAME.getHeaderValue());
+        return ImmutableMap.copyOf(map);
     }
 
-}
\ No newline at end of file
+}