diff options
author | Sirisha_Manchikanti <sirisha.manchikanti@est.tech> | 2021-04-01 08:59:30 +0100 |
---|---|---|
committer | Sirisha_Manchikanti <sirisha.manchikanti@est.tech> | 2021-04-07 21:18:35 +0100 |
commit | fac75fad3992a6e6c8f5a66bac77ea9e762b1eae (patch) | |
tree | 75b4812986bb7f2e61e19145862e6673b7e0f692 /tosca-controlloop/participant/participant-intermediary | |
parent | bd80043a42f83392992bc31730b4a2c17475468a (diff) |
Add participant for policy-framework
This commit adds a Participant for policy-framework, calls APIs
createPolicies and createPolicyTypes for creating policies and
policy-types in policy-framework when a controlLoopUpdate message is
recieved.
Issue-ID: POLICY-3038
Signed-off-by: Sirisha_Manchikanti <sirisha.manchikanti@est.tech>
Change-Id: I5ec795bbdd8684e4f6e8c65da1c340b35e7edf68
Diffstat (limited to 'tosca-controlloop/participant/participant-intermediary')
4 files changed, 87 insertions, 0 deletions
diff --git a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ControlLoopElementListener.java b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ControlLoopElementListener.java new file mode 100644 index 000000000..ff24d6a10 --- /dev/null +++ b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ControlLoopElementListener.java @@ -0,0 +1,54 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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.controlloop.participant.intermediary.api; + +import java.util.UUID; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops; +import org.onap.policy.models.base.PfModelException; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; + +/** + * This interface is implemented by participant implementations to receive updates on control loop elements. + */ +public interface ControlLoopElementListener { + /** + * Handle a control loop element state change. + * + * @param controlLoopElementId the ID of the control loop element + * @param currentState the current state of the control loop element + * @param newState the state to which the control loop element is changing to + */ + public void controlLoopElementStateChange(UUID controlLoopElementId, ControlLoopState currentState, + ControlLoopOrderedState newState); + + /** + * Handle an update on a control loop element. + * + * @param element the information on the control loop element + * @param controlLoopDefinition toscaServiceTemplate + * @throws PfModelException in case of a model exception + */ + public void controlLoopElementUpdate(ControlLoopElement element, + ToscaServiceTemplate controlLoopDefinition) throws PfModelException; +} diff --git a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ParticipantIntermediaryApi.java b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ParticipantIntermediaryApi.java index 7ea8b4f35..defb1cfa1 100644 --- a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ParticipantIntermediaryApi.java +++ b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/ParticipantIntermediaryApi.java @@ -51,6 +51,13 @@ public interface ParticipantIntermediaryApi { void close(); /** + * Register a listener for control loop elements that are mediated by the intermediary. + * + * @param controlLoopElementListener The control loop element listener to register + */ + void registerControlLoopElementListener(ControlLoopElementListener controlLoopElementListener); + + /** * Get participants loops from the intermediary API. * * @param name the participant name, null for all diff --git a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java index 9e494862e..0702868dd 100644 --- a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java +++ b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/api/impl/ParticipantIntermediaryApiImpl.java @@ -31,6 +31,7 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatistics; +import org.onap.policy.clamp.controlloop.participant.intermediary.api.ControlLoopElementListener; import org.onap.policy.clamp.controlloop.participant.intermediary.api.ParticipantIntermediaryApi; import org.onap.policy.clamp.controlloop.participant.intermediary.handler.IntermediaryActivator; import org.onap.policy.clamp.controlloop.participant.intermediary.handler.ParticipantHandler; @@ -58,6 +59,12 @@ public class ParticipantIntermediaryApiImpl implements ParticipantIntermediaryAp } @Override + public void registerControlLoopElementListener(ControlLoopElementListener controlLoopElementListener) { + activator.getParticipantHandler().getControlLoopHandler() + .registerControlLoopElementListener(controlLoopElementListener); + } + + @Override public List<Participant> getParticipants(String name, String version) { return List.of(activator.getParticipantHandler().getParticipant(name, version)); } diff --git a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/handler/ControlLoopHandler.java b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/handler/ControlLoopHandler.java index f27be961b..6f8bfffc3 100644 --- a/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/handler/ControlLoopHandler.java +++ b/tosca-controlloop/participant/participant-intermediary/src/main/java/org/onap/policy/clamp/controlloop/participant/intermediary/handler/ControlLoopHandler.java @@ -23,8 +23,10 @@ package org.onap.policy.clamp.controlloop.participant.intermediary.handler; import java.io.Closeable; import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.UUID; +import lombok.Getter; import org.apache.commons.collections4.CollectionUtils; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatistics; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop; @@ -36,8 +38,10 @@ import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.Parti import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantResponseDetails; import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantResponseStatus; +import org.onap.policy.clamp.controlloop.participant.intermediary.api.ControlLoopElementListener; import org.onap.policy.clamp.controlloop.participant.intermediary.comm.MessageSender; import org.onap.policy.clamp.controlloop.participant.intermediary.parameters.ParticipantIntermediaryParameters; +import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,6 +58,9 @@ public class ControlLoopHandler implements Closeable { private final Map<ToscaConceptIdentifier, ControlLoop> controlLoopMap = new LinkedHashMap<>(); private final Map<UUID, ControlLoopElement> elementsOnThisParticipant = new LinkedHashMap<>(); + @Getter + private List<ControlLoopElementListener> listeners = new ArrayList<>(); + public ControlLoopHandler() { } @@ -73,6 +80,10 @@ public class ControlLoopHandler implements Closeable { // No explicit action on this class } + public void registerControlLoopElementListener(ControlLoopElementListener listener) { + listeners.add(listener); + } + /** * Handle a control loop element state change message. * @@ -207,6 +218,14 @@ public class ControlLoopHandler implements Closeable { elementsOnThisParticipant.put(element.getId(), element); } + for (ControlLoopElementListener clElementListener : listeners) { + try { + clElementListener.controlLoopElementUpdate(null, updateMsg.getControlLoopDefinition()); + } catch (PfModelException e) { + LOGGER.debug("Control loop element update failed {}", updateMsg.getControlLoopId()); + } + } + response.setResponseStatus(ParticipantResponseStatus.SUCCESS); response.setResponseMessage( "Control loop " + updateMsg.getControlLoopId() + " defined on participant " + participantId); |