Fix Sonar criticals 07/15707/5
authorCharles Cole <cc847m@att.com>
Tue, 26 Sep 2017 19:43:58 +0000 (14:43 -0500)
committerCharles Cole <cc847m@att.com>
Thu, 28 Sep 2017 16:19:28 +0000 (11:19 -0500)
Fixed two Sonar criticals.  Changed VFC actor service provider to
eliminate redundant AAI queries.

Issue-ID: POLICY-115
Change-Id: Ic4993b5d498a1cb3d3fc51ce1d2b4e90bb26353d
Signed-off-by: Charles Cole <cc847m@att.com>
controlloop/common/actors/actor.vfc/pom.xml
controlloop/common/actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VFCActorServiceProvider.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager.java
controlloop/common/simulators/src/main/java/org/onap/policy/simulators/VfcSimulatorJaxRs.java

index 223be4b..8150595 100644 (file)
@@ -28,7 +28,7 @@
                        <version>1.1.0-SNAPSHOT</version>
                        <scope>provided</scope>
                </dependency>
-               <dependency>
+               <dependency>
                         <groupId>org.onap.policy.drools-applications</groupId>
                         <artifactId>aai</artifactId>
                         <version>1.1.0-SNAPSHOT</version>
index 469faa4..8147262 100644 (file)
@@ -66,59 +66,62 @@ public class VFCActorServiceProvider implements Actor {
     }
 
     public static VFCRequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation,
-                                              Policy policy) {
+                                              Policy policy, AAIGETVnfResponse vnfResponse) {
         // Construct an VFC request
         VFCRequest request = new VFCRequest();
-        request.nsInstanceId = getAAIServiceInstance(onset);
-           request.requestId = onset.requestID;
+        String serviceInstance = onset.AAI.get("service-instance.service-instance-id");
+        if (serviceInstance == null || "".equals(serviceInstance))
+        {
+               if(vnfResponse == null) //if the response is null, we haven't queried
+               {
+                       vnfResponse = getAAIServiceInstance(onset); //This does the AAI query since we haven't already
+                       if (vnfResponse == null)
+                           return null;
+               }
+               serviceInstance = vnfResponse.serviceId;
+        }
+        request.nsInstanceId = serviceInstance;
+        request.requestId = onset.requestID;
         request.healRequest = new VFCHealRequest();
         request.healRequest.vnfInstanceId = onset.AAI.get("generic-vnf.vnf-id");
         request.healRequest.cause = operation.message;
-
         request.healRequest.additionalParams = new VFCHealAdditionalParams();
-        if ("Restart".equalsIgnoreCase(policy.getRecipe())) {
-            request.healRequest.additionalParams.action = "restartvm";
-            request.healRequest.additionalParams.actionInfo = new VFCHealActionVmInfo();
-            request.healRequest.additionalParams.actionInfo.vmid = onset.AAI.get("vserver.vserver-id");
-            request.healRequest.additionalParams.actionInfo.vmname = onset.AAI.get("vserver.vserver-name");
-        } else {
-            request = null;
+        
+        switch (policy.getRecipe().toLowerCase()) {
+            case "restart":
+                request.healRequest.additionalParams.action = "restartvm";
+                request.healRequest.additionalParams.actionInfo = new VFCHealActionVmInfo();
+                request.healRequest.additionalParams.actionInfo.vmid = onset.AAI.get("vserver.vserver-id");
+                request.healRequest.additionalParams.actionInfo.vmname = onset.AAI.get("vserver.vserver-name");
+                break;
+            default:
+                return null;
         }
         return request;
     }
 
-    private static String getAAIServiceInstance(VirtualControlLoopEvent event) {
-        AAIGETVnfResponse response;
+
+    private static AAIGETVnfResponse getAAIServiceInstance(VirtualControlLoopEvent event) {
+        AAIGETVnfResponse response = null;
         UUID requestID = event.requestID;
-        String serviceInstance = event.AAI.get("service-instance.service-instance-id");
         String vnfName = event.AAI.get("generic-vnf.vnf-name");
         String vnfID = event.AAI.get("generic-vnf.vnf-id");
-
-        if (serviceInstance == null) {
-            String aaiUrl = PolicyEngine.manager.getEnvironmentProperty("aai.url");
-            String aaiUsername = PolicyEngine.manager.getEnvironmentProperty("aai.username");
-            String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
-            try {
-                if (vnfName != null) {
-                    String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=";
-                    response = AAIManager.getQueryByVnfName(url, aaiUsername, aaiPassword, requestID, vnfName);
-                    if (response != null) {
-                        serviceInstance = response.serviceId;
-                    }
-                } else if (vnfID != null) {
-                    String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf/";
-                    response = AAIManager.getQueryByVnfID(url, aaiUsername, aaiPassword, requestID, vnfID);
-                    if (response != null) {
-                        serviceInstance = response.serviceId;
-                    }
-                } else {
-                    logger.error("getAAIServiceInstance failed");
-
-                }
-            } catch (Exception e) {
-                logger.error("getAAIServiceInstance exception: ", e);
+        String aaiUrl = PolicyEngine.manager.getEnvironmentProperty("aai.url");
+        String aaiUsername = PolicyEngine.manager.getEnvironmentProperty("aai.username");
+        String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
+        try {
+            if (vnfName != null) {
+                String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=";
+                response = AAIManager.getQueryByVnfName(url, aaiUsername, aaiPassword, requestID, vnfName);
+            } else if (vnfID != null) {
+                String url = aaiUrl + "/aai/v11/network/generic-vnfs/generic-vnf/";
+                response = AAIManager.getQueryByVnfID(url, aaiUsername, aaiPassword, requestID, vnfID);
+            } else {
+                logger.error("getAAIServiceInstance failed");
             }
+        } catch (Exception e) {
+            logger.error("getAAIServiceInstance exception: ", e);
         }
-        return serviceInstance;
+        return response;
     }
 }
index 7aaac9e..f8f3b4c 100644 (file)
@@ -72,14 +72,11 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
        private LinkedList<ControlLoopOperation> controlLoopHistory = new LinkedList<>();
        private ControlLoopOperationManager currentOperation = null;
        private transient TargetLock targetLock = null;
-       private static AAIGETVnfResponse vnfResponse = null;
-       private static AAIGETVserverResponse vserverResponse = null;
+       private AAIGETVnfResponse vnfResponse = null;
+       private AAIGETVserverResponse vserverResponse = null;
        private static String aaiHostURL; 
        private static String aaiUser; 
        private static String aaiPassword;
-       private static String aaiGetQueryByVserver; 
-       private static String aaiGetQueryByVnfID; 
-       private static String aaiGetQueryByVnfName; 
        
        private static Collection<String> requiredAAIKeys = new ArrayList<>();
        static {
@@ -438,7 +435,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                
        public NEW_EVENT_STATUS onNewEvent(VirtualControlLoopEvent event) {
                try {
-                       ControlLoopEventManager.checkEventSyntax(event);
+                       this.checkEventSyntax(event);
                        if (event.closedLoopEventStatus == ControlLoopEventStatus.ONSET) {
                                //
                                // Check if this is our original ONSET
@@ -521,7 +518,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                return vserverResponse; 
        }
        
-       public static void checkEventSyntax(VirtualControlLoopEvent event) throws ControlLoopException {
+       public void checkEventSyntax(VirtualControlLoopEvent event) throws ControlLoopException {
                if (event.closedLoopEventStatus == null || 
                                (event.closedLoopEventStatus != ControlLoopEventStatus.ONSET &&
                                event.closedLoopEventStatus != ControlLoopEventStatus.ABATED)) {
index e13352a..262c4c6 100644 (file)
@@ -225,7 +225,7 @@ public class ControlLoopOperationManager implements Serializable {
 
                        return operationRequest;
                case "VFC":
-                        this.operationRequest = VFCActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset, operation.operation, this.policy);
+                        this.operationRequest = VFCActorServiceProvider.constructRequest((VirtualControlLoopEvent) onset, operation.operation, this.policy, this.eventManager.getVnfResponse());
                         this.currentOperation = operation;
                         return operationRequest;
 
index 53ae7bc..0602717 100644 (file)
@@ -30,6 +30,9 @@ import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 @Path("/api/nslcm/v1")
 public class VfcSimulatorJaxRs {
        
@@ -43,7 +46,11 @@ public class VfcSimulatorJaxRs {
                 response.setStatus(HttpServletResponse.SC_ACCEPTED);
                 try {
                         response.flushBuffer();
-                }catch(Exception e){}
+                }catch(Exception e){
+                       final Logger logger = LoggerFactory.getLogger(VfcSimulatorJaxRs.class);
+                       logger.error("flushBuffer threw: ", e);
+                               return "";
+                }
 
                return "{\"jobId\":\"1\"}";
        }