Fix VSP resubmit all impl 73/20373/2
authortalig <talig@amdocs.com>
Tue, 24 Oct 2017 17:23:35 +0000 (20:23 +0300)
committertalig <talig@amdocs.com>
Tue, 24 Oct 2017 17:24:07 +0000 (20:24 +0300)
Change-Id: I080425eb0115712da9a3d52f24d1b513cfb58291
Issue-ID: SDC-529
Signed-off-by: talig <talig@amdocs.com>
openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java

index 9e4d3bf..0450244 100644 (file)
@@ -78,6 +78,7 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import static org.openecomp.sdc.logging.messages.AuditMessages.SUBMIT_VSP_ERROR;
 
@@ -403,59 +404,30 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts {
     MDC.put(LoggerConstants.SERVICE_NAME, LoggerServiceName.Re_Submit_ALL_Final_VSPs.toString());
     logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.RESUBMIT_ALL_FINAL_VSPS);
 
-    List<VersionedVendorSoftwareProductInfo> vspList = Objects.requireNonNull(
-        vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), user));
-    int skippedCounter = 0;
-    final int vspListSizeBefore = vspList.size();
-
-    for (VersionedVendorSoftwareProductInfo versionVspInfo : vspList) {
-      final VspDetails vspDetails = versionVspInfo.getVspDetails();
-      final String vspId = vspDetails.getId();
-      final Version latestFinalVersion =
-          getVersionInfo(vspId, VersionableEntityAction.Read, user).getLatestFinalVersion();
-
-      if (latestFinalVersion.getStatus().equals(VersionStatus.Locked)) {
-        logger.info("Skipping processing VSP name [{}]/id [{}] due to status LOCKED", vspDetails
-                .getName(),
-            vspId);
-        skippedCounter++;
-        vspList.remove(versionVspInfo);
-      }
-    }
+    List<VersionedVendorSoftwareProductInfo> latestFinalVsps = Objects
+        .requireNonNull(vendorSoftwareProductManager.listVsps(VersionStatus.Final.name(), user));
 
-    logger.info("Removed {} VSPs out of {} from processing due to status LOCKED", skippedCounter,
-        vspListSizeBefore);
+    List<VersionedVendorSoftwareProductInfo> nonLockedLatestFinalVsps = latestFinalVsps.stream()
+        .filter(vsp ->
+            !isVspLocked(vsp.getVspDetails().getId(), vsp.getVspDetails().getName(), user))
+        .collect(Collectors.toList());
+
+    logger.info("Removed {} VSPs out of {} from processing due to status LOCKED.\n" +
+            "Total number of VSPs: {}. Performing healing and resubmit for all non-Manual VSPs " +
+            "in submitted status.\n No need to pre-set oldVersion field",
+        latestFinalVsps.size() - nonLockedLatestFinalVsps.size(), latestFinalVsps.size(),
+        nonLockedLatestFinalVsps.size());
 
     int healingCounter = 0;
     int failedCounter = 0;
-    int totalCounter = 0;
-
-
-    final int vspListSize = vspList.size();
-    logger.info("Total number of VSPs: {}. Performing healing and " +
-        "resubmit for all non-Manual VSPs in submitted status.\n No need to pre-set oldVersion " +
-        "field", vspListSize);
-
-    for (VersionedVendorSoftwareProductInfo versionVspInfo : vspList) {
+    for (int counter = 0; counter < nonLockedLatestFinalVsps.size(); counter++) {
+      VersionedVendorSoftwareProductInfo versionVspInfo = nonLockedLatestFinalVsps.get(counter);
       try {
-        totalCounter++;
-        final Version activeVersion = versionVspInfo.getVersionInfo().getActiveVersion();
         final VspDetails vspDetails = versionVspInfo.getVspDetails();
-        final String vspId = vspDetails.getId();
-        final Version latestFinalVersion =
-            getVersionInfo(vspId, VersionableEntityAction.Read, user).getLatestFinalVersion();
-
-        final String vspName = vspDetails.getName();
-        logger.info("VSP Name {}, VSP id [{}], Active Version {} , Active Version Status {}," +
-                "Latest Final Version {} ,  " +
-                "Latest Final Version Status {}", vspName, vspId, activeVersion
-                .toString(),
-            activeVersion.getStatus(), latestFinalVersion.toString(),
-            latestFinalVersion.getStatus());
-
-        if (Objects.nonNull(latestFinalVersion) &&
-            (!OnboardingMethod.Manual.name().equals(vspDetails.getOnboardingMethod()))) {
-          reSubmit(vspDetails, user, totalCounter, vspListSize);
+        if (!OnboardingMethod.Manual.name().equals(vspDetails.getOnboardingMethod())) {
+          logger.info("Starting on healing and resubmit for VSP [{}], #{} out of total {}",
+              vspDetails.getName(), counter + 1, nonLockedLatestFinalVsps.size());
+          reSubmit(vspDetails, user);
           healingCounter++;
         }
       } catch (Exception e) {
@@ -464,42 +436,46 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts {
     }
 
     logger.info("Total VSPs processed {}. Completed running healing and resubmit for {} VSPs out" +
-            " " +
-            "of total # of {} submitted VSPs.  Failures count during resubmitAll: {}",
-        totalCounter, healingCounter, vspListSize, failedCounter);
-
+            " of total # of {} submitted VSPs.  Failures count during resubmitAll: {}",
+        nonLockedLatestFinalVsps.size(), healingCounter, latestFinalVsps.size(), failedCounter);
 
     return Response.ok().build();
   }
 
+  private boolean isVspLocked(String vspId, String vspName, String user) {
+    final VersionInfo versionInfo = getVersionInfo(vspId, VersionableEntityAction.Read, user);
 
-  private void reSubmit(VspDetails vspDetails, String user, int currentCount, int total) throws
-      Exception {
+    if (versionInfo.getStatus().equals(VersionStatus.Locked)) {
+      logger.info("VSP name [{}]/id [{}] status is LOCKED", vspName, vspId);
+      return true;
+    }
+    logger.info("VSP Name {}, VSP id [{}], Active Version {} , Status {}, Latest Final Version {}",
+        vspName, vspId, versionInfo.getActiveVersion().toString(), versionInfo.getStatus(),
+        versionInfo.getLatestFinalVersion().toString());
+    return false;
+  }
 
-    final String vspId = vspDetails.getId();
-    final String vspName = vspDetails.getName();
-    final Version versionBefore = vspDetails.getVersion();
-    Version finalVersion;
 
-    logger.info("Starting on healing and resubmit for VSP [{}], #{} out of total {}", vspName,
-        currentCount, total);
+  private void reSubmit(VspDetails vspDetails, String user) throws Exception {
+    final Version versionBefore = vspDetails.getVersion();
     vspDetails.setOldVersion("true");
 
+    Version finalVersion;
     try {
       finalVersion =
-          vendorSoftwareProductManager.healAndAdvanceFinalVersion(vspId, vspDetails, user);
-
+          vendorSoftwareProductManager
+              .healAndAdvanceFinalVersion(vspDetails.getId(), vspDetails, user);
     } catch (Exception e) {
-
       logger.error("Failed during resubmit, VSP [{}] , version before:{}, version after:{}, " +
               "status after:{}, with exception:{}",
-          vspName, versionBefore.toString(), vspDetails.getVersion().toString(), vspDetails
+          vspDetails.getName(), versionBefore.toString(), vspDetails.getVersion().toString(),
+          vspDetails
               .getVersion().getStatus().name(), e.getMessage());
       throw e;
     }
 
     logger.info("Completed healing and resubmit for VSP [{}], version before:{}, version after:" +
-        " {}", vspName, versionBefore.toString(), finalVersion);
+        " {}", vspDetails.getName(), versionBefore.toString(), finalVersion);
   }
 
   private static void printAuditForErrors(List<ErrorMessage> errorList, String vspId,
index dde5d61..ceb635f 100644 (file)
@@ -832,21 +832,20 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
   public Version healAndAdvanceFinalVersion(String vspId, VspDetails vendorSoftwareProductInfo,
                                             String user) throws IOException {
 
-    Version checkoutFinalVersion = checkout(vspId, user);
-    autoHeal(vspId, checkoutFinalVersion, vendorSoftwareProductInfo, user);
-    Version checkinFinalVersion = checkin(vspId, user);
+    Version checkoutVersion = checkout(vspId, user);
+    autoHeal(vspId, checkoutVersion, vendorSoftwareProductInfo, user);
+    Version checkinVersion = checkin(vspId, user);
 
     ValidationResponse response = Objects.requireNonNull(submit(vspId, user),
         "Null response not expected");
 
     if (!response.isValid()) {
-      return checkout(vspId, user);
+      return checkinVersion;
     }
 
-    Version finalVersion = checkinFinalVersion.calculateNextFinal();
+    Version finalVersion = checkinVersion.calculateNextFinal();
     createPackage(vspId, finalVersion, user);
     return finalVersion;
-
   }
 
   @Override