diff options
author | jhh <jorge.hernandez-herrero@att.com> | 2020-03-22 19:37:21 -0500 |
---|---|---|
committer | jhh <jorge.hernandez-herrero@att.com> | 2020-03-22 22:29:07 -0500 |
commit | 97e19c931535a5b474d4942a9982f0b7a1cf7414 (patch) | |
tree | ea2f83efb976bf7bda159097dbff50c0b99e451a /feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleFsm.java | |
parent | cc69c5a3f56a3e90c17c4fdcf38dc93c37cf93f2 (diff) |
Fix op policies distribution to controllers
Fix a bug when distributing a policy to the right
controller plus additional junits to catch similar
issues.
Issue-ID: POLICY-2356
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Change-Id: I25fefa64ad54c55e6516ae18c6895b6de9407419
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.java | 42 |
1 files changed, 32 insertions, 10 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 a435f02e..6953d831 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 @@ -68,24 +68,32 @@ import org.slf4j.LoggerFactory; */ public class LifecycleFsm implements Startable { + /** + * Default Status Timer in seconds. + */ + public static final long DEFAULT_STATUS_TIMER_SECONDS = 120L; + private static final Logger logger = LoggerFactory.getLogger(LifecycleFsm.class); protected static final String CONFIGURATION_PROPERTIES_NAME = "feature-lifecycle"; protected static final String GROUP_NAME = "lifecycle.pdp.group"; protected static final String DEFAULT_PDP_GROUP = "defaultGroup"; - protected static final long DEFAULT_STATUS_TIMER_SECONDS = 120L; protected static final long MIN_STATUS_INTERVAL_SECONDS = 5L; protected static final String PDP_MESSAGE_NAME = "messageName"; protected static final ToscaPolicyTypeIdentifier POLICY_TYPE_DROOLS_NATIVE_RULES = - new ToscaPolicyTypeIdentifier("onap.policies.native.Drools", "1.0.0"); + new ToscaPolicyTypeIdentifier("onap.policies.native.drools.Artifact", "1.0.0"); - protected static final ToscaPolicyTypeIdentifier POLICY_TYPE_DROOLS_CONTROLLER = - new ToscaPolicyTypeIdentifier("onap.policies.drools.Controller", "1.0.0"); + protected static final ToscaPolicyTypeIdentifier POLICY_TYPE_DROOLS_NATIVE_CONTROLLER = + new ToscaPolicyTypeIdentifier("onap.policies.native.drools.Controller", "1.0.0"); + @Getter protected final Properties properties; + @Getter protected TopicSource source; + + @Getter protected TopicSinkClient client; @Getter @@ -113,14 +121,17 @@ public class LifecycleFsm implements Startable { protected long statusTimerSeconds = DEFAULT_STATUS_TIMER_SECONDS; @Getter - private final String group; + @Setter + private String group; @Getter + @Setter protected String subgroup; @Getter protected final Map<ToscaPolicyTypeIdentifier, PolicyTypeController> policyTypesMap = new HashMap<>(); + @Getter protected final Map<ToscaPolicyIdentifier, ToscaPolicy> policiesMap = new HashMap<>(); /** @@ -130,9 +141,8 @@ public class LifecycleFsm implements Startable { this.properties = SystemPersistenceConstants.getManager().getProperties(CONFIGURATION_PROPERTIES_NAME); this.group = this.properties.getProperty(GROUP_NAME, DEFAULT_PDP_GROUP); - this.policyTypesMap.put( - POLICY_TYPE_DROOLS_CONTROLLER, - new PolicyTypeNativeDroolsController(this, POLICY_TYPE_DROOLS_CONTROLLER)); + this.policyTypesMap.put(POLICY_TYPE_DROOLS_NATIVE_CONTROLLER, + new PolicyTypeNativeDroolsController(this, POLICY_TYPE_DROOLS_NATIVE_CONTROLLER)); this.policyTypesMap.put( POLICY_TYPE_DROOLS_NATIVE_RULES, new PolicyTypeNativeArtifactController(this, POLICY_TYPE_DROOLS_NATIVE_RULES)); @@ -171,7 +181,12 @@ public class LifecycleFsm implements Startable { logger.info("lifecycle event: start controller: {}", controller.getName()); for (ToscaPolicyTypeIdentifier id : controller.getPolicyTypes()) { if (isToscaPolicyType(id.getName())) { - policyTypesMap.put(id, new PolicyTypeDroolsController(this, id, controller)); + PolicyTypeDroolsController ptDroolsController = (PolicyTypeDroolsController) policyTypesMap.get(id); + if (ptDroolsController == null) { + policyTypesMap.put(id, new PolicyTypeDroolsController(this, id, controller)); + } else { + ptDroolsController.add(controller); + } } } } @@ -188,7 +203,14 @@ 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()) { - policyTypesMap.remove(id); + if (!policyTypesMap.containsKey(id)) { + continue; + } + PolicyTypeDroolsController ptDroolsController = (PolicyTypeDroolsController) policyTypesMap.get(id); + ptDroolsController.remove(controller); + if (ptDroolsController.controllers().isEmpty()) { + policyTypesMap.remove(id); + } } } |