X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ncmp-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fncmp%2Fapi%2Finventory%2Fsync%2FSyncUtils.java;h=467fd8f6081da5838cd4de9762b1dfbfd72c5ede;hb=054873c7c52bdb9fae718a0d7651d57b1a995dfc;hp=2b80b9d53d360a3cf71d4ea0deb028a51a9c2438;hpb=9fdaf6c0f472cad13ade1469458822d468fd2d6d;p=cps.git diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/SyncUtils.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/SyncUtils.java index 2b80b9d53..467fd8f60 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/SyncUtils.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/SyncUtils.java @@ -22,10 +22,10 @@ package org.onap.cps.ncmp.api.inventory.sync; import com.fasterxml.jackson.databind.JsonNode; -import java.security.SecureRandom; import java.time.Duration; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -55,9 +55,6 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class SyncUtils { - - private static final SecureRandom secureRandom = new SecureRandom(); - private final InventoryPersistence inventoryPersistence; private final DmiDataOperations dmiDataOperations; @@ -69,17 +66,17 @@ public class SyncUtils { /** * Query data nodes for cm handles with an "ADVISED" cm handle state, and select a random entry for processing. * - * @return a random yang model cm handle with an ADVISED state, return null if not found + * @return a randomized yang model cm handle list with ADVISED state, return empty list if not found */ - public YangModelCmHandle getAnAdvisedCmHandle() { - final List advisedCmHandles = inventoryPersistence.getCmHandlesByState(CmHandleState.ADVISED); - if (advisedCmHandles.isEmpty()) { - return null; + public List getAdvisedCmHandles() { + final List advisedCmHandlesAsDataNodeList = new ArrayList<>( + inventoryPersistence.getCmHandlesByState(CmHandleState.ADVISED)); + log.info("Total number of fetched advised cm handle(s) is (are) {}", advisedCmHandlesAsDataNodeList.size()); + if (advisedCmHandlesAsDataNodeList.isEmpty()) { + return Collections.emptyList(); } - final int randomElementIndex = secureRandom.nextInt(advisedCmHandles.size()); - final String cmHandleId = advisedCmHandles.get(randomElementIndex).getLeaves() - .get("id").toString(); - return inventoryPersistence.getYangModelCmHandle(cmHandleId); + Collections.shuffle(advisedCmHandlesAsDataNodeList); + return convertCmHandlesDataNodesToYangModelCmHandles(advisedCmHandlesAsDataNodeList); } /** @@ -113,12 +110,10 @@ public class SyncUtils { * @return a random LOCKED yang model cm handle, return null if not found */ public List getModuleSyncFailedCmHandles() { - final List lockedCmHandleAsDataNodeList = inventoryPersistence.getCmHandleDataNodesByCpsPath( + final List lockedCmHandlesAsDataNodeList = inventoryPersistence.getCmHandleDataNodesByCpsPath( "//lock-reason[@reason=\"LOCKED_MODULE_SYNC_FAILED\"]/ancestor::cm-handles", FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS); - return lockedCmHandleAsDataNodeList.stream() - .map(cmHandle -> YangDataConverter.convertCmHandleToYangModel(cmHandle, - cmHandle.getLeaves().get("id").toString())).collect(Collectors.toList()); + return convertCmHandlesDataNodesToYangModelCmHandles(lockedCmHandlesAsDataNodeList); } /** @@ -191,4 +186,10 @@ public class SyncUtils { final Map.Entry firstElement = overallJsonTreeMap.next(); return jsonObjectMapper.asJsonString(Map.of(firstElement.getKey(), firstElement.getValue())); } + + private List convertCmHandlesDataNodesToYangModelCmHandles( + final List cmHandlesAsDataNodeList) { + return cmHandlesAsDataNodeList.stream().map(dataNode -> YangDataConverter.convertCmHandleToYangModel(dataNode, + dataNode.getLeaves().get("id").toString())).collect(Collectors.toList()); + } }