diff options
author | saul.gill <saul.gill@est.tech> | 2023-02-14 12:56:53 +0000 |
---|---|---|
committer | saul.gill <saul.gill@est.tech> | 2023-02-14 16:17:54 +0000 |
commit | e0c967a0e0827c3791bb60fe3fc7787c6f1743ea (patch) | |
tree | 1bf3abbe5d9c131fb780dc94deb21cc2625f53ed /participant/participant-intermediary/src/main | |
parent | 06339bee0cf891144ca781983ba99d170b10b2b7 (diff) |
Add undeploy on deregister (participant-side)
Undeploy triggered by participant deregister
Deregister triggers context close
Issue-ID: POLICY-4499
Change-Id: I28729323626b69621ed6a51f6426ecd7cc49799c
Signed-off-by: saul.gill <saul.gill@est.tech>
Diffstat (limited to 'participant/participant-intermediary/src/main')
2 files changed, 29 insertions, 0 deletions
diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java index 2d845d4c8..d76700171 100644 --- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java +++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/AutomationCompositionHandler.java @@ -333,6 +333,7 @@ public class AutomationCompositionHandler { for (var element : participantDeploy.getAcElementList()) { var acElement = new AutomationCompositionElement(); acElement.setId(element.getId()); + acElement.setParticipantId(participantDeploy.getParticipantId()); acElement.setDefinition(element.getDefinition()); acElement.setDeployState(DeployState.DEPLOYING); acElement.setLockState(LockState.NONE); diff --git a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java index 719c428be..bf9fbbcd2 100644 --- a/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java +++ b/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/handler/ParticipantHandler.java @@ -31,6 +31,7 @@ import java.util.UUID; import lombok.Getter; import org.onap.policy.clamp.acm.participant.intermediary.comm.ParticipantMessagePublisher; import org.onap.policy.clamp.acm.participant.intermediary.parameters.ParticipantParameters; +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.AutomationCompositionInfo; import org.onap.policy.clamp.models.acm.concepts.ParticipantDefinition; @@ -48,6 +49,7 @@ import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantRe import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantRegisterAck; import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatus; import org.onap.policy.clamp.models.acm.messages.dmaap.participant.ParticipantStatusReq; +import org.onap.policy.models.base.PfModelException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -171,9 +173,35 @@ public class ParticipantHandler { var participantDeregister = new ParticipantDeregister(); participantDeregister.setParticipantId(participantId); + undeployInstancesOnParticipant(); publisher.sendParticipantDeregister(participantDeregister); } + private void undeployInstancesOnParticipant() { + automationCompositionHandler.getAutomationCompositionMap().values().forEach(ac -> + undeployInstanceOnParticipant(ac) + ); + } + + private void undeployInstanceOnParticipant(AutomationComposition automationComposition) { + automationComposition.getElements().values().forEach(element -> { + if (element.getParticipantId().equals(participantId)) { + undeployInstanceElementsOnParticipant(automationComposition.getInstanceId(), element.getId()); + } + }); + } + + private void undeployInstanceElementsOnParticipant(UUID instanceId, UUID elementId) { + var acElementListeners = automationCompositionHandler.getListeners(); + for (var acElementListener : acElementListeners) { + try { + acElementListener.undeploy(instanceId, elementId); + } catch (PfModelException e) { + LOGGER.debug("Automation composition element update failed {}", instanceId); + } + } + } + /** * Handle a participantDeregister Ack message. * |