aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/main/java/org/onap
diff options
context:
space:
mode:
authordanielhanrahan <daniel.hanrahan@est.tech>2024-02-22 10:20:17 +0000
committerdanielhanrahan <daniel.hanrahan@est.tech>2024-02-22 10:55:36 +0000
commit2ec435bc7abe219c76331e109f9e157fddaa3a4b (patch)
tree4d97495fe937a2516c5fd6e99f58f7b9015bb425 /cps-ncmp-service/src/main/java/org/onap
parent63aff8f081da3ca039bd7a29075f7edc495fb5b6 (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/java/org/onap')
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncService.java91
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/inventory/sync/ModuleSyncTasks.java8
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 dabfbbc6d..e257112fc 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 18aac7a6c..590cb56c4 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) {