Fix Use Case Template 31/15731/2
authordaniel <dc443y@att.com>
Tue, 26 Sep 2017 21:21:02 +0000 (16:21 -0500)
committerJorge Hernandez <jh1730@att.com>
Wed, 27 Sep 2017 02:09:37 +0000 (02:09 +0000)
This is a WIP for getting guard to work. Currently
the A&AI GET and named queries are connecting to
the simulator and working in the labs. Guard is not
connecting to simulator and needs further analysis.

Issue-ID: POLICY-259
Change-Id: If9875bfd83cbd82dcae04a876b3818ec9c07b1f7
Signed-off-by: Daniel Cruz <dc443y@att.com>
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
controlloop/common/simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java
controlloop/common/simulators/src/main/java/org/onap/policy/simulators/VfcSimulatorJaxRs.java
controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl
controlloop/templates/template.demo/src/main/resources/ControlLoop_Template_xacml_guard.drl
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java

index 0d4aa93..7aaac9e 100644 (file)
@@ -629,7 +629,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                try {
                if (vserverName != null) {
                   aaiHostURL  = PolicyEngine.manager.getEnvironmentProperty("aai.url"); 
-                  aaiUser     = PolicyEngine.manager.getEnvironmentProperty("aai.user"); 
+                  aaiUser     = PolicyEngine.manager.getEnvironmentProperty("aai.username"); 
                   aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
                   String aaiGetQueryByVserver = "/aai/v11/nodes/vservers?vserver-name="; 
                           String url = aaiHostURL + aaiGetQueryByVserver; 
@@ -650,19 +650,17 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
                String vnfName = event.AAI.get("generic-vnf.vnf-name"); 
                String vnfID   = event.AAI.get("generic-vnf.vnf-id"); 
  
+               aaiHostURL  = PolicyEngine.manager.getEnvironmentProperty("aai.url"); 
+        aaiUser     = PolicyEngine.manager.getEnvironmentProperty("aai.username"); 
+        aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
+               
                try {
             if (vnfName != null) {
-                  aaiHostURL  = PolicyEngine.manager.getEnvironmentProperty("aai.url"); 
-                  aaiUser     = PolicyEngine.manager.getEnvironmentProperty("aai.user"); 
-                  aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
                   String aaiGetQueryByVnfName = "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name="; 
                           String url = aaiHostURL + aaiGetQueryByVnfName; 
                           logger.info("url: " + url);
                           response = AAIManager.getQueryByVnfName(url, aaiUser, aaiPassword, requestID, vnfName);                      
                } else if (vnfID != null) {
-                      aaiHostURL  = PolicyEngine.manager.getEnvironmentProperty("aai.url"); 
-                      aaiUser     = PolicyEngine.manager.getEnvironmentProperty("aai.user"); 
-                      aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password");
                       String aaiGetQueryByVnfID = "/aai/v11/network/generic-vnfs/generic-vnf/"; 
                           String url = aaiHostURL + aaiGetQueryByVnfID; 
                           logger.info("url: " + url);
index 59e97c2..ad106e5 100644 (file)
@@ -36,6 +36,7 @@ public class AaiSimulatorJaxRs {
        
        @GET
        @Path("/v8/network/generic-vnfs/generic-vnf/{vnfId}")
+       @Consumes(MediaType.APPLICATION_JSON)
        @Produces("application/json")
        public String aaiGetQuery (@PathParam("vnfID") String vnfId)
        {
@@ -63,6 +64,7 @@ public class AaiSimulatorJaxRs {
        
        @GET
        @Path("/v11/network/generic-vnfs/generic-vnf?vnf-name={vnfName}")
+       @Consumes(MediaType.APPLICATION_JSON)
        @Produces("application/json")
        public String getByVnfName (@PathParam("vnfName") String vnfName)
        {
@@ -72,6 +74,7 @@ public class AaiSimulatorJaxRs {
        
        @GET
        @Path("/v11/network/generic-vnfs/generic-vnf/{vnfId}")
+       @Consumes(MediaType.APPLICATION_JSON)
        @Produces("application/json")
        public String getByVnfId (@PathParam("vnfId") String vnfId)
        {
@@ -81,6 +84,7 @@ public class AaiSimulatorJaxRs {
        
        @GET
        @Path("/v11/nodes/vservers?vserver-name={vserverName}")
+       @Consumes(MediaType.APPLICATION_JSON)
        @Produces("application/json")
        public String getByVserverName (@PathParam("vserverName") String vserverName)
        {
index 926536e..53ae7bc 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.policy.simulators;
 
+import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -27,12 +28,14 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
 
 @Path("/api/nslcm/v1")
 public class VfcSimulatorJaxRs {
        
        @POST
        @Path("/ns/{nsInstanceId}/heal")
+       @Consumes(MediaType.APPLICATION_JSON)
        @Produces("application/json")
        public String vfcPostQuery(@PathParam("nsInstanceId") String nsInstanceId,
                                    @Context final HttpServletResponse response)
@@ -47,6 +50,7 @@ public class VfcSimulatorJaxRs {
        
        @GET
        @Path("/jobs/{jobId}")
+       @Consumes(MediaType.APPLICATION_JSON)
        @Produces("application/json")
        public String vfcGetQuery(@PathParam("jobId") String jobId) {
                return "{\"jobId\" : "+jobId+",\"responseDescriptor\" : {\"progress\" : \"40\",\"status\" : \"finished\",\"statusDescription\" : \"OMC VMs are decommissioned in VIM\",\"errorCode\" : null,\"responseId\": 101 ,\"responseHistoryList\": [{\"progress\" : \"40\",\"status\" : \"proccessing\",\"statusDescription\" : \"OMC VMs are decommissioned in VIM\",\"errorCode\" : null,\"responseId\" : \"1\"}, {\"progress\" : \"41\",\"status\" : \"proccessing\",\"statusDescription\" : \"OMC VMs are decommissioned in VIM\",\"errorCode\" : null,\"responseId\" : \"2\"}]}}";
index b10cc3b..343221f 100644 (file)
@@ -506,7 +506,7 @@ rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED"
         $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
         $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
         $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID )
-        $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, getGuardApprovalStatus() == "Permit" )
+        $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, "Permit".equalsIgnoreCase(getGuardApprovalStatus()) )
         $lock : TargetLock (requestID == $event.requestID)
     then
 
@@ -620,7 +620,7 @@ rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED"
     // to the CallGuardTask() and set the first argument to null 
     // (instead of XacmlPdpEngine).
     //
-    boolean guardEnabled = false;
+    boolean guardEnabled = true;
     
     if(guardEnabled){
     
@@ -682,7 +682,7 @@ rule "${policyName}.GUARD.RESPONSE"
     
     PolicyEngine.manager.deliver("POLICY-CL-MGT", notification);
     
-    if("Permit".equals($guardResponse.result)){
+    if("Permit".equalsIgnoreCase($guardResponse.result)){
     
         modify($operation){setGuardApprovalStatus($guardResponse.result)};
     }
index 64101ac..6976e99 100644 (file)
@@ -473,7 +473,7 @@ rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED"
         $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
         $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
         $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID )
-        $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, getGuardApprovalStatus() == "Permit" )
+        $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, "Permit".equalsIgnoreCase(getGuardApprovalStatus()) )
         $lock : TargetLock (requestID == $event.requestID)
        then
        //
@@ -657,7 +657,7 @@ rule "${policyName}.GUARD.RESPONSE"
                
                
                
-               if("Permit".equals($guardResponse.result)){
+               if("Permit".equalsIgnoreCase($guardResponse.result)){
                
                        modify($operation){setGuardApprovalStatus($guardResponse.result)};
                }
index f8f9068..8e8ac35 100644 (file)
@@ -126,6 +126,10 @@ public final class Util {
                return org.onap.policy.simulators.Util.buildVfcSim();
        }
        
+       public static HttpServletServer buildGuardSim() throws InterruptedException, IOException {
+        return org.onap.policy.simulators.Util.buildGuardSim();
+    }
+       
        private static String   generatePolicy(String ruleContents, 
                        String closedLoopControlName, 
                        String policyScope, 
index 53c9245..9743f88 100644 (file)
@@ -28,6 +28,8 @@ import java.time.Instant;
 import java.util.HashMap;
 import java.util.UUID;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.kie.api.runtime.KieSession;
 import org.kie.api.runtime.rule.FactHandle;
@@ -41,7 +43,9 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.controlloop.policy.ControlLoopPolicy;
 import org.onap.policy.controlloop.policy.TargetType;
+import org.onap.policy.drools.http.server.HttpServletServer;
 import org.onap.policy.drools.impl.PolicyEngineJUnitImpl;
+import org.onap.policy.drools.system.PolicyEngine;
 import org.onap.policy.guard.PolicyGuard;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +56,33 @@ public class VCPEControlLoopTest {
     
     private KieSession kieSession;
     private Util.Pair<ControlLoopPolicy, String> pair;
-    private PolicyEngineJUnitImpl engine;        
+    private PolicyEngineJUnitImpl engine;    
+    
+    static {
+        /* Set environment properties */
+        PolicyEngine.manager.setEnvironmentProperty("aai.url", "http://localhost:6666");
+        PolicyEngine.manager.setEnvironmentProperty("aai.username", "AAI");
+        PolicyEngine.manager.setEnvironmentProperty("aai.password", "AAI");
+        
+        PolicyEngine.manager.setEnvironmentProperty("guard.url", "http://localhost:6669/pdp/api/getDecision");
+        PolicyEngine.manager.setEnvironmentProperty("guard.username", "GUARD");
+        PolicyEngine.manager.setEnvironmentProperty("guard.password", "GUARD");
+    }
+    
+    @BeforeClass
+    public static void setUpSimulator() {
+        try {
+            Util.buildAaiSim();
+            Util.buildGuardSim();
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+    }
+
+    @AfterClass
+    public static void tearDownSimulator() {
+        HttpServletServer.factory.destroy();
+    }
     
     @Test
     public void successTest() {
@@ -168,7 +198,7 @@ public class VCPEControlLoopTest {
          * See if Guard permits this action, if it does 
          * not then the test should fail
          */
-        if (((VirtualControlLoopNotification)obj).message.contains("Guard result: Permit")) {
+        if (((VirtualControlLoopNotification)obj).message.contains("Guard result: PERMIT")) {
             
             /* 
              * A notification should be sent out of the Policy
@@ -395,13 +425,10 @@ public class VCPEControlLoopTest {
         event.target = "generic-vnf.vnf-id";
         event.closedLoopAlarmStart = Instant.now();
         event.AAI = new HashMap<>();
-        event.AAI.put("cloud-region.identity-url", "foo");
-        event.AAI.put("vserver.selflink", "bar");
-        event.AAI.put("vserver.is-closed-loop-disabled", "false");
         event.AAI.put("generic-vnf.vnf-id", "testGenericVnfId");
         event.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
         kieSession.insert(event);
-        Thread.sleep(1000);
+        Thread.sleep(2000);
     }
     
     /**
@@ -421,9 +448,6 @@ public class VCPEControlLoopTest {
         event.closedLoopAlarmStart = Instant.now().minusSeconds(5);
         event.closedLoopAlarmEnd = Instant.now();
         event.AAI = new HashMap<>();
-        event.AAI.put("cloud-region.identity-url", "foo");
-        event.AAI.put("vserver.selflink", "bar");
-        event.AAI.put("vserver.is-closed-loop-disabled", "false");
         event.AAI.put("generic-vnf.vnf-id", "testGenericVnfId");
         event.closedLoopEventStatus = ControlLoopEventStatus.ABATED;
         kieSession.insert(event);
index 4cd0054..a63344d 100644 (file)
@@ -415,9 +415,6 @@ public class VFWControlLoopTest {
         event.target = "generic-vnf.vnf-id";
         event.closedLoopAlarmStart = Instant.now();
         event.AAI = new HashMap<>();
-        event.AAI.put("cloud-region.identity-url", "foo");
-        event.AAI.put("vserver.selflink", "bar");
-        event.AAI.put("vserver.is-closed-loop-disabled", "false");
         event.AAI.put("generic-vnf.vnf-id", "testGenericVnfID");
         event.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
         kieSession.insert(event);