diff options
author | Joseph Keenan <joseph.keenan@est.tech> | 2022-07-04 09:11:58 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2022-07-04 09:11:58 +0000 |
commit | d797b35547c24f3ebd6bd5ad53eed1891d5783b3 (patch) | |
tree | c1f2cda6474e98ac4db1ae995a3b6edab3b2dc93 /cps-ncmp-rest | |
parent | 8f8331d713970a9610861c31f571e9acd60ade65 (diff) | |
parent | 4e596846aa6f1b799487c553d6830004489d96a1 (diff) |
Merge "Simplified 'External' lock reason Mapping"
Diffstat (limited to 'cps-ncmp-rest')
5 files changed, 46 insertions, 12 deletions
diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml index 8249a7a3d7..2cb9d894c0 100644 --- a/cps-ncmp-rest/docs/openapi/components.yaml +++ b/cps-ncmp-rest/docs/openapi/components.yaml @@ -263,10 +263,10 @@ components: properties: reason: type: string - example: LOCKED_OTHER + example: LOCKED_MISBEHAVING details: type: string - example: locked due to module sync + example: locked due to failure in module sync dataStores: type: object diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java index 33355475d9..b20487119b 100755 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java @@ -286,7 +286,8 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { final CompositeState cmHandleState = networkCmProxyDataService.getCmHandleCompositeState(cmHandleId); final RestOutputCmHandleCompositeState restOutputCmHandleCompositeState = new RestOutputCmHandleCompositeState(); - restOutputCmHandleCompositeState.setState(cmHandleStateMapper.toCmHandleCompositeState(cmHandleState)); + restOutputCmHandleCompositeState.setState( + cmHandleStateMapper.toCmHandleCompositeStateExternalLockReason(cmHandleState)); return ResponseEntity.ok(restOutputCmHandleCompositeState); } @@ -325,7 +326,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { restOutputCmHandle.setCmHandle(ncmpServiceCmHandle.getCmHandleId()); cmHandlePublicProperties.add(ncmpServiceCmHandle.getPublicProperties()); restOutputCmHandle.setPublicCmHandleProperties(cmHandlePublicProperties); - restOutputCmHandle.setState(cmHandleStateMapper.toCmHandleCompositeState( + restOutputCmHandle.setState(cmHandleStateMapper.toCmHandleCompositeStateExternalLockReason( ncmpServiceCmHandle.getCompositeState())); return restOutputCmHandle; } diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java index ca109d649c..55b64ec760 100644 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java @@ -28,6 +28,7 @@ import org.mapstruct.NullValuePropertyMappingStrategy; import org.onap.cps.ncmp.api.inventory.CompositeState; import org.onap.cps.ncmp.rest.model.CmHandleCompositeState; import org.onap.cps.ncmp.rest.model.DataStores; +import org.onap.cps.ncmp.rest.model.LockReason; import org.onap.cps.ncmp.rest.model.SyncState; @Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, @@ -35,8 +36,8 @@ import org.onap.cps.ncmp.rest.model.SyncState; public interface CmHandleStateMapper { @Mapping(target = "dataSyncState", source = "dataStores", qualifiedByName = "dataStoreToDataSyncState") - @Mapping(target = "lockReason.reason", source = "lockReason.lockReasonCategory") - CmHandleCompositeState toCmHandleCompositeState(CompositeState compositeState); + @Mapping(target = "lockReason", source = "lockReason", qualifiedByName = "toExternalLockReason") + CmHandleCompositeState toCmHandleCompositeStateExternalLockReason(CompositeState compositeState); /** * Convert from CompositeState datastore to RestOutput Datastores. @@ -66,4 +67,21 @@ public interface CmHandleStateMapper { } + /** + * Convert Internal Lock Reason to External Lock Reason. + * + * @param internalLockReason Internal Lock Reason + * + * @return externalLockReason + */ + @Named("toExternalLockReason") + static LockReason toExternalLockReason(CompositeState.LockReason internalLockReason) { + final LockReason externalLockReason = new LockReason(); + if (internalLockReason.getLockReasonCategory() != null) { + externalLockReason.setReason("LOCKED_MISBEHAVING"); + } + externalLockReason.setDetails(internalLockReason.getDetails()); + return externalLockReason; + } + } diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy index 2cb397ded5..23263c9aa8 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy @@ -432,7 +432,7 @@ class NetworkCmProxyControllerSpec extends Specification { def compositeStateTestObject() { new CompositeState(cmHandleState: CmHandleState.ADVISED, - lockReason: CompositeState.LockReason.builder().lockReasonCategory(LockReasonCategory.LOCKED_MISBEHAVING).details("lock misbehaving details").build(), + lockReason: CompositeState.LockReason.builder().lockReasonCategory(LockReasonCategory.LOCKED_MODULE_SYNC_FAILED).details("lock details").build(), lastUpdateTime: formattedDateAndTime.toString(), dataSyncEnabled: false, dataStores: dataStores()) @@ -448,7 +448,7 @@ class NetworkCmProxyControllerSpec extends Specification { '"state":', '"cmHandleState":"ADVISED"', '"reason":"LOCKED_MISBEHAVING"', - '"details":"lock misbehaving details"', + '"details":"lock details"', '"lastUpdateTime":"2022-12-31T20:30:40.000+0000"', '"dataSyncEnabled":false', '"dataSyncState":', diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy index 42fda770b7..677cf66127 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy @@ -38,25 +38,40 @@ class CmHandleStateMapperTest extends Specification { .format(OffsetDateTime.of(2022, 12, 31, 20, 30, 40, 1, ZoneOffset.UTC)) def objectUnderTest = Mappers.getMapper(CmHandleStateMapper) - def 'Composite State to Rest Output CmHandleState'() { + def 'Composite State to CmHandleCompositeState'() { given: 'a composite state model' def compositeState = new CompositeStateBuilder() .withCmHandleState(CmHandleState.ADVISED) .withLastUpdatedTime(formattedDateAndTime.toString()) - .withLockReason(LockReasonCategory.LOCKED_MISBEHAVING, 'locked other details') + .withLockReason(LockReasonCategory.LOCKED_MODULE_SYNC_FAILED, 'locked details') .withOperationalDataStores(DataStoreSyncState.SYNCHRONIZED, formattedDateAndTime).build() compositeState.setDataSyncEnabled(false) when: 'mapper is called' - def result = objectUnderTest.toCmHandleCompositeState(compositeState) + def result = objectUnderTest.toCmHandleCompositeStateExternalLockReason(compositeState) then: 'result is of the correct type' assert result.class == CmHandleCompositeState.class and: 'mapped result should have correct values' assert !result.dataSyncEnabled assert result.lastUpdateTime == formattedDateAndTime assert result.lockReason.reason == 'LOCKED_MISBEHAVING' - assert result.lockReason.details == 'locked other details' + assert result.lockReason.details == 'locked details' assert result.cmHandleState == 'ADVISED' assert result.dataSyncState.operational.getState() != null } + def 'Internal to External Lock Reason Mapping of #scenario'() { + given: 'a LOCKED composite state with locked reason of #scenario' + def compositeState = new CompositeStateBuilder() + .withCmHandleState(CmHandleState.LOCKED) + .withLockReason(lockReason, '').build() + when: 'the composite state is mapped to a CMHandle composite state' + def result = objectUnderTest.toCmHandleCompositeStateExternalLockReason(compositeState) + then: 'the composite state contains the expected lock Reason and details' + result.getLockReason().getReason() == expectedExternalLockReason + where: + scenario | lockReason || expectedExternalLockReason + 'LOCKED_MODULE_SYNC_FAILED' | LockReasonCategory.LOCKED_MODULE_SYNC_FAILED || 'LOCKED_MISBEHAVING' + 'null value' | null || null + } + } |