summaryrefslogtreecommitdiffstats
path: root/controlloop
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop')
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java56
-rw-r--r--controlloop/common/feature-controlloop-management/pom.xml6
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java48
-rw-r--r--controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java56
4 files changed, 142 insertions, 24 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 57df6b3f4..7d42f8f76 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
@@ -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));
@@ -1008,6 +989,35 @@ public class ControlLoopEventManager implements LockCallback, Serializable {
}
/**
+ * 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
*
diff --git a/controlloop/common/feature-controlloop-management/pom.xml b/controlloop/common/feature-controlloop-management/pom.xml
index e778cda01..50c70f37e 100644
--- a/controlloop/common/feature-controlloop-management/pom.xml
+++ b/controlloop/common/feature-controlloop-management/pom.xml
@@ -286,5 +286,11 @@
<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>
diff --git a/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java b/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java
index 57ef17a33..22e0451e3 100644
--- a/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java
+++ b/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java
@@ -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();
+ }
}
diff --git a/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java b/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java
index 849b4189b..ae14a64b7 100644
--- a/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java
+++ b/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java
@@ -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.
*/