summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/main
diff options
context:
space:
mode:
authormpriyank <priyank.maheshwari@est.tech>2022-08-05 16:34:33 +0100
committermpriyank <priyank.maheshwari@est.tech>2022-08-10 15:59:07 +0100
commitfeb9fb0c0a47f6ccf9e28ea7474def605c6e6a4b (patch)
treeca19885528bc895caf979cc0b983ac8e534a3851 /cps-ncmp-service/src/main
parentdc65647fc26fc276cafdc94c9561cafe32684842 (diff)
CmHandleState transition using state handler
- Raise LCM Event when state transition happens. - Raised events for ADVISED to READY, ADVISED to LOCKED, LOCKED to ADVISED. - Refactor existing code to raise the events correctly. - Refactored existing test scenarios to comply with the code change. Issue-ID: CPS-1034 Change-Id: Ie548e644f6133304d7fa36c892ca2bec7393c074 Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/main')
-rwxr-xr-xcps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java20
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java38
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/CompositeStateUtils.java2
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncWatchdog.java50
4 files changed, 40 insertions, 70 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
index 8462d687b2..0fdecde077 100755
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java
@@ -271,17 +271,12 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
List<CmHandleRegistrationResponse> cmHandleRegistrationResponses = new ArrayList<>();
try {
cmHandleRegistrationResponses = dmiPluginRegistration.getCreatedCmHandles().stream()
- .map(cmHandle -> {
- setCompositeStateToAdvised(cmHandle);
- return YangModelCmHandle.toYangModelCmHandle(
+ .map(cmHandle ->
+ YangModelCmHandle.toYangModelCmHandle(
dmiPluginRegistration.getDmiPlugin(),
dmiPluginRegistration.getDmiDataPlugin(),
dmiPluginRegistration.getDmiModelPlugin(),
- cmHandle);
- }
- )
- .map(this::registerNewCmHandle)
- .collect(Collectors.toList());
+ cmHandle)).map(this::registerNewCmHandle).collect(Collectors.toList());
} catch (final DataValidationException dataValidationException) {
cmHandleRegistrationResponses.add(CmHandleRegistrationResponse.createFailureResponse(dmiPluginRegistration
.getCreatedCmHandles().stream()
@@ -291,13 +286,6 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
return cmHandleRegistrationResponses;
}
- private void setCompositeStateToAdvised(final NcmpServiceCmHandle ncmpServiceCmHandle) {
- final CompositeState compositeState = new CompositeState();
- compositeState.setCmHandleState(CmHandleState.ADVISED);
- compositeState.setLastUpdateTimeNow();
- ncmpServiceCmHandle.setCompositeState(compositeState);
- }
-
protected List<CmHandleRegistrationResponse> parseAndRemoveCmHandlesInDmiRegistration(
final List<String> tobeRemovedCmHandles) {
final List<CmHandleRegistrationResponse> cmHandleRegistrationResponses =
@@ -339,7 +327,7 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
private CmHandleRegistrationResponse registerNewCmHandle(final YangModelCmHandle yangModelCmHandle) {
try {
- inventoryPersistence.saveCmHandle(yangModelCmHandle);
+ lcmEventsCmHandleStateHandler.updateCmHandleState(yangModelCmHandle, CmHandleState.ADVISED);
return CmHandleRegistrationResponse.createSuccessResponse(yangModelCmHandle.getId());
} catch (final AlreadyDefinedException alreadyDefinedException) {
return CmHandleRegistrationResponse.createFailureResponse(
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java
index 1f2cf97fe9..40f70b9c68 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/lcm/LcmEventsCreatorHelper.java
@@ -99,32 +99,32 @@ public class LcmEventsCreatorHelper {
final NcmpServiceCmHandle targetNcmpServiceCmHandle,
final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
- final boolean isDataSyncFlagEnabledChanged =
- isDataSyncEnabledFlagChanged(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
- final boolean isCmHandleStateChanged =
- isCmHandleStateChanged(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
- final boolean isPublicCmHandlePropertiesEqual =
- isPublicCmHandlePropertiesEqual(targetNcmpServiceCmHandle.getPublicProperties(),
+ final boolean hasDataSyncFlagEnabledChanged =
+ hasDataSyncEnabledFlagChanged(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
+ final boolean hasCmHandleStateChanged =
+ hasCmHandleStateChanged(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle);
+ final boolean arePublicCmHandlePropertiesEqual =
+ arePublicCmHandlePropertiesEqual(targetNcmpServiceCmHandle.getPublicProperties(),
existingNcmpServiceCmHandle.getPublicProperties());
final LcmEventsCreator.CmHandleValuesHolder cmHandleValuesHolder = new LcmEventsCreator.CmHandleValuesHolder();
- if (isDataSyncFlagEnabledChanged || isCmHandleStateChanged || (!isPublicCmHandlePropertiesEqual)) {
+ if (hasDataSyncFlagEnabledChanged || hasCmHandleStateChanged || (!arePublicCmHandlePropertiesEqual)) {
cmHandleValuesHolder.setOldValues(new Values());
cmHandleValuesHolder.setNewValues(new Values());
} else {
return cmHandleValuesHolder;
}
- if (isDataSyncFlagEnabledChanged) {
+ if (hasDataSyncFlagEnabledChanged) {
setDataSyncEnabledFlag(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle, cmHandleValuesHolder);
}
- if (isCmHandleStateChanged) {
+ if (hasCmHandleStateChanged) {
setCmHandleStateChange(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle, cmHandleValuesHolder);
}
- if (!isPublicCmHandlePropertiesEqual) {
+ if (!arePublicCmHandlePropertiesEqual) {
setPublicCmHandlePropertiesChange(targetNcmpServiceCmHandle, existingNcmpServiceCmHandle,
cmHandleValuesHolder);
}
@@ -174,21 +174,29 @@ public class LcmEventsCreatorHelper {
return ncmpServiceCmHandle.getCompositeState().getDataSyncEnabled();
}
- private static boolean isDataSyncEnabledFlagChanged(final NcmpServiceCmHandle targetNcmpServiceCmHandle,
+ private static boolean hasDataSyncEnabledFlagChanged(final NcmpServiceCmHandle targetNcmpServiceCmHandle,
final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
- return !targetNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled()
- .equals(existingNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled());
+ final Boolean targetDataSyncFlag = targetNcmpServiceCmHandle.getCompositeState() == null
+ ? null : targetNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled();
+ final Boolean existingDataSyncFlag = existingNcmpServiceCmHandle.getCompositeState() == null
+ ? null : existingNcmpServiceCmHandle.getCompositeState().getDataSyncEnabled();
+
+ if (targetDataSyncFlag == null) {
+ return existingDataSyncFlag != null;
+ }
+
+ return !targetDataSyncFlag.equals(existingDataSyncFlag);
}
- private static boolean isCmHandleStateChanged(final NcmpServiceCmHandle targetNcmpServiceCmHandle,
+ private static boolean hasCmHandleStateChanged(final NcmpServiceCmHandle targetNcmpServiceCmHandle,
final NcmpServiceCmHandle existingNcmpServiceCmHandle) {
return targetNcmpServiceCmHandle.getCompositeState().getCmHandleState()
!= existingNcmpServiceCmHandle.getCompositeState().getCmHandleState();
}
- private static boolean isPublicCmHandlePropertiesEqual(final Map<String, String> targetCmHandleProperties,
+ private static boolean arePublicCmHandlePropertiesEqual(final Map<String, String> targetCmHandleProperties,
final Map<String, String> existingCmHandleProperties) {
if (targetCmHandleProperties.size() != existingCmHandleProperties.size()) {
return false;
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/CompositeStateUtils.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/CompositeStateUtils.java
index 54ca68a0e2..6fabc9300a 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/CompositeStateUtils.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/CompositeStateUtils.java
@@ -52,6 +52,7 @@ public class CompositeStateUtils {
public static Consumer<CompositeState> setCompositeStateToReadyWithInitialDataStoreSyncState() {
return compositeState -> {
compositeState.setDataSyncEnabled(false);
+ compositeState.setLastUpdateTimeNow();
compositeState.setCmHandleState(CmHandleState.READY);
final CompositeState.Operational operational =
getInitialDataStoreSyncState(compositeState.getDataSyncEnabled());
@@ -70,6 +71,7 @@ public class CompositeStateUtils {
public static void setDataSyncEnabledFlagWithDataSyncState(final boolean dataSyncEnabled,
final CompositeState compositeState) {
compositeState.setDataSyncEnabled(dataSyncEnabled);
+ compositeState.setLastUpdateTimeNow();
final CompositeState.Operational operational = getInitialDataStoreSyncState(dataSyncEnabled);
final CompositeState.DataStores dataStores =
CompositeState.DataStores.builder().operationalDataStore(operational).build();
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncWatchdog.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncWatchdog.java
index 37bd1ed0fa..7c2a4fc386 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncWatchdog.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/inventory/sync/ModuleSyncWatchdog.java
@@ -23,13 +23,12 @@ package org.onap.cps.ncmp.api.inventory.sync;
import java.util.List;
import java.util.concurrent.ConcurrentMap;
-import java.util.function.Consumer;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.ncmp.api.impl.event.lcm.LcmEventsCmHandleStateHandler;
import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle;
import org.onap.cps.ncmp.api.inventory.CmHandleState;
import org.onap.cps.ncmp.api.inventory.CompositeState;
-import org.onap.cps.ncmp.api.inventory.DataStoreSyncState;
import org.onap.cps.ncmp.api.inventory.InventoryPersistence;
import org.onap.cps.ncmp.api.inventory.LockReasonCategory;
import org.springframework.scheduling.annotation.Scheduled;
@@ -48,6 +47,8 @@ public class ModuleSyncWatchdog {
private final ConcurrentMap<String, Boolean> moduleSyncSemaphoreMap;
+ private final LcmEventsCmHandleStateHandler lcmEventsCmHandleStateHandler;
+
/**
* Execute Cm Handle poll which changes the cm handle state from 'ADVISED' to 'READY'.
*/
@@ -61,14 +62,13 @@ public class ModuleSyncWatchdog {
try {
moduleSyncService.deleteSchemaSetIfExists(advisedCmHandle);
moduleSyncService.syncAndCreateSchemaSetAndAnchor(advisedCmHandle);
- setCompositeStateToReadyWithInitialDataStoreSyncState().accept(compositeState);
+ lcmEventsCmHandleStateHandler.updateCmHandleState(advisedCmHandle, CmHandleState.READY);
updateModuleSyncSemaphoreMap(cmHandleId);
} catch (final Exception e) {
- setCompositeStateToLocked().accept(compositeState);
syncUtils.updateLockReasonDetailsAndAttempts(compositeState,
LockReasonCategory.LOCKED_MODULE_SYNC_FAILED, e.getMessage());
+ setCmHandleStateLocked(advisedCmHandle, compositeState.getLockReason());
}
- inventoryPersistence.saveCmHandleState(cmHandleId, compositeState);
log.debug("{} is now in {} state", cmHandleId, compositeState.getCmHandleState().name());
} else {
log.debug("{} already processed by another instance", cmHandleId);
@@ -87,44 +87,16 @@ public class ModuleSyncWatchdog {
final CompositeState compositeState = lockedCmHandle.getCompositeState();
final boolean isReadyForRetry = syncUtils.isReadyForRetry(compositeState);
if (isReadyForRetry) {
- setCompositeStateToAdvisedAndRetainOldLockReasonDetails(compositeState);
- log.debug("Locked cm handle {} is being re-synced", lockedCmHandle.getId());
- inventoryPersistence.saveCmHandleState(lockedCmHandle.getId(), compositeState);
+ log.debug("Reset cm handle {} state to ADVISED to re-attempt module-sync", lockedCmHandle.getId());
+ lcmEventsCmHandleStateHandler.updateCmHandleState(lockedCmHandle, CmHandleState.ADVISED);
}
}
}
- private Consumer<CompositeState> setCompositeStateToLocked() {
- return compositeState -> {
- compositeState.setCmHandleState(CmHandleState.LOCKED);
- compositeState.setLastUpdateTimeNow();
- };
- }
-
- private Consumer<CompositeState> setCompositeStateToReadyWithInitialDataStoreSyncState() {
- return compositeState -> {
- compositeState.setDataSyncEnabled(false);
- compositeState.setCmHandleState(CmHandleState.READY);
- final CompositeState.Operational operational = getDataStoreSyncState();
- final CompositeState.DataStores dataStores = CompositeState.DataStores.builder()
- .operationalDataStore(operational)
- .build();
- compositeState.setDataStores(dataStores);
- };
- }
-
- private void setCompositeStateToAdvisedAndRetainOldLockReasonDetails(final CompositeState compositeState) {
- compositeState.setCmHandleState(CmHandleState.ADVISED);
- compositeState.setLastUpdateTimeNow();
- final String oldLockReasonDetails = compositeState.getLockReason().getDetails();
- final CompositeState.LockReason lockReason = CompositeState.LockReason.builder()
- .details(oldLockReasonDetails).build();
- compositeState.setLockReason(lockReason);
- }
-
- private CompositeState.Operational getDataStoreSyncState() {
- final DataStoreSyncState dataStoreSyncState = DataStoreSyncState.NONE_REQUESTED;
- return CompositeState.Operational.builder().dataStoreSyncState(dataStoreSyncState).build();
+ private void setCmHandleStateLocked(final YangModelCmHandle advisedCmHandle,
+ final CompositeState.LockReason lockReason) {
+ advisedCmHandle.getCompositeState().setLockReason(lockReason);
+ lcmEventsCmHandleStateHandler.updateCmHandleState(advisedCmHandle, CmHandleState.LOCKED);
}
private void updateModuleSyncSemaphoreMap(final String cmHandleId) {