Bump policy/models to 2.3.1-SNAPSHOT
[policy/models.git] / models-interactions / model-impl / vfc / src / main / java / org / onap / policy / vfc / VfcManager.java
index 406e35d..64d60ba 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2017-2019 Intel Corp. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
  * Modifications Copyright (C) 2018-2019 AT&T Corporation. All rights reserved.
  * Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
  * ================================================================================
 package org.onap.policy.vfc;
 
 import com.google.gson.JsonSyntaxException;
-
 import java.util.HashMap;
 import java.util.Map;
-
+import org.apache.commons.lang3.tuple.Pair;
 import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
 import org.onap.policy.common.endpoints.utils.NetLoggerUtil;
 import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType;
 import org.onap.policy.rest.RestManager;
-import org.onap.policy.rest.RestManager.Pair;
 import org.onap.policy.vfc.util.Serialization;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -119,51 +117,13 @@ public final class VfcManager implements Runnable {
             return;
         }
 
-        if (httpDetails.first != 202) {
+        if (httpDetails.getLeft() != 202) {
             logger.warn("VFC Heal Restcall failed");
             return;
         }
 
         try {
-            VfcResponse response = Serialization.gsonPretty.fromJson(httpDetails.second, VfcResponse.class);
-            NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, vfcUrl, httpDetails.second);
-            String body = Serialization.gsonPretty.toJson(response);
-            logger.debug("Response to VFC Heal post:");
-            logger.debug(body);
-
-            String jobId = response.getJobId();
-            int attemptsLeft = 20;
-
-            String urlGet = vfcUrlBase + "/jobs/" + jobId;
-            VfcResponse responseGet = null;
-
-            while (attemptsLeft-- > 0) {
-                NetLoggerUtil.getNetworkLogger().info("[OUT|{}|{}|]", "VFC", urlGet);
-                Pair<Integer, String> httpDetailsGet = restManager.get(urlGet, username, password, headers);
-                responseGet = Serialization.gsonPretty.fromJson(httpDetailsGet.second, VfcResponse.class);
-                NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, vfcUrl, httpDetailsGet.second);
-                responseGet.setRequestId(vfcRequest.getRequestId().toString());
-                body = Serialization.gsonPretty.toJson(responseGet);
-                logger.debug("Response to VFC Heal get:");
-                logger.debug(body);
-
-                String responseStatus = responseGet.getResponseDescriptor().getStatus();
-                if (httpDetailsGet.first == 200
-                        && ("finished".equalsIgnoreCase(responseStatus) || "error".equalsIgnoreCase(responseStatus))) {
-                    logger.debug("VFC Heal Status {}", responseGet.getResponseDescriptor().getStatus());
-                    this.callback.onResponse(responseGet);
-                    break;
-                }
-                Thread.sleep(20000);
-            }
-            boolean isTimeout = (attemptsLeft <= 0) && (responseGet != null)
-                            && (responseGet.getResponseDescriptor() != null);
-            isTimeout = isTimeout && (responseGet.getResponseDescriptor().getStatus() != null)
-                            && (!responseGet.getResponseDescriptor().getStatus().isEmpty());
-            if (isTimeout) {
-                logger.debug("VFC timeout. Status: ({})", responseGet.getResponseDescriptor().getStatus());
-                this.callback.onResponse(responseGet);
-            }
+            handleVfcResponse(headers, httpDetails, vfcUrl);
         } catch (JsonSyntaxException e) {
             logger.error("Failed to deserialize into VfcResponse {}", e.getLocalizedMessage(), e);
         } catch (InterruptedException e) {
@@ -174,6 +134,57 @@ public final class VfcManager implements Runnable {
         }
     }
 
+    /**
+     * Handle a VFC response message.
+     *
+     * @param headers the headers in the response
+     * @param httpDetails the HTTP details in the response
+     * @param vfcUrl the response URL
+     * @throws InterruptedException on errors in the response
+     */
+    private void handleVfcResponse(Map<String, String> headers, Pair<Integer, String> httpDetails, String vfcUrl)
+            throws InterruptedException {
+        VfcResponse response = Serialization.gsonPretty.fromJson(httpDetails.getRight(), VfcResponse.class);
+        NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, vfcUrl, httpDetails.getRight());
+        String body = Serialization.gsonPretty.toJson(response);
+        logger.debug("Response to VFC Heal post:");
+        logger.debug(body);
+
+        String jobId = response.getJobId();
+        int attemptsLeft = 20;
+
+        String urlGet = vfcUrlBase + "/jobs/" + jobId;
+        VfcResponse responseGet = null;
+
+        while (attemptsLeft-- > 0) {
+            NetLoggerUtil.getNetworkLogger().info("[OUT|{}|{}|]", "VFC", urlGet);
+            Pair<Integer, String> httpDetailsGet = restManager.get(urlGet, username, password, headers);
+            responseGet = Serialization.gsonPretty.fromJson(httpDetailsGet.getRight(), VfcResponse.class);
+            NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, vfcUrl, httpDetailsGet.getRight());
+            responseGet.setRequestId(vfcRequest.getRequestId().toString());
+            body = Serialization.gsonPretty.toJson(responseGet);
+            logger.debug("Response to VFC Heal get:");
+            logger.debug(body);
+
+            String responseStatus = responseGet.getResponseDescriptor().getStatus();
+            if (httpDetailsGet.getLeft() == 200
+                    && ("finished".equalsIgnoreCase(responseStatus) || "error".equalsIgnoreCase(responseStatus))) {
+                logger.debug("VFC Heal Status {}", responseGet.getResponseDescriptor().getStatus());
+                this.callback.onResponse(responseGet);
+                return;
+            }
+            Thread.sleep(20000);
+        }
+        boolean isTimeout = (attemptsLeft <= 0) && (responseGet != null)
+                        && (responseGet.getResponseDescriptor() != null);
+        isTimeout = isTimeout && (responseGet.getResponseDescriptor().getStatus() != null)
+                        && (!responseGet.getResponseDescriptor().getStatus().isEmpty());
+        if (isTimeout) {
+            logger.debug("VFC timeout. Status: ({})", responseGet.getResponseDescriptor().getStatus());
+            this.callback.onResponse(responseGet);
+        }
+    }
+
     /**
      * Protected setter for rest manager to allow mocked rest manager to be used for testing.
      *