aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/common/eventmanager
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-08-31 17:59:44 -0400
committerJim Hahn <jrh3@att.com>2020-08-31 18:04:27 -0400
commit25c8a555a739b1c80966ed88cc123a6e9ad9318e (patch)
treed165abf12e68cf51219bcb2f3ff128cdf36a0570 /controlloop/common/eventmanager
parent1c5cb8a0d740ccd92d2b3fdce8eb192cd20b147f (diff)
Allow guards to be dynamically enabled/disabled
Modified drools-apps so that guards can be dynamically enabled and disabled. Due to the current design, there are two properties that control this: - an actor-level property: when enabled, the DB connection is created, otherwise a stub connection is created. This property is NOT dynamic - an engine-level property: when enabled, the connection created by the actor is used, otherwise a stub connection is used. This property IS dynamic Issue-ID: POLICY-2748 Change-Id: I2a5baf908ce274f2eb46a6a3f01df1b3532038ff Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'controlloop/common/eventmanager')
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java16
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java17
2 files changed, 30 insertions, 3 deletions
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
index 12128554f..248a41be6 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
@@ -41,6 +41,7 @@ import org.onap.policy.controlloop.actorserviceprovider.ActorService;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
+import org.onap.policy.controlloop.ophistory.OperationHistoryDataManagerStub;
import org.onap.policy.controlloop.processor.ControlLoopProcessor;
import org.onap.policy.drools.core.lock.LockCallback;
import org.onap.policy.drools.system.PolicyEngineConstants;
@@ -59,6 +60,12 @@ public class ControlLoopEventManager implements StepContext, Serializable {
private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventManager.class);
private static final long serialVersionUID = -1216568161322872641L;
+ /**
+ * Data manager used when the policy engine's guard.disabled property is "true".
+ */
+ private static final OperationHistoryDataManager STUB_DATA_MANAGER = new OperationHistoryDataManagerStub();
+
+ private static final String GUARD_DISABLED_PROPERTY = "guard.disabled";
private static final String EVENT_MANAGER_SERVICE_CONFIG = "event-manager";
/**
@@ -269,8 +276,6 @@ public class ControlLoopEventManager implements StepContext, Serializable {
private static final ActorService ACTOR_SERVICE;
static {
- // TODO how to dynamically change data manager, depending whether or not
- // guards are enabled?
EventManagerServices services = new EventManagerServices(EVENT_MANAGER_SERVICE_CONFIG);
ACTOR_SERVICE = services.getActorService();
DATA_MANAGER = services.getDataManager();
@@ -296,6 +301,11 @@ public class ControlLoopEventManager implements StepContext, Serializable {
}
public OperationHistoryDataManager getDataManager() {
- return LazyInitData.DATA_MANAGER;
+ boolean guardDisabled = "true".equalsIgnoreCase(getEnvironmentProperty(GUARD_DISABLED_PROPERTY));
+ return (guardDisabled ? STUB_DATA_MANAGER : LazyInitData.DATA_MANAGER);
+ }
+
+ protected String getEnvironmentProperty(String propName) {
+ return PolicyEngineConstants.getManager().getEnvironmentProperty(propName);
}
}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
index e4c233281..a8632642a 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
@@ -49,6 +49,7 @@ import org.onap.policy.controlloop.ControlLoopException;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
+import org.onap.policy.controlloop.ophistory.OperationHistoryDataManagerStub;
import org.onap.policy.drools.core.lock.LockCallback;
import org.onap.policy.drools.core.lock.LockImpl;
import org.onap.policy.drools.core.lock.LockState;
@@ -241,6 +242,22 @@ public class ControlLoopEventManagerTest {
assertFalse(mgr.contains(MY_KEY));
}
+ /**
+ * Tests getDataManager() when guard.disabled=true.
+ */
+ @Test
+ public void testGetDataManagerDisabled() throws ControlLoopException {
+ mgr = new MyManager(params, REQ_ID) {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected String getEnvironmentProperty(String propName) {
+ return ("guard.disabled".equals(propName) ? "true" : null);
+ }
+ };
+
+ assertThat(mgr.getDataManager()).isInstanceOf(OperationHistoryDataManagerStub.class);
+ }
+
@Test
public void testToString() {
assertNotNull(mgr.toString());