From c2990bda424098d9830fcd4b70bdb04eb0d27272 Mon Sep 17 00:00:00 2001 From: rameshiyer27 Date: Thu, 14 Aug 2025 21:56:58 +0100 Subject: [PATCH] Fix Acmr to send outProperties in the Prime request Issue-ID: POLICY-5448 Signed-off-by: rameshiyer27 Change-Id: I72d04c0beb150eb7c0fbdf5323e0e1c2416a2ed7 --- .../onap/policy/clamp/models/acm/utils/AcmUtils.java | 18 +++++++----------- .../policy/clamp/models/acm/utils/AcmUtilsTest.java | 16 ++++++++++++++-- .../supervision/comm/ParticipantPrimePublisher.java | 2 +- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/utils/AcmUtils.java b/models/src/main/java/org/onap/policy/clamp/models/acm/utils/AcmUtils.java index cb9961305..dfe213f22 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/utils/AcmUtils.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/utils/AcmUtils.java @@ -112,7 +112,8 @@ public final class AcmUtils { * @param supportedElementMap supported Element Map */ public static List prepareParticipantPriming( - List> acElements, Map supportedElementMap) { + List> acElements, Map supportedElementMap, + AutomationCompositionDefinition acmDefinition) { Map> map = new HashMap<>(); for (var elementEntry : acElements) { @@ -126,6 +127,10 @@ public final class AcmUtils { acElementDefinition.setAcElementDefinitionId( new ToscaConceptIdentifier(elementEntry.getKey(), elementEntry.getValue().getVersion())); acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(elementEntry.getValue()); + var nodeTemplateState = acmDefinition.getElementStateMap() + .get(acElementDefinition.getAcElementDefinitionId().getName()); + acElementDefinition.setOutProperties(nodeTemplateState.getOutProperties()); + map.putIfAbsent(participantId, new ArrayList<>()); map.get(participantId).add(acElementDefinition); } @@ -522,16 +527,7 @@ public final class AcmUtils { elementList.add(elementEntry); } } - var list = prepareParticipantPriming(elementList, supportedElementMap); - for (var participantDefinition : list) { - for (var elementDe : participantDefinition.getAutomationCompositionElementDefinitionList()) { - var state = acmDefinition.getElementStateMap().get(elementDe.getAcElementDefinitionId().getName()); - if (state != null) { - elementDe.setOutProperties(state.getOutProperties()); - } - } - } - return list; + return prepareParticipantPriming(elementList, supportedElementMap, acmDefinition); } /** diff --git a/models/src/test/java/org/onap/policy/clamp/models/acm/utils/AcmUtilsTest.java b/models/src/test/java/org/onap/policy/clamp/models/acm/utils/AcmUtilsTest.java index f7f379ecd..ea5c85071 100644 --- a/models/src/test/java/org/onap/policy/clamp/models/acm/utils/AcmUtilsTest.java +++ b/models/src/test/java/org/onap/policy/clamp/models/acm/utils/AcmUtilsTest.java @@ -104,9 +104,17 @@ class AcmUtilsTest { var acElements = AcmUtils.extractAcElementsFromServiceTemplate(serviceTemplate, AUTOMATION_COMPOSITION_ELEMENT); + var acDefinition = new AutomationCompositionDefinition(); + acDefinition.setState(AcTypeState.PRIMED); + acDefinition.setServiceTemplate(serviceTemplate); + acDefinition.setCompositionId(UUID.randomUUID()); + acDefinition.setElementStateMap(AcmUtils.createElementStateMap(acElements, AcTypeState.PRIMED)); + acDefinition.getElementStateMap().values().forEach(nodeTemplateState + -> nodeTemplateState.setOutProperties(Map.of("outProperty", "testProperty"))); + Map map = new HashMap<>(); var participantId = UUID.randomUUID(); - assertThatThrownBy(() -> AcmUtils.prepareParticipantPriming(acElements, map)).hasMessageMatching( + assertThatThrownBy(() -> AcmUtils.prepareParticipantPriming(acElements, map, acDefinition)).hasMessageMatching( "Element Type org.onap.policy.clamp.acm.PolicyAutomationCompositionElement 1.0.0 not supported"); map.put(new ToscaConceptIdentifier("org.onap.policy.clamp.acm.PolicyAutomationCompositionElement", "1.0.0"), participantId); @@ -114,8 +122,12 @@ class AcmUtilsTest { "1.0.0"), participantId); map.put(new ToscaConceptIdentifier("org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "1.0.0"), participantId); - var result = AcmUtils.prepareParticipantPriming(acElements, map); + var result = AcmUtils.prepareParticipantPriming(acElements, map, acDefinition); assertThat(result).isNotEmpty().hasSize(1); + for (var participantDefList : result) { + assertTrue(participantDefList.getAutomationCompositionElementDefinitionList().stream() + .allMatch(element -> "testProperty".equals(element.getOutProperties().get("outProperty")))); + } } @Test diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java index 34bcb014d..dfc03869d 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/supervision/comm/ParticipantPrimePublisher.java @@ -118,7 +118,7 @@ public class ParticipantPrimePublisher extends AbstractParticipantPublisher