diff options
author | FrancescoFioraEst <francesco.fiora@est.tech> | 2023-01-30 13:43:10 +0000 |
---|---|---|
committer | FrancescoFioraEst <francesco.fiora@est.tech> | 2023-01-31 10:20:02 +0000 |
commit | 7f762dfa19f673241f8ea1b2ff3d56d2d58bdcdb (patch) | |
tree | 591b04b568efed20c76f7d67973163d075d27162 /models/src/main | |
parent | 934f7bd443225a6945b0542fa5cb7c043deac426 (diff) |
Refactor ACM Update message to ACM Deploy message in ACM
Refactor ACM Update message to ACM Deploy message in ACM
and add AcElementDeploy in Deploy message.
AutomationCompositionElement will be removed from the message
after POLICY-4506 and POLICY-4507.
Issue-ID: POLICY-4543
Change-Id: I8444e15b3b4cb1209ffd083fb965e0707fbd9625
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
Diffstat (limited to 'models/src/main')
7 files changed, 109 insertions, 34 deletions
diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AcElementDeploy.java b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AcElementDeploy.java new file mode 100644 index 000000000..6b6eda319 --- /dev/null +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AcElementDeploy.java @@ -0,0 +1,67 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.models.acm.concepts; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.function.UnaryOperator; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; +import lombok.ToString; +import org.onap.policy.clamp.models.acm.messages.rest.instantiation.DeployOrder; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; + +/** + * Class to represent a automation composition instance to send for deploy. + */ +@NoArgsConstructor +@Data +@ToString +public class AcElementDeploy { + + @NonNull + private ToscaConceptIdentifier definition = new ToscaConceptIdentifier(PfConceptKey.getNullKey()); + + @NonNull + private DeployOrder orderedState = DeployOrder.DEPLOY; + + private ToscaServiceTemplate toscaServiceTemplateFragment; + + // A map indexed by the property name. Each map entry is the serialized value of the property, + // which can be deserialized into an instance of the type of the property. + private Map<String, Object> properties = new LinkedHashMap<>(); + + /** + * Copy constructor, does a deep copy but as all fields here are immutable, it's just a regular copy. + * + * @param otherElement the other element to copy from + */ + public AcElementDeploy(final AcElementDeploy otherElement) { + this.definition = new ToscaConceptIdentifier(otherElement.definition); + this.orderedState = otherElement.orderedState; + this.toscaServiceTemplateFragment = otherElement.toscaServiceTemplateFragment; + this.properties = PfUtils.mapMap(otherElement.properties, UnaryOperator.identity()); + } +} diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AutomationCompositionElementAck.java b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AcElementDeployAck.java index b100f28c0..2db1555bf 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AutomationCompositionElementAck.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/AcElementDeployAck.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,11 +29,14 @@ import lombok.ToString; @Setter @AllArgsConstructor @ToString -public class AutomationCompositionElementAck { +public class AcElementDeployAck { // State of the AutomationCompositionElement private AutomationCompositionState state; + // State of the AutomationCompositionElement + private DeployState deployState; + // Result: Success/Fail. private Boolean result; diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantUpdates.java b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantDeploy.java index 031fd5c02..337a09d17 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantUpdates.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantDeploy.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,27 +30,31 @@ import lombok.ToString; import org.onap.policy.models.base.PfUtils; /** - * Class to represent a participant definition update instance. + * Class to represent a participant definition instance for Deploy. */ @Getter @NoArgsConstructor @Data @ToString -public class ParticipantUpdates { +public class ParticipantDeploy { private UUID participantId; // List of AutomationCompositionElement values for a particular participant private List<AutomationCompositionElement> automationCompositionElementList = new ArrayList<>(); + // List of Automation Composition Element Deploy for a particular participant + private List<AcElementDeploy> acElementList = new ArrayList<>(); + /** * Copy constructor, does a deep copy but as all fields here are immutable, it's just a regular copy. * - * @param participantUpdates the participant with updates to copy from + * @param copyConstructor the participant with updates to copy from */ - public ParticipantUpdates(final ParticipantUpdates participantUpdates) { - this.participantId = participantUpdates.participantId; + public ParticipantDeploy(final ParticipantDeploy copyConstructor) { + this.participantId = copyConstructor.participantId; this.automationCompositionElementList = PfUtils.mapList( - participantUpdates.automationCompositionElementList, AutomationCompositionElement::new); + copyConstructor.automationCompositionElementList, AutomationCompositionElement::new); + this.acElementList = PfUtils.mapList(copyConstructor.acElementList, AcElementDeploy::new); } } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionUpdate.java b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionDeploy.java index 6bc79f67e..f0ba43f2a 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionUpdate.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionDeploy.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021-2022 Nordix Foundation. + * Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,11 +25,11 @@ import java.util.List; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.onap.policy.clamp.models.acm.concepts.ParticipantUpdates; +import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy; import org.onap.policy.models.base.PfUtils; /** - * Class to represent the AUTOMATION_COMPOSITION_UPDATE message that the automation composition runtime sends to a + * Class to represent the AUTOMATION_COMPOSITION_DEPLOY message that the automation composition runtime sends to a * participant. When a participant receives this message, it creates the automation composition elements contained in * the message and sets them to state PASSIVE. subsequent AUTOMATION_COMPOSITION_STATE_CHANGE messages are used to * activate the automation compositions. @@ -37,18 +37,18 @@ import org.onap.policy.models.base.PfUtils; @Getter @Setter @ToString(callSuper = true) -public class AutomationCompositionUpdate extends ParticipantMessage { +public class AutomationCompositionDeploy extends ParticipantMessage { // A list of ParticipantUpdates instances which carries details of an updated participant. - private List<ParticipantUpdates> participantUpdatesList = new ArrayList<>(); + private List<ParticipantDeploy> participantUpdatesList = new ArrayList<>(); private Integer startPhase = 0; /** * Constructor for instantiating class with message name. * */ - public AutomationCompositionUpdate() { - super(ParticipantMessageType.AUTOMATION_COMPOSITION_UPDATE); + public AutomationCompositionDeploy() { + super(ParticipantMessageType.AUTOMATION_COMPOSITION_DEPLOY); } /** @@ -56,9 +56,9 @@ public class AutomationCompositionUpdate extends ParticipantMessage { * * @param source source from which to copy */ - public AutomationCompositionUpdate(AutomationCompositionUpdate source) { + public AutomationCompositionDeploy(AutomationCompositionDeploy source) { super(source); this.startPhase = source.startPhase; - this.participantUpdatesList = PfUtils.mapList(source.participantUpdatesList, ParticipantUpdates::new); + this.participantUpdatesList = PfUtils.mapList(source.participantUpdatesList, ParticipantDeploy::new); } } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionAck.java b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionDeployAck.java index c1ec67c83..8d52955cc 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionAck.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/AutomationCompositionDeployAck.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021-2022 Nordix Foundation. + * Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import java.util.function.UnaryOperator; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementAck; +import org.onap.policy.clamp.models.acm.concepts.AcElementDeployAck; import org.onap.policy.models.base.PfUtils; /** @@ -38,20 +38,20 @@ import org.onap.policy.models.base.PfUtils; @Getter @Setter @ToString(callSuper = true) -public class AutomationCompositionAck extends ParticipantAckMessage { +public class AutomationCompositionDeployAck extends ParticipantAckMessage { private UUID automationCompositionId; private Integer startPhase; // A map with AutomationCompositionElementID as its key, and a pair of result and message as value per // AutomationCompositionElement. - private Map<UUID, AutomationCompositionElementAck> automationCompositionResultMap = new LinkedHashMap<>(); + private Map<UUID, AcElementDeployAck> automationCompositionResultMap = new LinkedHashMap<>(); /** * Constructor for instantiating ParticipantRegisterAck class with message name. * */ - public AutomationCompositionAck(final ParticipantMessageType messageType) { + public AutomationCompositionDeployAck(final ParticipantMessageType messageType) { super(messageType); } @@ -60,9 +60,10 @@ public class AutomationCompositionAck extends ParticipantAckMessage { * * @param source source from which to copy */ - public AutomationCompositionAck(final AutomationCompositionAck source) { + public AutomationCompositionDeployAck(final AutomationCompositionDeployAck source) { super(source); this.automationCompositionId = source.automationCompositionId; + this.startPhase = source.startPhase; this.automationCompositionResultMap = PfUtils.mapMap(source.automationCompositionResultMap, UnaryOperator.identity()); } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/ParticipantMessageType.java b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/ParticipantMessageType.java index 4f6bcdbf3..502896188 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/ParticipantMessageType.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/dmaap/participant/ParticipantMessageType.java @@ -37,10 +37,10 @@ public enum ParticipantMessageType { PARTICIPANT_STATE_CHANGE, /** - * Used by acm runtime to update the automation compositions running on participants, triggers a - * PARTICIPANT_STATUS message with the result of the AUTOMATION_COMPOSITION_UPDATE operation. + * Used by acm runtime to deploy the automation compositions running on participants, triggers a + * PARTICIPANT_STATUS message with the result of the AUTOMATION_COMPOSITION_DEPLOY operation. */ - AUTOMATION_COMPOSITION_UPDATE, + AUTOMATION_COMPOSITION_DEPLOY, /** * Used by acm runtime to change the state of automation compositions in participants, triggers a @@ -86,10 +86,10 @@ public enum ParticipantMessageType { PARTICIPANT_UPDATE_ACK, /** - * Used by participant to acknowledge the receipt of AUTOMATION_COMPOSITION_UPDATE message + * Used by participant to acknowledge the receipt of AUTOMATION_COMPOSITION_DEPLOY message * from automation composition runtime. */ - AUTOMATION_COMPOSITION_UPDATE_ACK, + AUTOMATION_COMPOSITION_DEPLOY_ACK, /** * Used by participant to acknowledge the receipt of AUTOMATION_COMPOSITION_STATE_CHANGE message 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 9f73cb144..7d1e80f54 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 @@ -41,7 +41,7 @@ import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElement; import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionElementDefinition; import org.onap.policy.clamp.models.acm.concepts.NodeTemplateState; import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition; -import org.onap.policy.clamp.models.acm.concepts.ParticipantUpdates; +import org.onap.policy.clamp.models.acm.concepts.ParticipantDeploy; import org.onap.policy.common.parameters.BeanValidationResult; import org.onap.policy.common.parameters.ObjectValidationResult; import org.onap.policy.common.parameters.ValidationResult; @@ -71,14 +71,14 @@ public final class AcmUtils { * @param participantUpdates list of participantUpdates */ public static void prepareParticipantUpdate(AutomationCompositionElement acElement, - List<ParticipantUpdates> participantUpdates) { + List<ParticipantDeploy> participantUpdates) { if (participantUpdates.isEmpty()) { participantUpdates.add(getAutomationCompositionElementList(acElement)); return; } var participantExists = false; - for (ParticipantUpdates participantUpdate : participantUpdates) { + for (ParticipantDeploy participantUpdate : participantUpdates) { if (participantUpdate.getParticipantId().equals(acElement.getParticipantId())) { participantUpdate.getAutomationCompositionElementList().add(acElement); participantExists = true; @@ -89,8 +89,8 @@ public final class AcmUtils { } } - private static ParticipantUpdates getAutomationCompositionElementList(AutomationCompositionElement acElement) { - var participantUpdate = new ParticipantUpdates(); + private static ParticipantDeploy getAutomationCompositionElementList(AutomationCompositionElement acElement) { + var participantUpdate = new ParticipantDeploy(); participantUpdate.setParticipantId(acElement.getParticipantId()); participantUpdate.getAutomationCompositionElementList().add(acElement); return participantUpdate; |