Add compositionId to rollback endpoint 93/141393/3
authorwaynedunican <wayne.dunican@est.tech>
Fri, 27 Jun 2025 09:16:45 +0000 (10:16 +0100)
committerWayne Dunican <wayne.dunican@est.tech>
Mon, 30 Jun 2025 07:54:58 +0000 (07:54 +0000)
Issue-ID: POLICY-5364
Change-Id: I39721cd68007a494480147338bdab5e0de387061
Signed-off-by: waynedunican <wayne.dunican@est.tech>
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java
runtime-acm/src/main/resources/openapi/openapi.yaml
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProviderTest.java

index fdafcf0..ee1a47a 100644 (file)
@@ -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);
 
index f20f3f9..494d3d5 100644 (file)
@@ -121,8 +121,8 @@ public class InstantiationController extends AbstractRestController implements A
     }
 
     @Override
-    public ResponseEntity<Void> rollbackCompositionInstance(UUID instanceId) {
-        provider.rollback(instanceId);
+    public ResponseEntity<Void> rollbackCompositionInstance(UUID compositionId, UUID instanceId) {
+        provider.rollback(compositionId, instanceId);
         return ResponseEntity.accepted().build();
     }
 }
index d22fbfe..ab54dff 100644 (file)
@@ -92,7 +92,7 @@ public class InstantiationControllerStub extends AbstractRestController implemen
     }
 
     @Override
-    public ResponseEntity<Void> rollbackCompositionInstance(UUID instanceId) {
+    public ResponseEntity<Void> rollbackCompositionInstance(UUID compositionId, UUID instanceId) {
         return new ResponseEntity<>(HttpStatus.ACCEPTED);
     }
 }
index 7b60a89..2f81a8f 100644 (file)
@@ -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
index a604fd5..0cfd08e 100644 (file)
@@ -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());