Add AAI test tooling to telemetry. 02/92502/4
authorjhh <jorge.hernandez-herrero@att.com>
Thu, 1 Aug 2019 20:20:21 +0000 (15:20 -0500)
committerjhh <jorge.hernandez-herrero@att.com>
Thu, 1 Aug 2019 20:49:17 +0000 (15:49 -0500)
Issue-ID: POLICY-1956
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Change-Id: Icceab57db9c19364afbedbf63ecc8e52c1572cba
Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
controlloop/common/feature-controlloop-management/pom.xml
controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java
controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java

index 57df6b3..7d42f8f 100644 (file)
@@ -81,9 +81,9 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
     public static final String GENERIC_VNF_PROV_STATUS = "generic-vnf.prov-status";
     public static final String VSERVER_PROV_STATUS = "vserver.prov-status";
 
-    private static final String AAI_URL = "aai.url";
-    private static final String AAI_USERNAME_PROPERTY = "aai.username";
-    private static final String AAI_PASS_PROPERTY = "aai.password";
+    public static final String AAI_URL = "aai.url";
+    public static final String AAI_USERNAME_PROPERTY = "aai.username";
+    public static final String AAI_PASS_PROPERTY = "aai.password";
 
     private static final String QUERY_AAI_ERROR_MSG = "Exception from queryAai: ";
 
@@ -961,26 +961,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
             logger.warn("Missing vserver-name for AAI request {}", onset.getRequestId());
             return null;
         }
-
-        // create AAI named-query request with UUID started with ""
-        AaiNqRequest aaiNqRequest = new AaiNqRequest();
-        AaiNqQueryParameters aaiNqQueryParam = new AaiNqQueryParameters();
-        AaiNqNamedQuery aaiNqNamedQuery = new AaiNqNamedQuery();
-        final AaiNqInstanceFilters aaiNqInstanceFilter = new AaiNqInstanceFilters();
-
-        // queryParameters
-        aaiNqNamedQuery.setNamedQueryUuid(UUID.fromString("4ff56a54-9e3f-46b7-a337-07a1d3c6b469"));
-        aaiNqQueryParam.setNamedQuery(aaiNqNamedQuery);
-        aaiNqRequest.setQueryParameters(aaiNqQueryParam);
-        //
-        // instanceFilters
-        //
-        Map<String, Map<String, String>> aaiNqInstanceFilterMap = new HashMap<>();
-        Map<String, String> aaiNqInstanceFilterMapItem = new HashMap<>();
-        aaiNqInstanceFilterMapItem.put("vserver-name", vserverName);
-        aaiNqInstanceFilterMap.put("vserver", aaiNqInstanceFilterMapItem);
-        aaiNqInstanceFilter.getInstanceFilter().add(aaiNqInstanceFilterMap);
-        aaiNqRequest.setInstanceFilters(aaiNqInstanceFilter);
+        AaiNqRequest aaiNqRequest = getAaiNqRequest(vserverName);
 
         if (logger.isDebugEnabled()) {
             logger.debug("AAI Request sent: {}", Serialization.gsonPretty.toJson(aaiNqRequest));
@@ -1007,6 +988,35 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
         return nqVserverResponse;
     }
 
+    /**
+     * Gets an AAI Named Query Request object.
+     *
+     * @param vserverName vserver name.
+     * @return the AAI Named Query Request object.
+     */
+    public static AaiNqRequest getAaiNqRequest(String vserverName) {
+        // create AAI named-query request with UUID started with ""
+        AaiNqRequest aaiNqRequest = new AaiNqRequest();
+        AaiNqQueryParameters aaiNqQueryParam = new AaiNqQueryParameters();
+        AaiNqNamedQuery aaiNqNamedQuery = new AaiNqNamedQuery();
+        final AaiNqInstanceFilters aaiNqInstanceFilter = new AaiNqInstanceFilters();
+
+        // queryParameters
+        aaiNqNamedQuery.setNamedQueryUuid(UUID.fromString("4ff56a54-9e3f-46b7-a337-07a1d3c6b469"));
+        aaiNqQueryParam.setNamedQuery(aaiNqNamedQuery);
+        aaiNqRequest.setQueryParameters(aaiNqQueryParam);
+        //
+        // instanceFilters
+        //
+        Map<String, Map<String, String>> aaiNqInstanceFilterMap = new HashMap<>();
+        Map<String, String> aaiNqInstanceFilterMapItem = new HashMap<>();
+        aaiNqInstanceFilterMapItem.put("vserver-name", vserverName);
+        aaiNqInstanceFilterMap.put("vserver", aaiNqInstanceFilterMapItem);
+        aaiNqInstanceFilter.getInstanceFilter().add(aaiNqInstanceFilterMap);
+        aaiNqRequest.setInstanceFilters(aaiNqInstanceFilter);
+        return aaiNqRequest;
+    }
+
     /**
      * This method reads and validates environmental properties coming from the policy engine. Null properties cause an
      * {@link IllegalArgumentException} runtime exception to be thrown
index e778cda..50c70f3 100644 (file)
           <artifactId>assertj-core</artifactId>
           <scope>test</scope>
         </dependency>
+        <dependency>
+          <groupId>org.onap.policy.models.policy-models-interactions</groupId>
+          <artifactId>simulators</artifactId>
+          <version>${policy.models.version}</version>
+          <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
index 57ef17a..22e0451 100644 (file)
@@ -29,6 +29,7 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.util.List;
+import java.util.UUID;
 import java.util.stream.Collectors;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
@@ -39,12 +40,17 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
+import org.onap.policy.aai.AaiManager;
+import org.onap.policy.aai.util.AaiException;
 import org.onap.policy.controlloop.ControlLoopException;
+import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager;
 import org.onap.policy.controlloop.params.ControlLoopParams;
 import org.onap.policy.controlloop.processor.ControlLoopProcessor;
 import org.onap.policy.drools.apps.controlloop.feature.management.ControlLoopManagementFeature;
 import org.onap.policy.drools.controller.DroolsController;
 import org.onap.policy.drools.system.PolicyController;
+import org.onap.policy.drools.system.PolicyEngine;
+import org.onap.policy.rest.RestManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -221,4 +227,46 @@ public class RestControlLoopManager {
             return Response.status(Status.NOT_ACCEPTABLE).entity(e).build();
         }
     }
+
+    /**
+     * AAI Custom Query.
+     *
+     * @param vserverId vServer identifier.
+     * @return query results.
+     */
+    @GET
+    @Path("engine/tools/controlloops/aai/customQuery/{vserverId}")
+    @ApiOperation(value = "AAI Custom Query")
+    public Response aaiCustomQuery(@ApiParam(value = "vserver Identifier") String vserverId) {
+        return Response
+            .status(Status.OK)
+            .entity(new AaiManager(new RestManager())
+                .getCustomQueryResponse(PolicyEngine.manager.getEnvironmentProperty(ControlLoopEventManager.AAI_URL),
+                    PolicyEngine.manager.getEnvironmentProperty(ControlLoopEventManager.AAI_USERNAME_PROPERTY),
+                    PolicyEngine.manager.getEnvironmentProperty(ControlLoopEventManager.AAI_PASS_PROPERTY),
+                    UUID.randomUUID(),
+                    vserverId))
+            .build();
+    }
+
+    /**
+     * AAI Named Query.
+     *
+     * @param vserverId vServer identifier.
+     * @return query results.
+     */
+    @GET
+    @Path("engine/tools/controlloops/aai/namedQuery/{vserverId}")
+    @ApiOperation(value = "AAI Custom Query")
+    public Response aaiNamedQuery(@ApiParam(value = "vserver Identifier") String vserverId) {
+        return Response
+            .status(Status.OK)
+            .entity(new AaiManager(new RestManager())
+                .postQuery(PolicyEngine.manager.getEnvironmentProperty(ControlLoopEventManager.AAI_URL),
+                    PolicyEngine.manager.getEnvironmentProperty(ControlLoopEventManager.AAI_USERNAME_PROPERTY),
+                    PolicyEngine.manager.getEnvironmentProperty(ControlLoopEventManager.AAI_PASS_PROPERTY),
+                    ControlLoopEventManager.getAaiNqRequest(vserverId),
+                    UUID.randomUUID()))
+            .build();
+    }
 }
index 849b418..ae14a64 100644 (file)
@@ -23,6 +23,7 @@ package org.onap.policy.drools.server.restful;
 import static org.awaitility.Awaitility.await;
 import static org.hamcrest.Matchers.equalTo;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -38,14 +39,20 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.kie.api.builder.ReleaseId;
+import org.onap.policy.aai.AaiCqResponse;
+import org.onap.policy.aai.AaiNqResponseWrapper;
 import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.network.NetworkUtil;
+import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager;
 import org.onap.policy.drools.persistence.SystemPersistence;
 import org.onap.policy.drools.properties.DroolsProperties;
 import org.onap.policy.drools.system.PolicyController;
 import org.onap.policy.drools.system.PolicyEngine;
 import org.onap.policy.drools.util.KieUtils;
 import org.onap.policy.drools.utils.logging.LoggerUtil;
+import org.onap.policy.simulators.Util;
 
 /**
  * Test RestControlLoopManager.
@@ -70,6 +77,11 @@ public class RestControlLoopManagerTest {
     private static final String URL_CONTEXT_PATH_CONTROLLOOP = URL_CONTEXT_PATH_CONTROLLOOPS +  CONTROLOOP_NAME;
     private static final String URL_CONTEXT_PATH_CONTROLLOOP_POLICY = URL_CONTEXT_PATH_CONTROLLOOP + "/policy";
 
+    private static final String URL_CONTEXT_PATH_TOOLS = "tools/controlloops/";
+    private static final String URL_CONTEXT_PATH_TOOLS_AAI = URL_CONTEXT_PATH_TOOLS + "aai/";
+    private static final String URL_CONTEXT_PATH_TOOLS_AAI_NQ = URL_CONTEXT_PATH_TOOLS_AAI + "namedQuery/";
+    private static final String URL_CONTEXT_PATH_TOOLS_AAI_CQ = URL_CONTEXT_PATH_TOOLS_AAI + "customQuery/";
+
     private static final String POLICY = "src/test/resources/vCPE.yaml";
 
     private static final String CONTROLLER_FILE = "op-controller.properties";
@@ -107,6 +119,12 @@ public class RestControlLoopManagerTest {
         }
 
         await().atMost(1, TimeUnit.MINUTES).until(isContainerAlive());
+
+        PolicyEngine.manager.setEnvironmentProperty(ControlLoopEventManager.AAI_URL, "http://localhost:6666");
+        PolicyEngine.manager.setEnvironmentProperty(ControlLoopEventManager.AAI_USERNAME_PROPERTY, "AAI");
+        PolicyEngine.manager.setEnvironmentProperty(ControlLoopEventManager.AAI_PASS_PROPERTY, "AAI");
+
+        Util.buildAaiSim();
     }
 
     /**
@@ -171,7 +189,43 @@ public class RestControlLoopManagerTest {
     }
 
     /**
-     * Test if the session is alive
+     * Test AAI Named Query.
+     */
+    @Test
+    public void testAaiNq() throws CoderException {
+        assertEquals(Status.OK.getStatusCode(),
+            HttpClientFactoryInstance.getClientFactory().get(CONTROLLER)
+                .get(URL_CONTEXT_PATH_TOOLS_AAI_NQ + "dummy")
+                .getStatus());
+
+        String nqResponse =
+            HttpClientFactoryInstance.getClientFactory().get(CONTROLLER)
+                .get(URL_CONTEXT_PATH_TOOLS_AAI_NQ + "dummy")
+                .readEntity(String.class);
+
+        assertNotNull(new StandardCoder().decode(nqResponse, AaiNqResponseWrapper.class));
+    }
+
+    /**
+     * Test AAI Custom Query.
+     */
+    @Test
+    public void testAaiCq() throws CoderException {
+        assertEquals(Status.OK.getStatusCode(),
+            HttpClientFactoryInstance.getClientFactory().get(CONTROLLER)
+                .get(URL_CONTEXT_PATH_TOOLS_AAI_CQ + "dummy")
+                .getStatus());
+
+        String cqResponse =
+            HttpClientFactoryInstance.getClientFactory().get(CONTROLLER)
+                .get(URL_CONTEXT_PATH_TOOLS_AAI_CQ + "dummy")
+                .readEntity(String.class);
+
+        assertNotNull(new StandardCoder().decode(cqResponse, AaiCqResponse.class));
+    }
+
+    /**
+     * Test if the session is alive.
      *
      * @return if the container is alive.
      */