aboutsummaryrefslogtreecommitdiffstats
path: root/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
diff options
context:
space:
mode:
authorjhh <jorge.hernandez-herrero@att.com>2020-03-31 21:05:14 -0500
committerjhh <jorge.hernandez-herrero@att.com>2020-04-01 10:59:29 -0500
commitece155048af47ea83ff898c999aa5137dc99a988 (patch)
tree25af254f7cbbb42a99b9b98d5e6767c65aef563d /feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
parent565b43c67c8964fe9e046435307e479921881566 (diff)
Sync controller capabilities as controllers bounce
As native policies introduce temporality in policy types supported as they are removed and added, the associated policy types that can be honored at a a given time, may need to adjust. A significan portion of this review is dedicated to multi-policy junits and telemetry instrumentation. Issue-ID: POLICY-2459 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: I62bbc03411446849eaa55c9b1524220dc13c2cb0 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Diffstat (limited to 'feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java')
-rw-r--r--feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java23
1 files changed, 15 insertions, 8 deletions
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
index 3ecb4b3a..ac76883f 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java
@@ -31,6 +31,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
@@ -189,6 +190,7 @@ public class LifecycleFsm implements Startable {
PolicyTypeDroolsController ptDroolsController = (PolicyTypeDroolsController) policyTypesMap.get(id);
if (ptDroolsController == null) {
policyTypesMap.put(id, new PolicyTypeDroolsController(this, id, controller));
+ logger.info("policy-type {} added", id);
} else {
ptDroolsController.add(controller);
}
@@ -219,14 +221,19 @@ public class LifecycleFsm implements Startable {
*/
public synchronized void stop(@NonNull PolicyController controller) {
logger.info("lifecycle event: stop controller: {}", controller.getName());
- for (ToscaPolicyTypeIdentifier id : controller.getPolicyTypes()) {
- if (!policyTypesMap.containsKey(id)) {
- continue;
- }
- PolicyTypeDroolsController ptDroolsController = (PolicyTypeDroolsController) policyTypesMap.get(id);
- ptDroolsController.remove(controller);
- if (ptDroolsController.controllers().isEmpty()) {
- policyTypesMap.remove(id);
+
+ List<PolicyTypeDroolsController> opControllers =
+ policyTypesMap.values().stream()
+ .filter(typeController -> typeController instanceof PolicyTypeDroolsController)
+ .map(typeController -> (PolicyTypeDroolsController) typeController)
+ .filter(opController -> opController.getControllers().containsKey(controller.getName()))
+ .collect(Collectors.toList());
+
+ for (PolicyTypeDroolsController opController : opControllers) {
+ opController.remove(controller);
+ if (opController.controllers().isEmpty()) {
+ policyTypesMap.remove(opController.getPolicyType());
+ logger.info("policy-type {} removed", opController.getPolicyType());
}
}
}