From: waynedunican Date: Fri, 27 Jun 2025 09:16:45 +0000 (+0100) Subject: Add compositionId to rollback endpoint X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F93%2F141393%2F3;p=policy%2Fclamp.git Add compositionId to rollback endpoint Issue-ID: POLICY-5364 Change-Id: I39721cd68007a494480147338bdab5e0de387061 Signed-off-by: waynedunican --- diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java index fdafcf0c5..ee1a47a2e 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java @@ -463,8 +463,9 @@ public class AutomationCompositionInstantiationProvider { * * @param instanceId the instanceId */ - public void rollback(UUID instanceId) { + public void rollback(UUID compositionId, UUID instanceId) { var automationComposition = automationCompositionProvider.getAutomationComposition(instanceId); + validateCompositionRequested(compositionId, automationComposition); var automationCompositionToRollback = automationCompositionProvider.getAutomationCompositionRollback(instanceId); diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java index f20f3f958..494d3d56a 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java @@ -121,8 +121,8 @@ public class InstantiationController extends AbstractRestController implements A } @Override - public ResponseEntity rollbackCompositionInstance(UUID instanceId) { - provider.rollback(instanceId); + public ResponseEntity rollbackCompositionInstance(UUID compositionId, UUID instanceId) { + provider.rollback(compositionId, instanceId); return ResponseEntity.accepted().build(); } } diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java index d22fbfea8..ab54dff3e 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java @@ -92,7 +92,7 @@ public class InstantiationControllerStub extends AbstractRestController implemen } @Override - public ResponseEntity rollbackCompositionInstance(UUID instanceId) { + public ResponseEntity rollbackCompositionInstance(UUID compositionId, UUID instanceId) { return new ResponseEntity<>(HttpStatus.ACCEPTED); } } diff --git a/runtime-acm/src/main/resources/openapi/openapi.yaml b/runtime-acm/src/main/resources/openapi/openapi.yaml index 7b60a89c1..2f81a8f29 100644 --- a/runtime-acm/src/main/resources/openapi/openapi.yaml +++ b/runtime-acm/src/main/resources/openapi/openapi.yaml @@ -1623,6 +1623,13 @@ paths: description: Triggers a rollback of the specified instance. operationId: rollbackCompositionInstance parameters: + - name: compositionId + in: path + description: The UUID of the composition definition on which to rollback + required: true + schema: + type: string + format: uuid - name: instanceId in: path description: The UUID of the automation composition definition on which to rollback diff --git a/runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProviderTest.java b/runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProviderTest.java index a604fd577..0cfd08ec7 100644 --- a/runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProviderTest.java +++ b/runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProviderTest.java @@ -576,7 +576,7 @@ class AutomationCompositionInstantiationProviderTest { encryptionUtils); var instanceId = automationComposition.getInstanceId(); - assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(instanceId)); + assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(compositionId, instanceId)); // DeployState != MIGRATION_REVERTING when(acProvider.getAutomationComposition(automationComposition.getInstanceId())) @@ -584,18 +584,22 @@ class AutomationCompositionInstantiationProviderTest { when(acProvider.getAutomationCompositionRollback(any(UUID.class))).thenReturn(rollbackRecord.toAuthorative()); automationComposition.setDeployState(DeployState.DELETING); - assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(instanceId)); + assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(compositionId, instanceId)); // SubState != NONE automationComposition.setDeployState(DeployState.DEPLOYED); automationComposition.setSubState(SubState.PREPARING); - assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(instanceId)); + assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(compositionId, instanceId)); // StateChangeResult != NO_ERROR automationComposition.setSubState(SubState.NONE); automationComposition.setStateChangeResult(StateChangeResult.FAILED); - assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(instanceId)); + assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(compositionId, instanceId)); + // !compositionId.equals(compId) + automationComposition.setStateChangeResult(StateChangeResult.NO_ERROR); + automationComposition.setCompositionId(UUID.randomUUID()); + assertThrows(PfModelRuntimeException.class, () -> instantiationProvider.rollback(compositionId, instanceId)); verify(acProvider, never()).updateAutomationComposition(any()); } @@ -631,7 +635,7 @@ class AutomationCompositionInstantiationProviderTest { .thenReturn(automationComposition); when(acProvider.getAutomationCompositionRollback(any(UUID.class))).thenReturn(rollbackRecord.toAuthorative()); - instantiationProvider.rollback(automationComposition.getInstanceId()); + instantiationProvider.rollback(compositionId, automationComposition.getInstanceId()); verify(acProvider).updateAutomationComposition(automationComposition); assertEquals(DeployState.MIGRATION_REVERTING, automationComposition.getDeployState());