Fix Generic VNF isClosedLoopDisabled
[policy/drools-applications.git] / controlloop / common / eventmanager / src / main / java / org / onap / policy / controlloop / eventmanager / ControlLoopEventManager.java
index 2a5a3d0..4adcff0 100644 (file)
@@ -149,6 +149,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                        // Syntax check the event
                        //
                        checkEventSyntax(event);
+                       
                        //
                        // At this point we are good to go with this event
                        //
@@ -435,7 +436,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                ;
        }
                
-       public NEW_EVENT_STATUS onNewEvent(VirtualControlLoopEvent event) {
+       public NEW_EVENT_STATUS onNewEvent(VirtualControlLoopEvent event) throws AAIException {
                try {
                        this.checkEventSyntax(event);
                        if (event.closedLoopEventStatus == ControlLoopEventStatus.ONSET) {
@@ -443,6 +444,11 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                                // Check if this is our original ONSET
                                //
                                if (event.equals(this.onset)) {
+                                   //
+                                   // Query A&AI if needed
+                                   //
+                                   queryAai(event);
+                                   
                                        //
                                        // DO NOT retract it
                                        //
@@ -535,64 +541,68 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                if (event.closedLoopEventStatus == ControlLoopEventStatus.ABATED) {
                        return;
                }
-               if (event.AAI == null) {
-                       throw new ControlLoopException("AAI is null");
-               }
-               if (event.AAI.get("generic-vnf.vnf-id") == null && event.AAI.get("vserver.vserver-name") == null &&
-                               event.AAI.get("generic-vnf.vnf-name") == null) {
-                       throw new ControlLoopException("generic-vnf.vnf-id or generic-vnf.vnf-name or vserver.vserver-name information missing");
+               if (event.target == null || event.target.length() < 1) {
+                       throw new ControlLoopException("No target field");
+               } else if (! "VM_NAME".equalsIgnoreCase(event.target) &&
+                               ! "VNF_NAME".equalsIgnoreCase(event.target) &&
+                               ! "vserver.vserver-name".equalsIgnoreCase(event.target) &&
+                               ! "generic-vnf.vnf-id".equalsIgnoreCase(event.target) &&
+                               ! "generic-vnf.vnf-name".equalsIgnoreCase(event.target) ) {
+                       throw new ControlLoopException("target field invalid - expecting VM_NAME or VNF_NAME");
                }
-               if (event.AAI.get("vserver.is-closed-loop-disabled") == null) {
+               if (event.AAI == null) {
+            throw new ControlLoopException("AAI is null");
+        }
+        if (event.AAI.get("generic-vnf.vnf-id") == null && event.AAI.get("vserver.vserver-name") == null &&
+                event.AAI.get("generic-vnf.vnf-name") == null) {
+            throw new ControlLoopException("generic-vnf.vnf-id or generic-vnf.vnf-name or vserver.vserver-name information missing");
+        }
+       }
+       
+       public void queryAai(VirtualControlLoopEvent event) throws AAIException {
+               if (event.AAI.get("vserver.is-closed-loop-disabled") == null && 
+                       event.AAI.get("generic-vnf.is-closed-loop-disabled") == null) {
                        try {
                                if (event.AAI.get("generic-vnf.vnf-id") != null) {
                                        vnfResponse = getAAIVnfInfo(event); 
                                        if (vnfResponse == null) {
-                                               throw new ControlLoopException("AAI Response is null (query by vnf-id)");
+                                               throw new AAIException("AAI Response is null (query by vnf-id)");
                                        }
                                        if (vnfResponse.requestError != null) {
-                                               throw new ControlLoopException("AAI Responded with a request error (query by vnf-id)");
+                                               throw new AAIException("AAI Responded with a request error (query by vnf-id)");
                                        }
                                        if (isClosedLoopDisabled(vnfResponse) == true) {
-                                               throw new ControlLoopException("is-closed-loop-disabled is set to true");       
+                                               throw new AAIException("is-closed-loop-disabled is set to true");       
                                        }
                                } else if (event.AAI.get("generic-vnf.vnf-name") != null) {
                                        vnfResponse = getAAIVnfInfo(event); 
                                        if (vnfResponse == null) {
-                                               throw new ControlLoopException("AAI Response is null (query by vnf-name)");
+                                               throw new AAIException("AAI Response is null (query by vnf-name)");
                                        }
                                        if (vnfResponse.requestError != null) {
-                                               throw new ControlLoopException("AAI Responded with a request error (query by vnf-name)");
+                                               throw new AAIException("AAI Responded with a request error (query by vnf-name)");
                                        }
                                        if (isClosedLoopDisabled(vnfResponse) == true) {
-                                               throw new ControlLoopException("is-closed-loop-disabled is set to true");       
+                                               throw new AAIException("is-closed-loop-disabled is set to true");       
                                        }
                                } else if (event.AAI.get("vserver.vserver-name") != null) {
                                        vserverResponse = getAAIVserverInfo(event); 
                                        if (vserverResponse == null) {
-                                               throw new ControlLoopException("AAI Response is null (query by vserver-name)");
+                                               throw new AAIException("AAI Response is null (query by vserver-name)");
                                        }
                                        if (vserverResponse.requestError != null) {
-                                               throw new ControlLoopException("AAI responded with a request error (query by vserver-name)");
+                                               throw new AAIException("AAI responded with a request error (query by vserver-name)");
                                        }
                                        if (isClosedLoopDisabled(vserverResponse) == true) {
-                                               throw new ControlLoopException("is-closed-loop-disabled is set to true");       
+                                               throw new AAIException("is-closed-loop-disabled is set to true");       
                                        }
                                }
                        } catch (Exception e) {
                                logger.error("Exception from getAAIInfo: ", e);
-                               throw new ControlLoopException("Exception from getAAIInfo: " + e.toString());
+                               throw new AAIException("Exception from getAAIInfo: " + e.toString());
                        }
                } else if (isClosedLoopDisabled(event)) {
-                       throw new ControlLoopException("is-closed-loop-disabled is set to true");
-               }
-               if (event.target == null || event.target.length() < 1) {
-                       throw new ControlLoopException("No target field");
-               } else if (! event.target.equalsIgnoreCase("VM_NAME") &&
-                               ! event.target.equalsIgnoreCase("VNF_NAME") &&
-                               ! event.target.equalsIgnoreCase("vserver.vserver-name") &&
-                               ! event.target.equalsIgnoreCase("generic-vnf.vnf-id") &&
-                               ! event.target.equalsIgnoreCase("generic-vnf.vnf-name") ) {
-                       throw new ControlLoopException("target field invalid - expecting VM_NAME or VNF_NAME");
+                       throw new AAIException("is-closed-loop-disabled is set to true");
                }
        }
        
@@ -626,7 +636,13 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                    "yes".equalsIgnoreCase(event.AAI.get("vserver.is-closed-loop-disabled")) || 
                    "Y".equalsIgnoreCase(event.AAI.get("vserver.is-closed-loop-disabled"))) { 
                        return true; 
-               }               
+               }
+               else if ("true".equalsIgnoreCase(event.AAI.get("generic-vnf.is-closed-loop-disabled")) || 
+                   "T".equalsIgnoreCase(event.AAI.get("generic-vnf.is-closed-loop-disabled")) || 
+                   "yes".equalsIgnoreCase(event.AAI.get("generic-vnf.is-closed-loop-disabled")) || 
+                   "Y".equalsIgnoreCase(event.AAI.get("generic-vnf.is-closed-loop-disabled"))) { 
+                   return true; 
+           }
                return false;
        }