diff options
author | FrancescoFioraEst <francesco.fiora@est.tech> | 2024-01-04 11:15:14 +0000 |
---|---|---|
committer | Francesco Fiora <francesco.fiora@est.tech> | 2024-01-04 13:06:41 +0000 |
commit | 2064e725f74edf8fc7873c9ebef1d8bf7f65c5a8 (patch) | |
tree | cf068355e05e72fa16154744316763546a751cec /participant | |
parent | 664af40d4c073404d6c067731e25fc44dab3f2c2 (diff) |
Add support for OutProperties instance in deploy scenario
Add support for OutProperties instance, operationalState
and useState in deploy scenario.
Issue-ID: POLICY-4911
Change-Id: I47b5e63b21e4fedd625413de8e80797138fb8d8a
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
Diffstat (limited to 'participant')
3 files changed, 100 insertions, 35 deletions
diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProvider.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProvider.java index 08d5ccd32..dc1bb051a 100644 --- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProvider.java +++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProvider.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2023 Nordix Foundation. + * Copyright (C) 2023-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -133,6 +133,7 @@ public class CacheProvider { */ public void initializeAutomationComposition(@NonNull UUID compositionId, @NonNull UUID instanceId, ParticipantDeploy participantDeploy) { + var acLast = automationCompositions.get(instanceId); Map<UUID, AutomationCompositionElement> acElementMap = new LinkedHashMap<>(); for (var element : participantDeploy.getAcElementList()) { var acElement = new AutomationCompositionElement(); @@ -142,14 +143,19 @@ public class CacheProvider { acElement.setDeployState(DeployState.DEPLOYING); acElement.setLockState(LockState.NONE); acElement.setProperties(element.getProperties()); + var acElementLast = acLast != null ? acLast.getElements().get(element.getId()) : null; + if (acElementLast != null) { + acElement.setOutProperties(acElementLast.getOutProperties()); + acElement.setOperationalState(acElementLast.getOperationalState()); + acElement.setUseState(acElementLast.getUseState()); + } acElementMap.put(element.getId(), acElement); } - var automationComposition = new AutomationComposition(); automationComposition.setCompositionId(compositionId); automationComposition.setInstanceId(instanceId); automationComposition.setElements(acElementMap); - automationCompositions.put(automationComposition.getInstanceId(), automationComposition); + automationCompositions.put(instanceId, automationComposition); } /** diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java index f207dc511..e55de0192 100644 --- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/handler/CacheProviderTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2023 Nordix Foundation. + * Copyright (C) 2023-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,17 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import java.util.UUID; import org.junit.jupiter.api.Test; import org.onap.policy.clamp.acm.participant.intermediary.main.parameters.CommonTestData; -import org.onap.policy.clamp.common.acm.exception.AutomationCompositionException; -import org.onap.policy.clamp.models.acm.concepts.AcElementDeploy; -import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition; -import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy; -import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; class CacheProviderTest { @@ -81,34 +74,19 @@ class CacheProviderTest { } @Test - void testinitCommonProperties() throws AutomationCompositionException { - var parameter = CommonTestData.getParticipantParameters(); - var cacheProvider = new CacheProvider(parameter); - var participantDeploy = new ParticipantDeploy(); - participantDeploy.setParticipantId(cacheProvider.getParticipantId()); - - var compositionId = UUID.randomUUID(); - - List<AutomationCompositionElementDefinition> definitions = new ArrayList<>(); + void testinitCommonProperties() { var automationComposition = CommonTestData.getTestAutomationCompositions().getAutomationCompositionList().get(0); automationComposition.setInstanceId(UUID.randomUUID()); + var compositionId = UUID.randomUUID(); automationComposition.setCompositionId(compositionId); - for (var element : automationComposition.getElements().values()) { - var acElementDefinition = new AutomationCompositionElementDefinition(); - acElementDefinition.setAcElementDefinitionId(element.getDefinition()); - var nodeTemplate = new ToscaNodeTemplate(); - nodeTemplate.setProperties(Map.of("key", "value")); - acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(nodeTemplate); - definitions.add(acElementDefinition); - - var acElement = new AcElementDeploy(); - acElement.setId(element.getId()); - acElement.setDefinition(element.getDefinition()); - participantDeploy.getAcElementList().add(acElement); - } + var definitions = + CommonTestData.createAutomationCompositionElementDefinitionList(automationComposition); + var cacheProvider = new CacheProvider(CommonTestData.getParticipantParameters()); cacheProvider.addElementDefinition(compositionId, definitions); + var participantDeploy = + CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), automationComposition); cacheProvider.initializeAutomationComposition(compositionId, automationComposition.getInstanceId(), participantDeploy); @@ -130,6 +108,41 @@ class CacheProviderTest { } @Test + void testDeply() { + var automationComposition = + CommonTestData.getTestAutomationCompositions().getAutomationCompositionList().get(0); + automationComposition.setInstanceId(UUID.randomUUID()); + var compositionId = UUID.randomUUID(); + automationComposition.setCompositionId(compositionId); + var parameter = CommonTestData.getParticipantParameters(); + var cacheProvider = new CacheProvider(parameter); + + var participantDeploy = + CommonTestData.createparticipantDeploy(cacheProvider.getParticipantId(), automationComposition); + cacheProvider.initializeAutomationComposition(compositionId, automationComposition.getInstanceId(), + participantDeploy); + + var ac = cacheProvider.getAutomationComposition(automationComposition.getInstanceId()); + for (var element : ac.getElements().values()) { + element.setOperationalState("OperationalState"); + element.setUseState("UseState"); + element.setOutProperties(Map.of("key", "value")); + } + + // deploy again + cacheProvider.initializeAutomationComposition(compositionId, automationComposition.getInstanceId(), + participantDeploy); + + // check UseState, OperationalState and OutProperties have not changed + ac = cacheProvider.getAutomationComposition(automationComposition.getInstanceId()); + for (var element : ac.getElements().values()) { + assertEquals("OperationalState", element.getOperationalState()); + assertEquals("UseState", element.getUseState()); + assertEquals("value", element.getOutProperties().get("key")); + } + } + + @Test void testInitializeAutomationComposition() { var parameter = CommonTestData.getParticipantParameters(); var cacheProvider = new CacheProvider(parameter); diff --git a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java index acff103a2..46894fb43 100644 --- a/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java +++ b/participant/participant-intermediary/src/test/java/org/onap/policy/clamp/acm/participant/intermediary/main/parameters/CommonTestData.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021-2023 Nordix Foundation. + * Copyright (C) 2021-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ package org.onap.policy.clamp.acm.participant.intermediary.main.parameters; import java.io.File; import java.time.Instant; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -29,11 +30,14 @@ import java.util.TreeMap; import java.util.UUID; import org.onap.policy.clamp.acm.participant.intermediary.handler.DummyParticipantParameters; import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantIntermediaryParameters; +import org.onap.policy.clamp.models.acm.concepts.AcElementDeploy; import org.onap.policy.clamp.models.acm.concepts.AcElementRestart; import org.onap.policy.clamp.models.acm.concepts.AutomationComposition; +import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition; import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions; import org.onap.policy.clamp.models.acm.concepts.DeployState; import org.onap.policy.clamp.models.acm.concepts.LockState; +import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy; import org.onap.policy.clamp.models.acm.concepts.ParticipantRestartAc; import org.onap.policy.clamp.models.acm.concepts.ParticipantSupportedElementType; import org.onap.policy.clamp.models.acm.messages.dmaap.participant.AutomationCompositionStateChange; @@ -44,6 +48,7 @@ import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate; /** * Class to hold/create all parameters for test cases. @@ -202,7 +207,7 @@ public class CommonTestData { * Return a AutomationCompositionStateChange. * * @param participantId the participantId - * @param instanceId th AutomationComposition Id + * @param instanceId the AutomationComposition Id * @param deployOrder a DeployOrder * @param lockOrder a LockOrder * @return a AutomationCompositionStateChange @@ -236,4 +241,45 @@ public class CommonTestData { participantRestartAc.getAcElementList().add(acElementRestart); return participantRestartAc; } + + /** + * Create a ParticipantDeploy from an AutomationComposition. + * + * @param participantId the participantId + * @param automationComposition the AutomationComposition + * @return the ParticipantDeploy + */ + public static ParticipantDeploy createparticipantDeploy(UUID participantId, + AutomationComposition automationComposition) { + var participantDeploy = new ParticipantDeploy(); + participantDeploy.setParticipantId(participantId); + for (var element : automationComposition.getElements().values()) { + var acElement = new AcElementDeploy(); + acElement.setId(element.getId()); + acElement.setDefinition(element.getDefinition()); + acElement.setProperties(element.getProperties()); + participantDeploy.getAcElementList().add(acElement); + } + return participantDeploy; + } + + /** + * create a List of AutomationCompositionElementDefinition from an AutomationComposition. + * + * @param automationComposition the AutomationComposition + * @return the List of AutomationCompositionElementDefinition + */ + public static List<AutomationCompositionElementDefinition> + createAutomationCompositionElementDefinitionList(AutomationComposition automationComposition) { + List<AutomationCompositionElementDefinition> definitions = new ArrayList<>(); + for (var element : automationComposition.getElements().values()) { + var acElementDefinition = new AutomationCompositionElementDefinition(); + acElementDefinition.setAcElementDefinitionId(element.getDefinition()); + var nodeTemplate = new ToscaNodeTemplate(); + nodeTemplate.setProperties(Map.of("key", "value")); + acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(nodeTemplate); + definitions.add(acElementDefinition); + } + return definitions; + } } |