aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java36
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java76
2 files changed, 61 insertions, 51 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 92b618f42..bc9d3df79 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
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* controlloop event manager
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -80,9 +80,6 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
private transient TargetLock targetLock = null;
private AaiGetVnfResponse vnfResponse = null;
private AaiGetVserverResponse vserverResponse = null;
- private static String aaiHostURL;
- private static String aaiUser;
- private static String aaiPassword;
private static Collection<String> requiredAAIKeys = new ArrayList<>();
@@ -643,10 +640,21 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
* @param event the event
* @throws AaiException if an error occurs retrieving information from A&AI
*/
- public void queryAai(VirtualControlLoopEvent event) throws AaiException {
- if ((event.getAai().get(VSERVER_IS_CLOSED_LOOP_DISABLED) != null
- || event.getAai().get(GENERIC_VNF_IS_CLOSED_LOOP_DISABLED) != null) && isClosedLoopDisabled(event)) {
- throw new AaiException("is-closed-loop-disabled is set to true on VServer or VNF");
+ public void queryAai(VirtualControlLoopEvent event) throws AaiException {
+ if (event.getAai().get(VSERVER_IS_CLOSED_LOOP_DISABLED) != null
+ || event.getAai().get(GENERIC_VNF_IS_CLOSED_LOOP_DISABLED) != null) {
+
+ if(isClosedLoopDisabled(event)) {
+ throw new AaiException("is-closed-loop-disabled is set to true on VServer or VNF");
+ }
+
+ // no need to query, as we already have the data
+ return;
+ }
+
+ if(vnfResponse != null || vserverResponse != null) {
+ // query has already been performed
+ return;
}
try {
@@ -740,9 +748,9 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
try {
if (vserverName != null) {
- aaiHostURL = PolicyEngine.manager.getEnvironmentProperty("aai.url");
- aaiUser = PolicyEngine.manager.getEnvironmentProperty("aai.username");
- aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
+ String aaiHostURL = PolicyEngine.manager.getEnvironmentProperty("aai.url");
+ String aaiUser = PolicyEngine.manager.getEnvironmentProperty("aai.username");
+ String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
String aaiGetQueryByVserver = "/aai/v11/nodes/vservers?vserver-name=";
String url = aaiHostURL + aaiGetQueryByVserver;
logger.info("AAI Host URL by VServer: {}", url);
@@ -770,9 +778,9 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
String vnfName = event.getAai().get(GENERIC_VNF_VNF_NAME);
String vnfId = event.getAai().get(GENERIC_VNF_VNF_ID);
- aaiHostURL = PolicyEngine.manager.getEnvironmentProperty("aai.url");
- aaiUser = PolicyEngine.manager.getEnvironmentProperty("aai.username");
- aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
+ String aaiHostURL = PolicyEngine.manager.getEnvironmentProperty("aai.url");
+ String aaiUser = PolicyEngine.manager.getEnvironmentProperty("aai.username");
+ String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
try {
if (vnfName != null) {
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 700d1abf8..5bd361af3 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
@@ -213,8 +213,7 @@ public class ControlLoopEventManagerTest {
event.setTarget("generic-vnf.vnf-id");
event.setClosedLoopAlarmStart(Instant.now());
event.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
assertNull(manager.getVnfResponse());
assertNull(manager.getVserverResponse());
try {
@@ -253,8 +252,7 @@ public class ControlLoopEventManagerTest {
event.setAai(new HashMap<>());
event.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
VirtualControlLoopNotification notification = manager.activate(event);
assertNotNull(notification);
@@ -501,8 +499,7 @@ public class ControlLoopEventManagerTest {
event.setAai(new HashMap<>());
event.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
manager.setActivated(true);
VirtualControlLoopNotification notification = manager.activate(event);
assertEquals(ControlLoopNotificationType.REJECTED, notification.getNotification());
@@ -526,8 +523,7 @@ public class ControlLoopEventManagerTest {
event.setAai(new HashMap<>());
event.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
// Null YAML should fail
VirtualControlLoopNotification notificationNull = manager.activate(null, event);
@@ -569,8 +565,7 @@ public class ControlLoopEventManagerTest {
event.setAai(new HashMap<>());
event.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
try {
manager.isControlLoopFinal();
fail("test should throw an exception here");
@@ -640,8 +635,7 @@ public class ControlLoopEventManagerTest {
event.setAai(new HashMap<>());
event.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
try {
manager.processControlLoop();
fail("test should throw an exception here");
@@ -725,8 +719,7 @@ public class ControlLoopEventManagerTest {
event.setAai(new HashMap<>());
event.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager manager = makeManager(event);
try {
manager.finishOperation(null);
fail("test should throw an exception here");
@@ -780,8 +773,7 @@ public class ControlLoopEventManagerTest {
// This call should be exception free
manager.finishOperation(clom);
- ControlLoopEventManager otherManager =
- new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ ControlLoopEventManager otherManager = makeManager(event);
VirtualControlLoopNotification otherNotification = otherManager.activate(yamlStringStd, event);
assertNotNull(otherNotification);
assertEquals(ControlLoopNotificationType.ACTIVE, otherNotification.getNotification());
@@ -817,8 +809,7 @@ public class ControlLoopEventManagerTest {
abatedEvent.setAai(new HashMap<>());
abatedEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
+ ControlLoopEventManager manager = makeManager(onsetEvent);
VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
assertNotNull(notification);
assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
@@ -927,8 +918,7 @@ public class ControlLoopEventManagerTest {
onsetEvent.setAai(new HashMap<>());
onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
+ ControlLoopEventManager manager = makeManager(onsetEvent);
assertTrue(0 == manager.getControlLoopTimeout(null));
assertTrue(120 == manager.getControlLoopTimeout(120));
@@ -954,70 +944,78 @@ public class ControlLoopEventManagerTest {
onsetEvent.setAai(new HashMap<>());
onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
- ControlLoopEventManager manager =
- new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId());
+ ControlLoopEventManager manager = makeManager(onsetEvent);
manager.queryAai(onsetEvent);
VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
assertNotNull(notification);
assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+ // repeat query with same manager
manager.queryAai(onsetEvent);
+
+ // remaining queries each use their own manager so they will be re-executed
+
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().put("generic-vnf.is-closed-loop-disabled", "true");
try {
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
fail("test should throw an exception here");
} catch (Exception e) {
assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", e.getMessage());
}
onsetEvent.getAai().put("vserver.is-closed-loop-disabled", "true");
try {
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
fail("test should throw an exception here");
} catch (Exception e) {
assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", e.getMessage());
}
onsetEvent.getAai().remove("generic-vnf.is-closed-loop-disabled");
try {
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
fail("test should throw an exception here");
} catch (Exception e) {
assertEquals("is-closed-loop-disabled is set to true on VServer or VNF", e.getMessage());
}
onsetEvent.getAai().remove("vserver.is-closed-loop-disabled");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().put("generic-vnf.is-closed-loop-disabled", "false");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
+
+ onsetEvent.getAai().remove("generic-vnf.is-closed-loop-disabled");
onsetEvent.getAai().put("vserver.is-closed-loop-disabled", "false");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().remove("generic-vnf.vnf-id");
onsetEvent.getAai().remove("generic-vnf.vnf-name");
onsetEvent.getAai().remove("vserver.vserver-name");
- manager.queryAai(onsetEvent);
+ onsetEvent.getAai().remove("generic-vnf.is-closed-loop-disabled");
+ onsetEvent.getAai().remove("vserver.is-closed-loop-disabled");
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().put("vserver.vserver-name", "AVserver");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().put("generic-vnf.vnf-name", "AVNFName");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().put("generic-vnf.vnf-id", "AVNFID");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().remove("vserver.vserver-name");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
onsetEvent.getAai().remove("generic-vnf.vnf-name");
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
// Force AAI errors
PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:9999");
try {
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
fail("test should throw an exception here");
} catch (Exception e) {
assertEquals("Exception from queryAai: org.onap.policy.aai.util.AaiException: AAI Response is null "
@@ -1027,7 +1025,7 @@ public class ControlLoopEventManagerTest {
onsetEvent.getAai().remove("generic-vnf.vnf-id");
onsetEvent.getAai().put("generic-vnf.vnf-name", "AVNFName");
try {
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
fail("test should throw an exception here");
} catch (Exception e) {
assertEquals("Exception from queryAai: org.onap.policy.aai.util.AaiException: AAI Response is null "
@@ -1037,7 +1035,7 @@ public class ControlLoopEventManagerTest {
onsetEvent.getAai().remove("generic-vnf.vnf-name");
onsetEvent.getAai().put("vserver.vserver-name", "AVserver");
try {
- manager.queryAai(onsetEvent);
+ makeManager(onsetEvent).queryAai(onsetEvent);
fail("test should throw an exception here");
} catch (Exception e) {
assertEquals("Exception from queryAai: org.onap.policy.aai.util.AaiException: AAI Response is null "
@@ -1046,4 +1044,8 @@ public class ControlLoopEventManagerTest {
PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
}
+
+ private ControlLoopEventManager makeManager(VirtualControlLoopEvent event) {
+ return new ControlLoopEventManager(event.getClosedLoopControlName(), event.getRequestId());
+ }
}