Fixes for Chef Adapter bundle 65/45165/2
authorWonnell, Skip (kw5258) <kw5258@att.com>
Fri, 27 Apr 2018 19:14:01 +0000 (14:14 -0500)
committerRanda Maher <rx196w@att.com>
Fri, 27 Apr 2018 21:18:47 +0000 (21:18 +0000)
Programatically configure values for truststore and password when
initializing the HttpClient.

Update post and put methods to set entity

Add organization into request URI

Restore log messages to original values

Issue-ID: APPC-868
Change-Id: Ia0fdf13fcb1e3ad91a4d2c5ce704523562191379
Signed-off-by: Wonnell, Skip (kw5258) <kw5258@att.com>
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/chefclient/ChefApiClientFactory.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/chefclient/impl/ChefApiClientImpl.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/chefclient/impl/ChefApiHeaderFactory.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/chefclient/impl/ChefRequestBuilder.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/chefclient/impl/ChefApiClientImplTest.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/ChefAdapterImplJobPusherTest.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/ChefAdapterImplTest.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/impl/ChefAdapterImplVNFCOperationsTest.java

index 11d820d..c41142c 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
  */
 package org.onap.appc.adapter.chef.chefclient;
 
-import com.google.common.collect.ImmutableMap;
+import java.io.File;
+import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
 import org.apache.http.client.HttpClient;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContexts;
 import org.onap.appc.adapter.chef.chefclient.api.ChefApiClient;
 import org.onap.appc.adapter.chef.chefclient.impl.ChefApiClientImpl;
 import org.onap.appc.adapter.chef.chefclient.impl.ChefApiHeaderFactory;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.google.common.collect.ImmutableMap;
 
 public class ChefApiClientFactory {
 
-    private HttpClient httpClient = HttpClients.createDefault();
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(ChefApiClientFactory.class);
+
+    private HttpClient createChefHttpClient() {
+        String trustStoreFileName = "/opt/app/bvc/chef/chefServerSSL.jks";
+        char[] trustStoreCreds = "adminadmin".toCharArray();
+        try {
+            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+                    SSLContexts.custom().loadTrustMaterial(new File(trustStoreFileName), trustStoreCreds).build(),
+                    SSLConnectionSocketFactory.getDefaultHostnameVerifier());
+            return HttpClients.custom().setSSLSocketFactory(sslsf).build();
+        } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException | CertificateException
+                | IOException e) {
+            logger.error(e.getMessage(), e);
+        }
+        return null;
+    }
+
+    private HttpClient httpClient = createChefHttpClient();
     private ChefApiHeaderFactory chefApiHeaderFactory = new ChefApiHeaderFactory();
 
     public ChefApiClient create(String endPoint, String organizations, String userId, String pemPath) {
-        return new ChefApiClientImpl(
-            httpClient,
-            endPoint,
-            (methodName, requestPath, body) -> chefApiHeaderFactory
+        return new ChefApiClientImpl(httpClient, endPoint, organizations, (methodName, requestPath, body) -> chefApiHeaderFactory
                 .create(methodName, requestPath, body, userId, organizations, pemPath));
     }
 
-    public ChefApiClient create(String endPoint) {
-        return new ChefApiClientImpl(
-            httpClient,
-            endPoint,
-            (methodName, requestPath, body) -> ImmutableMap.of());
+    public ChefApiClient create(String endPoint, String organizations)  {
+        return new ChefApiClientImpl(httpClient, endPoint, organizations, (methodName, requestPath, body) -> ImmutableMap.of());
     }
 }
index 8edc2b5..f86b490 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
@@ -17,8 +17,6 @@
  * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * ============LICENSE_END=========================================================
  */
 
@@ -26,6 +24,9 @@ package org.onap.appc.adapter.chef.chefclient.impl;
 
 import java.io.IOException;
 import java.net.URISyntaxException;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -39,11 +40,14 @@ public class ChefApiClientImpl implements ChefApiClient {
 
     private final HttpClient httpClient;
     private final String endpoint;
+    private final String organization;
     private final HttpHeaderFactory httpHeaderFactory;
-
-    public ChefApiClientImpl(HttpClient httpClient, String endpoint, HttpHeaderFactory httpHeaderFactory) {
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(ChefApiClientImpl.class);
+    public ChefApiClientImpl(HttpClient httpClient, String endpoint, String organization,
+            HttpHeaderFactory httpHeaderFactory) {
         this.httpClient = httpClient;
         this.endpoint = endpoint;
+        this.organization = organization;
         this.httpHeaderFactory = httpHeaderFactory;
     }
 
@@ -51,7 +55,7 @@ public class ChefApiClientImpl implements ChefApiClient {
     public ChefResponse get(String path) {
         OngoingRequestBuilder requestBuilder = ChefRequestBuilder.newRequestTo(endpoint)
             .httpGet()
-            .withPath(path)
+            .withPath(getPath(path))
             .withHeaders(httpHeaderFactory.create("GET", path, ""));
         return execute(requestBuilder);
     }
@@ -60,7 +64,7 @@ public class ChefApiClientImpl implements ChefApiClient {
     public ChefResponse delete(String path) {
         OngoingRequestBuilder requestBuilder = ChefRequestBuilder.newRequestTo(endpoint)
             .httpDelete()
-            .withPath(path)
+            .withPath(getPath(path))
             .withHeaders(httpHeaderFactory.create("DELETE", path, ""));
         return execute(requestBuilder);
     }
@@ -69,7 +73,7 @@ public class ChefApiClientImpl implements ChefApiClient {
     public ChefResponse post(String path, String body) {
         OngoingRequestBuilder requestBuilder = ChefRequestBuilder.newRequestTo(endpoint)
             .httpPost(body)
-            .withPath(path)
+            .withPath(getPath(path))
             .withHeaders(httpHeaderFactory.create("POST", path, body));
         return execute(requestBuilder);
     }
@@ -78,13 +82,17 @@ public class ChefApiClientImpl implements ChefApiClient {
     public ChefResponse put(String path, String body) {
         OngoingRequestBuilder requestBuilder = ChefRequestBuilder.newRequestTo(endpoint)
             .httpPut(body)
-            .withPath(path)
+            .withPath(getPath(path))
             .withHeaders(httpHeaderFactory.create("PUT", path, body));
+        logger.info("request: PATH: "+path+ " body: "+body);
         return execute(requestBuilder);
     }
 
     private ChefResponse execute(OngoingRequestBuilder chefRequest) {
         try {
+            if (httpClient == null) {
+                return ChefResponse.create(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Could not create http client for chef");
+            }
             HttpResponse response = httpClient.execute(chefRequest.build());
             int statusCode = response.getStatusLine().getStatusCode();
             HttpEntity httpEntity = response.getEntity();
@@ -96,5 +104,9 @@ public class ChefApiClientImpl implements ChefApiClient {
             return ChefResponse.create(HttpStatus.SC_INTERNAL_SERVER_ERROR, ex.getMessage());
         }
     }
+
+    private String getPath(String path) {
+        return "/organizations/" + organization + path;
+    }
 }
 
index d045135..e40eee2 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
@@ -27,11 +28,6 @@ public class ChefApiHeaderFactory {
 
     private FormattedTimestamp formattedTimestamp = new FormattedTimestamp();
 
-    static {
-        System.setProperty("javax.net.ssl.trustStore", "/opt/onap/appc/chef/chefServerSSL.jks");
-        System.setProperty("javax.net.ssl.trustStorePassword", "adminadmin");
-    }
-
     public ImmutableMap<String, String> create(String methodName, String path, String body, String userId,
         String organizations, String pemPath) {
 
index a224843..c2501e3 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
@@ -33,8 +34,7 @@ import org.apache.http.entity.StringEntity;
 
 final class ChefRequestBuilder {
 
-    private ChefRequestBuilder() {
-    }
+    private ChefRequestBuilder() {}
 
     static OngoingRequestBuilder newRequestTo(String endPoint) {
         return new OngoingRequestBuilder(endPoint);
@@ -68,21 +68,22 @@ final class ChefRequestBuilder {
 
         public OngoingRequestBuilder httpPost(String body) {
             HttpPost httpPost = new HttpPost();
-            toEntity(body);
+            httpPost.setEntity(toEntity(body));
             httpRequestBase = httpPost;
             return this;
         }
 
         public OngoingRequestBuilder httpPut(String body) {
             HttpPut httpPut = new HttpPut();
-            toEntity(body);
+            httpPut.setEntity(toEntity(body));
             httpRequestBase = httpPut;
             return this;
         }
 
-        private void toEntity(String body) {
+        private StringEntity toEntity(String body) {
             StringEntity stringEntity = new StringEntity(body, "UTF-8");
             stringEntity.setContentType("application/json");
+            return stringEntity;
         }
 
         public OngoingRequestBuilder withHeaders(ImmutableMap<String, String> headers) {
@@ -93,13 +94,11 @@ final class ChefRequestBuilder {
         public HttpRequestBase build() throws URISyntaxException {
             setRequestUri();
             setRequestHeaders();
-
             return httpRequestBase;
         }
 
         private void setRequestUri() throws URISyntaxException {
-            URI fullPath = new URIBuilder(endPoint)
-                .setPath(path).build();
+            URI fullPath = new URIBuilder(endPoint).setPath(path).build();
             httpRequestBase.setURI(fullPath);
         }
 
index 64aedcc..bd367b0 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
@@ -17,8 +17,6 @@
  * 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * ============LICENSE_END=========================================================
  */
 package org.onap.appc.adapter.chef.impl;
@@ -146,8 +144,8 @@ public class ChefAdapterImpl implements ChefAdapter {
                     doFailure(ctx, code, POSTING_REQUEST_JSON_ERROR_STR + e.getMessage());
                 } catch (Exception e) {
                     code = 401;
-                    logger.error(POSTING_REQUEST_ERROR_STR, e);
-                    doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + e.getMessage());
+                    logger.error(POSTING_REQUEST_ERROR_STR + "vnfcEnvironment", e);
+                    doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + "vnfcEnvironment"+ e.getMessage());
                 }
             } else {
                 code = 500;
@@ -201,12 +199,12 @@ public class ChefAdapterImpl implements ChefAdapter {
             }
         } catch (JSONException e) {
             code = 401;
-            logger.error(POSTING_REQUEST_JSON_ERROR_STR, e);
-            doFailure(ctx, code, POSTING_REQUEST_JSON_ERROR_STR + e.getMessage());
+            logger.error(POSTING_REQUEST_JSON_ERROR_STR +"vnfcNodeobjects", e);
+            doFailure(ctx, code, POSTING_REQUEST_JSON_ERROR_STR +"vnfcNodeobjects" + e.getMessage());
         } catch (Exception e) {
             code = 401;
-            logger.error(POSTING_REQUEST_ERROR_STR, e);
-            doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + e.getMessage());
+            logger.error(POSTING_REQUEST_ERROR_STR +"vnfcNodeobjects", e);
+            doFailure(ctx, code, POSTING_REQUEST_ERROR_STR +"vnfcNodeobjects"+ e.getMessage());
         }
     }
 
@@ -250,8 +248,8 @@ public class ChefAdapterImpl implements ChefAdapter {
             }
         } catch (Exception e) {
             code = 401;
-            logger.error(POSTING_REQUEST_ERROR_STR, e);
-            doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + e.getMessage());
+            logger.error(POSTING_REQUEST_ERROR_STR + "vnfcPushJob", e);
+            doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + "vnfcPushJob"+ e.getMessage());
         }
     }
 
@@ -321,12 +319,12 @@ public class ChefAdapterImpl implements ChefAdapter {
             }
         } catch (JSONException e) {
             code = 401;
-            logger.error(POSTING_REQUEST_JSON_ERROR_STR, e);
-            doFailure(ctx, code, POSTING_REQUEST_JSON_ERROR_STR + e.getMessage());
+            logger.error(POSTING_REQUEST_JSON_ERROR_STR + "fetchResults", e);
+            doFailure(ctx, code, POSTING_REQUEST_JSON_ERROR_STR + "fetchResults" + e.getMessage());
         } catch (Exception e) {
             code = 401;
-            logger.error(POSTING_REQUEST_ERROR_STR , e);
-            doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + e.getMessage());
+            logger.error(POSTING_REQUEST_ERROR_STR + "fetchResults" , e);
+            doFailure(ctx, code, POSTING_REQUEST_ERROR_STR + "fetchResults"+ e.getMessage());
         }
     }
 
@@ -382,7 +380,6 @@ public class ChefAdapterImpl implements ChefAdapter {
         String dgContext = params.get("dgContext");
         JSONObject jsonConfig = new JSONObject(allConfigData);
         String contextData = fetchContextData(key, jsonConfig);
-
         ctx.setAttribute(dgContext, contextData);
     }
 
@@ -522,7 +519,7 @@ public class ChefAdapterImpl implements ChefAdapter {
         String tVmIp = params.get("ip");
 
         try {
-            ChefResponse chefResponse = chefApiClientFactory.create(tVmIp).get("");
+            ChefResponse chefResponse = chefApiClientFactory.create(tVmIp, organizations).get("");
             chefClientResult(svcLogicContext, chefResponse.getStatusCode(), chefResponse.getBody());
             svcLogicContext.setAttribute("chefAgent.code", "200");
         } catch (Exception e) {
@@ -655,4 +652,4 @@ public class ChefAdapterImpl implements ChefAdapter {
 
         throw new SvcLogicException("Chef Adapter error:" + cutMessage);
     }
-}
\ No newline at end of file
+}
index ed39efb..f1e215a 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
@@ -199,7 +200,7 @@ public class ChefApiClientImplTest {
             boolean headersMatch = checkIfHeadersMatch(httpRequestBase);
             try {
                 return methodName.equals(httpRequestBase.getMethod())
-                    && new URI(END_POINT + REQUEST_PATH).equals(httpRequestBase.getURI())
+                    && new URI(END_POINT + "/organizations/" + ORGANIZATIONS_PATH + REQUEST_PATH).equals(httpRequestBase.getURI())
                     && headersMatch;
             } catch (URISyntaxException e) {
                 e.printStackTrace();
@@ -215,4 +216,4 @@ public class ChefApiClientImplTest {
                 .allMatch(p -> httpRequestBase.getFirstHeader(p.getKey()).getValue().equals(p.getValue()));
         }
     }
-}
\ No newline at end of file
+}
index f4d19e2..9e83dd6 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
@@ -86,6 +87,7 @@ public class ChefAdapterImplJobPusherTest {
         assertThat(svcLogicContext.getAttribute(JOB_ID)).isEqualTo("666");
     }
 
+    @SuppressWarnings("unchecked")
     public void assertSuccessfulPostCallForStatus(int expectedHttpStatus) throws SvcLogicException {
         // GIVEN
         Map<String, String> params = givenInputParams(
@@ -106,6 +108,7 @@ public class ChefAdapterImplJobPusherTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(EXPECTED_RESPONSE_MSG);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void pushJob_shouldHandleAllOccurringExceptions_duringMethodExecution() {
         // GIVEN
@@ -126,6 +129,7 @@ public class ChefAdapterImplJobPusherTest {
         assertThat(svcLogicContext.getAttribute(JOB_ID)).isBlank();
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void checkPushJob_shouldSetFailStatusAndMsgInContext_andThrowException_whenRetryTimesParamIsMissing() {
         // GIVEN
@@ -137,6 +141,7 @@ public class ChefAdapterImplJobPusherTest {
         assertIfInputParamsAreValidated(params);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void checkPushJob_shouldSetFailStatusAndMsgInContext_andThrowException_whenRetryIntervalParamIsMissing() {
         // GIVEN
@@ -148,6 +153,7 @@ public class ChefAdapterImplJobPusherTest {
         assertIfInputParamsAreValidated(params);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void checkPushJob_shouldSetFailStatusAndMsgInContext_andThrowException_whenJobIdParamIsMissing() {
         // GIVEN
@@ -211,6 +217,7 @@ public class ChefAdapterImplJobPusherTest {
             ChefResponse.create(HttpStatus.SC_OK, "{status:running}"));
     }
 
+    @SuppressWarnings("unchecked")
     public void assertCheckJobStatusFor(String expectedHttpStatus, String expectedMessage, ChefResponse firstResponse,
         ChefResponse... nextResponses) throws SvcLogicException {
 
@@ -233,6 +240,7 @@ public class ChefAdapterImplJobPusherTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(expectedMessage);
     }
 
+    @SuppressWarnings("unchecked")
     private Map<String, String> givenInputParams(Entry<String, String>... entries) {
         Builder<String, String> paramsBuilder = ImmutableMap.builder();
         paramsBuilder.put("username", USERNAME)
index 62de292..3d4ee36 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
@@ -123,7 +124,7 @@ public class ChefAdapterImplTest {
         // GIVEN
         Map<String, String> params = ImmutableMap.of(IP_PARAM, ENDPOINT_IP);
         SvcLogicContext svcLogicContext = new SvcLogicContext();
-        given(chefApiClientFactory.create(ENDPOINT_IP).get(""))
+        given(chefApiClientFactory.create(ENDPOINT_IP, "").get(""))
             .willReturn(ChefResponse.create(HttpStatus.SC_OK, EXPECTED_RESPONSE_MSG));
 
         // WHEN
@@ -141,7 +142,7 @@ public class ChefAdapterImplTest {
         // GIVEN
         Map<String, String> params = ImmutableMap.of(IP_PARAM, ENDPOINT_IP);
         SvcLogicContext svcLogicContext = new SvcLogicContext();
-        given(chefApiClientFactory.create(ENDPOINT_IP)).willThrow(new RuntimeException());
+        given(chefApiClientFactory.create(ENDPOINT_IP, "")).willThrow(new RuntimeException());
 
         // WHEN
         chefAdapterFactory.create().trigger(params, svcLogicContext);
@@ -192,4 +193,4 @@ public class ChefAdapterImplTest {
         assertThat(svcLogicContext.getAttribute("chefServerResult.message"))
             .isEqualTo(expectedErrorMsg);
     }
-}
\ No newline at end of file
+}
index 7f9c505..e79b72a 100644 (file)
@@ -3,6 +3,7 @@
  * ONAP : APPC
  * ================================================================================
  * Copyright (C) 2018 Nokia. All rights reserved.
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
@@ -74,6 +75,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         svcLogicContext = new SvcLogicContext();
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcEnvironment_shouldSkipEnvironmentCreation_whenEnvParamIsEmpty() throws SvcLogicException {
         // GIVEN
@@ -89,6 +91,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo("Skip Environment block ");
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcEnvironment_shouldCreateNewEnvironment_forEnvParam_whenRequestedEnvDoesNotExist()
         throws SvcLogicException {
@@ -113,6 +116,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(expectedErrorMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcEnvironment_shouldNotAttemptEnvCreation_andThrowException_whenPrivateKeyCheckFails() {
         // GIVEN
@@ -132,6 +136,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .isEqualTo(expectedErrorMsg + CLIENT_PRIVATE_KEY_PATH);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcEnvironment_shouldNotAttemptEnvCreation_andHandleJSONException_whenJSONParamsAreMalformed() {
         // GIVEN
@@ -151,6 +156,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .startsWith(expectedErrorMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcEnvironment_shouldNotAttemptEnvCreation_andHandleException_whenExceptionOccursDuringExecution() {
         // GIVEN
@@ -163,7 +169,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         // WHEN  // THEN
         assertThatExceptionOfType(SvcLogicException.class)
             .isThrownBy(() -> chefAdapterFactory.create().vnfcEnvironment(params, svcLogicContext))
-            .withMessage(CHEF_ADAPTER_ERROR_PREFIX + expectedErrorMessage + "Null value encountered");
+            .withMessage(CHEF_ADAPTER_ERROR_PREFIX + expectedErrorMessage + "vnfcEnvironmentNull value encountered");
 
         assertThat(svcLogicContext.getStatus()).isEqualTo(FAILURE_STATUS);
         assertThat(svcLogicContext.getAttribute(RESULT_CODE_ATTR_KEY))
@@ -194,6 +200,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertNodeObjectsAreUpdatedFor(firstNodeResponse, secondNodeResponse, expectedHttpStatus, expectedMessage);
     }
 
+    @SuppressWarnings("unchecked")
     public void assertNodeObjectsAreUpdatedFor(ChefResponse firstNodeResponse, ChefResponse secondNodeResponse,
         int expectedHttpStatus, String expectedMessage) throws SvcLogicException {
         // GIVEN
@@ -220,6 +227,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(expectedMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcNodeObjects_shouldThrowSvcLogicException_whenNodeListParamIsEmpty() {
         Map<String, String> params = givenInputParams(
@@ -228,6 +236,7 @@ public class ChefAdapterImplVNFCOperationsTest {
         checkMissingParamsAreValidated(params);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcNodeObjects_shouldThrowSvcLogicException_whenNodeParamIsEmpty() {
         Map<String, String> params = givenInputParams(
@@ -238,7 +247,7 @@ public class ChefAdapterImplVNFCOperationsTest {
 
     public void checkMissingParamsAreValidated(Map<String, String> params) {
         // GIVEN
-        String expectedErrorMsg = "Missing Mandatory param(s) Node , NodeList ";
+        String expectedErrorMsg = "vnfcNodeobjectsMissing Mandatory param(s) Node , NodeList ";
 
         // WHEN  // THEN
         assertThatExceptionOfType(SvcLogicException.class)
@@ -252,6 +261,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .isEqualTo("Error posting request: " + expectedErrorMsg);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcNodeObjects_shouldNotUpdateNodes_andHandleJSONException_whenJSONParamsAreMalformed() {
         // GIVEN
@@ -273,6 +283,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .startsWith(expectedErrorMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcPushJob_shouldUpdateSvcContextWithJobId_whenPushJobWasSuccessfullyCreatedWithCallbackUrl()
         throws SvcLogicException {
@@ -296,6 +307,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             + "someURLForCallback" + "\"}," + "\"capture_output\": true" + "}";
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcPushJob_shouldUpdateSvcContextWithJobId_whenPushJobWasSuccessfullyCreatedWithoutCallbackUrl()
         throws SvcLogicException {
@@ -334,10 +346,11 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(expectedResponseMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void vnfcPushJob_shouldNotPushJob_andThrowException_whenNodeListParamIsEmpty() {
         // GIVEN
-        String expectedErrorMessage = "Error posting request: Missing Mandatory param(s)  NodeList ";
+        String expectedErrorMessage = "Error posting request: vnfcPushJobMissing Mandatory param(s)  NodeList ";
         Map<String, String> params = givenInputParams();
         // WHEN  // THEN
         assertThatExceptionOfType(SvcLogicException.class)
@@ -350,10 +363,11 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(expectedErrorMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void fetchResults_shouldNotFetchResults_andThrowException_whenNodeListParamIsEmpty() {
         // GIVEN
-        String expectedErrorMessage = "Error posting request: Missing Mandatory param(s)  NodeList ";
+        String expectedErrorMessage = "Error posting request: fetchResultsMissing Mandatory param(s)  NodeList ";
         Map<String, String> params = givenInputParams();
         // WHEN  // THEN
         assertThatExceptionOfType(SvcLogicException.class)
@@ -366,13 +380,14 @@ public class ChefAdapterImplVNFCOperationsTest {
         assertThat(svcLogicContext.getAttribute(RESULT_MESSAGE_ATTR_KEY)).isEqualTo(expectedErrorMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void fetchResults_shouldNotFetchResults_andThrowException_whenPrivateKeyCheckFails() {
         // GIVEN
         Map<String, String> params = givenInputParams(
             immutableEntry("NodeList", "[\"test1.vnf_b.onap.com\", \"test2.vnf_b.onap.com\"]"));
         String expectedErrorMessage =
-            "Error posting request: "
+            "Error posting request: fetchResults"
                 + CHEF_ADAPTER_ERROR_PREFIX
                 + "Cannot find the private key in the APPC file system, please load the private key to "
                 + CLIENT_PRIVATE_KEY_PATH;
@@ -390,6 +405,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .isEqualTo(expectedErrorMessage);
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void fetchResults_shouldUpdateSvcLogicContextWithJsonResponse_fromSuccessfulChefServerCall()
         throws SvcLogicException {
@@ -414,6 +430,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .isEqualTo("{\"test1.vnf_b.onap.com\":{\"PushJobOutput\":\"ssh start/running, process 1090\"}}");
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void fetchResults_shouldUpdateSvcLogicContextWithFailedMessage_whenReturnedJSONMessageIsMissingAttribute()
         throws SvcLogicException {
@@ -438,6 +455,7 @@ public class ChefAdapterImplVNFCOperationsTest {
             .isEqualTo("Cannot find PushJobOutput");
     }
 
+    @SuppressWarnings("unchecked")
     private Map<String, String> givenInputParams(Entry<String, String>... entries) {
         Builder<String, String> paramsBuilder = ImmutableMap.builder();
         paramsBuilder.put("username", USERNAME)
@@ -449,4 +467,4 @@ public class ChefAdapterImplVNFCOperationsTest {
         }
         return paramsBuilder.build();
     }
-}
\ No newline at end of file
+}