diff options
author | danielhanrahan <daniel.hanrahan@est.tech> | 2024-02-22 10:20:17 +0000 |
---|---|---|
committer | danielhanrahan <daniel.hanrahan@est.tech> | 2024-02-22 10:55:36 +0000 |
commit | 2ec435bc7abe219c76331e109f9e157fddaa3a4b (patch) | |
tree | 4d97495fe937a2516c5fd6e99f58f7b9015bb425 /cps-ncmp-service/src/main | |
parent | 63aff8f081da3ca039bd7a29075f7edc495fb5b6 (diff) |
Introduce class for Module Delta during module sync
Removed ImmutableTriple<String, Map<String, String>, Collection<ModuleReference>>
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 <daniel.hanrahan@est.tech>
Change-Id: I95462ab55dcae7d98b9e2671fc278c4ded45f3fc
Diffstat (limited to 'cps-ncmp-service/src/main')
2 files changed, 41 insertions, 58 deletions
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<String, String> NO_NEW_MODULES = Collections.emptyMap(); + @AllArgsConstructor + private static final class ModuleDelta { + Collection<ModuleReference> allModuleReferences; + Map<String, String> 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<String, Map<String, String>, Collection<ModuleReference>> - allModuleReferencesAndNewModuleNameByModuleSetTag - = getAllModuleReferencesAndNewYangResourcesByModuleSetTag(yangModelCmHandle, inUpgrade); - - final String moduleSetTag = allModuleReferencesAndNewModuleNameByModuleSetTag.getLeft(); - final Map<String, String> newYangResources = allModuleReferencesAndNewModuleNameByModuleSetTag.getMiddle(); - final Collection<ModuleReference> 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<String, Map<String, String>, Collection<ModuleReference>> - getAllModuleReferencesAndNewYangResourcesByModuleSetTag(final YangModelCmHandle yangModelCmHandle, - final boolean inUpgrade) { - final String moduleSetTag = getModuleSetTag(yangModelCmHandle, inUpgrade); + private ModuleDelta getModuleDelta(final YangModelCmHandle yangModelCmHandle, final String targetModuleSetTag) { final Collection<ModuleReference> allModuleReferences; final Map<String, String> 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<String, Map<String, String>> dmiRegistryProperties = new HashMap<>(1); - final Map<String, String> 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<String, String> getNewModuleNameToContentMap(final YangModelCmHandle yangModelCmHandle, - final Collection<ModuleReference> moduleReferences) { - final Collection<ModuleReference> 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) { |