summaryrefslogtreecommitdiffstats
path: root/models-interactions/model-actors/actor.aai/src
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-08-04 16:27:18 -0400
committerJim Hahn <jrh3@att.com>2020-08-06 19:19:46 -0400
commitdeed677c3dc8751209d50e7d35132c929fe6800d (patch)
tree01f3149d4a03206e134d889d50834ae8d141a0ce /models-interactions/model-actors/actor.aai/src
parent364ef26929f06637bca03dd7bfb5e8ac69b611f8 (diff)
Modify Actors to use properties when provided
Modified the Actors to use properties when the application provides them instead of going to the event context for the data. This sometimes entailed moving code out of the Operation subclass constructor that used or validated the context data. Combined some property names and renamed others. Changed VF Count from AtomicInteger to Integer. Issue-ID: POLICY-2746 Change-Id: Ib8730538309bb77d2f4f6161e9a20a49362d8972 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'models-interactions/model-actors/actor.aai/src')
-rw-r--r--models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperation.java41
-rw-r--r--models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperationTest.java41
2 files changed, 59 insertions, 23 deletions
diff --git a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperation.java b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperation.java
index 151f7a214..c8e087036 100644
--- a/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperation.java
+++ b/models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperation.java
@@ -29,7 +29,6 @@ import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.onap.policy.aai.AaiConstants;
import org.onap.policy.aai.AaiCqResponse;
@@ -64,9 +63,6 @@ public class AaiCustomQueryOperation extends HttpOperation<String> {
// TODO make this configurable
private static final String PREFIX = "/aai/v16";
- @Getter
- private final String vserver;
-
/**
* Constructs the object.
*
@@ -75,11 +71,20 @@ public class AaiCustomQueryOperation extends HttpOperation<String> {
*/
public AaiCustomQueryOperation(ControlLoopOperationParams params, HttpConfig config) {
super(params, config, String.class, PROPERTY_NAMES);
+ }
- this.vserver = params.getContext().getEnrichment().get(VSERVER_VSERVER_NAME);
- if (StringUtils.isBlank(this.vserver)) {
+ /**
+ * Gets the vserver name from the enrichment data.
+ *
+ * @return the vserver name
+ */
+ protected String getVserver() {
+ String vserver = this.params.getContext().getEnrichment().get(VSERVER_VSERVER_NAME);
+ if (StringUtils.isBlank(vserver)) {
throw new IllegalArgumentException("missing " + VSERVER_VSERVER_NAME + " in enrichment data");
}
+
+ return vserver;
}
/**
@@ -91,6 +96,7 @@ public class AaiCustomQueryOperation extends HttpOperation<String> {
return null;
}
+ String vserver = getVserver();
ControlLoopOperationParams tenantParams =
params.toBuilder().actor(AaiConstants.ACTOR_NAME).operation(AaiGetTenantOperation.NAME)
.targetEntity(vserver).payload(null).retry(null).timeoutSec(null).build();
@@ -146,16 +152,33 @@ public class AaiCustomQueryOperation extends HttpOperation<String> {
* Constructs the custom query using the previously retrieved tenant data.
*/
private Map<String, String> makeRequest() {
+ return Map.of("start", getVserverLink(), "query", "query/closed-loop");
+ }
+
+ /**
+ * Gets the vserver link, first checking the properties, and then the tenant data.
+ *
+ * @return the vserver link
+ */
+ protected String getVserverLink() {
+ String resourceLink = getProperty(OperationProperties.AAI_VSERVER_LINK);
+ if (resourceLink != null) {
+ return resourceLink;
+ }
+
+ String vserver = getVserver();
StandardCoderObject tenant = params.getContext().getProperty(AaiGetTenantOperation.getKey(vserver));
+ if (tenant == null) {
+ throw new IllegalStateException("cannot perform custom query - cannot determine resource-link");
+ }
- String resourceLink = tenant.getString(RESULT_DATA, 0, RESOURCE_LINK);
+ resourceLink = tenant.getString(RESULT_DATA, 0, RESOURCE_LINK);
if (resourceLink == null) {
throw new IllegalArgumentException("cannot perform custom query - no resource-link");
}
resourceLink = resourceLink.replace(PREFIX, "");
-
- return Map.of("start", resourceLink, "query", "query/closed-loop");
+ return resourceLink;
}
@Override
diff --git a/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperationTest.java b/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperationTest.java
index 476e6432d..f1225373e 100644
--- a/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperationTest.java
+++ b/models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperationTest.java
@@ -23,6 +23,7 @@ package org.onap.policy.controlloop.actor.aai;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@@ -113,11 +114,12 @@ public class AaiCustomQueryOperationTest extends BasicAaiOperation {
HttpParams opParams = HttpParams.builder().clientName(MY_CLIENT).path("v16/query").build();
config = new HttpConfig(blockingExecutor, opParams, HttpClientFactoryInstance.getClientFactory());
- preloadTenantData();
-
- params = params.toBuilder().targetEntity(SIM_VSERVER).retry(0).timeoutSec(5).executor(blockingExecutor).build();
+ params = params.toBuilder().targetEntity(SIM_VSERVER).retry(0).timeoutSec(5).executor(blockingExecutor)
+ .preprocessed(true).build();
oper = new AaiCustomQueryOperation(params, config);
+ oper.setProperty(OperationProperties.AAI_VSERVER_LINK, MY_LINK);
+
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
@@ -129,15 +131,19 @@ public class AaiCustomQueryOperationTest extends BasicAaiOperation {
public void testConstructor() {
assertEquals(AaiConstants.ACTOR_NAME, oper.getActorName());
assertEquals(AaiCustomQueryOperation.NAME, oper.getName());
- assertEquals(MY_VSERVER, oper.getVserver());
// verify that it works with an empty target entity
params = params.toBuilder().targetEntity("").build();
assertThatCode(() -> new AaiCustomQueryOperation(params, config)).doesNotThrowAnyException();
+ }
+
+ @Test
+ public void testGetVserver() {
+ assertEquals(MY_VSERVER, oper.getVserver());
// try without enrichment data
params.getContext().getEnrichment().remove(AaiCustomQueryOperation.VSERVER_VSERVER_NAME);
- assertThatIllegalArgumentException().isThrownBy(() -> new AaiCustomQueryOperation(params, config))
+ assertThatIllegalArgumentException().isThrownBy(() -> oper.getVserver())
.withMessage("missing " + AaiCustomQueryOperation.VSERVER_VSERVER_NAME + " in enrichment data");
}
@@ -215,7 +221,7 @@ public class AaiCustomQueryOperationTest extends BasicAaiOperation {
@Test
@SuppressWarnings("unchecked")
- public void testMakeRequest() throws Exception {
+ public void testMakeRequest_testGetVserverLink() throws Exception {
// preload
preloadTenantData();
@@ -237,17 +243,24 @@ public class AaiCustomQueryOperationTest extends BasicAaiOperation {
}
@Test
- @SuppressWarnings("unchecked")
- public void testMakeRequestNoResourceLink() throws Exception {
- // pre-load EMPTY tenant data
- preloadTenantData(new StandardCoderObject());
+ public void testGetVserverLinkViaProperty() throws Exception {
+ oper.setProperty(OperationProperties.AAI_VSERVER_LINK, MY_LINK);
+ assertEquals(MY_LINK, oper.getVserverLink());
+ }
- when(rawResponse.readEntity(String.class)).thenReturn(makeCqReply());
- when(webAsync.put(any(), any(InvocationCallback.class))).thenAnswer(provideResponse(rawResponse, 1));
+ @Test
+ public void testGetVserverLinkNoTenantData() throws Exception {
+ assertThatIllegalStateException().isThrownBy(() -> oper.getVserverLink())
+ .withMessage("cannot perform custom query - cannot determine resource-link");
+ }
- CompletableFuture<OperationOutcome> future2 = oper.start();
+ @Test
+ public void testGetVserverLinkNoResourceLink() throws Exception {
+ // pre-load EMPTY tenant data
+ preloadTenantData(new StandardCoderObject());
- assertEquals(PolicyResult.FAILURE_EXCEPTION, getResult(future2));
+ assertThatIllegalArgumentException().isThrownBy(() -> oper.getVserverLink())
+ .withMessage("cannot perform custom query - no resource-link");
}
private String makeTenantReply() throws Exception {