From 2ec435bc7abe219c76331e109f9e157fddaa3a4b Mon Sep 17 00:00:00 2001 From: danielhanrahan Date: Thu, 22 Feb 2024 10:20:17 +0000 Subject: Introduce class for Module Delta during module sync Removed ImmutableTriple, Collection> and replaced it with a ModuleDelta class to hold results. Split syncAndCreateOrUpgradeSchemaSetAndAnchor into methods syncAndCreateSchemaSetAndAnchor and syncAndUpgradeSchemaSet Issue-ID: CPS-2027 Signed-off-by: danielhanrahan Change-Id: I95462ab55dcae7d98b9e2671fc278c4ded45f3fc --- .../api/impl/inventory/sync/ModuleSyncService.java | 91 +++++++++------------- .../api/impl/inventory/sync/ModuleSyncTasks.java | 8 +- 2 files changed, 41 insertions(+), 58 deletions(-) (limited to 'cps-ncmp-service/src/main/java/org/onap') diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncService.java index dabfbbc6da..e257112fc3 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncService.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncService.java @@ -28,13 +28,12 @@ import static org.onap.cps.ncmp.api.impl.ncmppersistence.NcmpPersistence.NFP_OPE import java.time.OffsetDateTime; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; +import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutableTriple; import org.onap.cps.api.CpsAnchorService; import org.onap.cps.api.CpsDataService; import org.onap.cps.api.CpsModuleService; @@ -64,34 +63,37 @@ public class ModuleSyncService { private final JsonObjectMapper jsonObjectMapper; private static final Map NO_NEW_MODULES = Collections.emptyMap(); + @AllArgsConstructor + private static final class ModuleDelta { + Collection allModuleReferences; + Map newModuleNameToContentMap; + } + /** - * This method registers a cm handle and initiates modules sync. + * This method creates a cm handle and initiates modules sync. * * @param yangModelCmHandle the yang model of cm handle. */ - public void syncAndCreateOrUpgradeSchemaSetAndAnchor(final YangModelCmHandle yangModelCmHandle) { - - final boolean inUpgrade = ModuleOperationsUtils.inUpgradeOrUpgradeFailed(yangModelCmHandle.getCompositeState()); - - final ImmutableTriple, Collection> - allModuleReferencesAndNewModuleNameByModuleSetTag - = getAllModuleReferencesAndNewYangResourcesByModuleSetTag(yangModelCmHandle, inUpgrade); - - final String moduleSetTag = allModuleReferencesAndNewModuleNameByModuleSetTag.getLeft(); - final Map newYangResources = allModuleReferencesAndNewModuleNameByModuleSetTag.getMiddle(); - final Collection allModuleReferences - = allModuleReferencesAndNewModuleNameByModuleSetTag.getRight(); + public void syncAndCreateSchemaSetAndAnchor(final YangModelCmHandle yangModelCmHandle) { + final ModuleDelta moduleDelta = getModuleDelta(yangModelCmHandle, yangModelCmHandle.getModuleSetTag()); final String cmHandleId = yangModelCmHandle.getId(); + cpsModuleService.createSchemaSetFromModules(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandleId, + moduleDelta.newModuleNameToContentMap, moduleDelta.allModuleReferences); + cpsAnchorService.createAnchor(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandleId, cmHandleId); + } - if (inUpgrade) { - cpsModuleService.upgradeSchemaSetFromModules(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandleId, - newYangResources, allModuleReferences); - setCmHandleModuleSetTag(yangModelCmHandle, moduleSetTag); - } else { - cpsModuleService.createSchemaSetFromModules(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandleId, - newYangResources, allModuleReferences); - cpsAnchorService.createAnchor(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandleId, cmHandleId); - } + /** + * This method upgrades a cm handle and initiates modules sync. + * + * @param yangModelCmHandle the yang model of cm handle. + */ + public void syncAndUpgradeSchemaSet(final YangModelCmHandle yangModelCmHandle) { + final String upgradedModuleSetTag = ModuleOperationsUtils.getUpgradedModuleSetTagFromLockReason( + yangModelCmHandle.getCompositeState().getLockReason()); + final ModuleDelta moduleDelta = getModuleDelta(yangModelCmHandle, upgradedModuleSetTag); + cpsModuleService.upgradeSchemaSetFromModules(NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, + yangModelCmHandle.getId(), moduleDelta.newModuleNameToContentMap, moduleDelta.allModuleReferences); + setCmHandleModuleSetTag(yangModelCmHandle, upgradedModuleSetTag); } /** @@ -109,24 +111,22 @@ public class ModuleSyncService { } } - private ImmutableTriple, Collection> - getAllModuleReferencesAndNewYangResourcesByModuleSetTag(final YangModelCmHandle yangModelCmHandle, - final boolean inUpgrade) { - final String moduleSetTag = getModuleSetTag(yangModelCmHandle, inUpgrade); + private ModuleDelta getModuleDelta(final YangModelCmHandle yangModelCmHandle, final String targetModuleSetTag) { final Collection allModuleReferences; final Map newYangResources; - final YangModelCmHandle cmHandleWithSameModuleSetTag = getAnyReadyCmHandleByModuleSetTag(moduleSetTag); + final YangModelCmHandle cmHandleWithSameModuleSetTag = getAnyReadyCmHandleByModuleSetTag(targetModuleSetTag); if (cmHandleWithSameModuleSetTag == null) { allModuleReferences = dmiModelOperations.getModuleReferences(yangModelCmHandle); - newYangResources = getNewModuleNameToContentMap(yangModelCmHandle, allModuleReferences); + newYangResources = dmiModelOperations.getNewYangResourcesFromDmi(yangModelCmHandle, + cpsModuleService.identifyNewModuleReferences(allModuleReferences)); } else { - log.info("Found other cm handle having same module set tag: {}", moduleSetTag); + log.info("Found other cm handle having same module set tag: {}", targetModuleSetTag); allModuleReferences = cpsModuleService.getYangResourcesModuleReferences( NFP_OPERATIONAL_DATASTORE_DATASPACE_NAME, cmHandleWithSameModuleSetTag.getId()); newYangResources = NO_NEW_MODULES; } - return ImmutableTriple.of(moduleSetTag, newYangResources, allModuleReferences); + return new ModuleDelta(allModuleReferences, newYangResources); } private YangModelCmHandle getAnyReadyCmHandleByModuleSetTag(final String moduleSetTag) { @@ -142,29 +142,10 @@ public class ModuleSyncService { .findFirst().orElse(null); } - private void setCmHandleModuleSetTag(final YangModelCmHandle upgradedCmHandle, final String moduleSetTag) { - final Map> dmiRegistryProperties = new HashMap<>(1); - final Map cmHandleProperties = new HashMap<>(2); - cmHandleProperties.put("id", upgradedCmHandle.getId()); - cmHandleProperties.put("module-set-tag", moduleSetTag); - dmiRegistryProperties.put("cm-handles", cmHandleProperties); + private void setCmHandleModuleSetTag(final YangModelCmHandle yangModelCmHandle, final String newModuleSetTag) { + final String jsonForUpdate = jsonObjectMapper.asJsonString(Map.of( + "cm-handles", Map.of("id", yangModelCmHandle.getId(), "module-set-tag", newModuleSetTag))); cpsDataService.updateNodeLeaves(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, NCMP_DMI_REGISTRY_PARENT, - jsonObjectMapper.asJsonString(dmiRegistryProperties), OffsetDateTime.now()); - } - - private Map getNewModuleNameToContentMap(final YangModelCmHandle yangModelCmHandle, - final Collection moduleReferences) { - final Collection identifiedNewModuleReferences = cpsModuleService - .identifyNewModuleReferences(moduleReferences); - return dmiModelOperations.getNewYangResourcesFromDmi(yangModelCmHandle, identifiedNewModuleReferences); + jsonForUpdate, OffsetDateTime.now()); } - - private String getModuleSetTag(final YangModelCmHandle yangModelCmHandle, final boolean inUpgrade) { - if (inUpgrade) { - return ModuleOperationsUtils.getUpgradedModuleSetTagFromLockReason( - yangModelCmHandle.getCompositeState().getLockReason()); - } - return yangModelCmHandle.getModuleSetTag(); - } - } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncTasks.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncTasks.java index 18aac7a6c6..590cb56c48 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncTasks.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncTasks.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2022-2023 Nordix Foundation + * Copyright (C) 2022-2024 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -69,10 +69,12 @@ public class ModuleSyncTasks { final CompositeState compositeState = inventoryPersistence.getCmHandleState(cmHandleId); final boolean inUpgrade = ModuleOperationsUtils.inUpgradeOrUpgradeFailed(compositeState); try { - if (!inUpgrade) { + if (inUpgrade) { + moduleSyncService.syncAndUpgradeSchemaSet(yangModelCmHandle); + } else { moduleSyncService.deleteSchemaSetIfExists(cmHandleId); + moduleSyncService.syncAndCreateSchemaSetAndAnchor(yangModelCmHandle); } - moduleSyncService.syncAndCreateOrUpgradeSchemaSetAndAnchor(yangModelCmHandle); yangModelCmHandle.getCompositeState().setLockReason(null); cmHandelStatePerCmHandle.put(yangModelCmHandle, CmHandleState.READY); } catch (final Exception e) { -- cgit 1.2.3-korg