diff options
author | Jim Hahn <jrh3@att.com> | 2020-02-26 11:07:35 -0500 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2020-02-26 11:17:18 -0500 |
commit | 72b4a13723049c5d4a066879aa67d08ec5e86180 (patch) | |
tree | ef98a84a5b0a4e0bda8ab88016271f380b5ab592 /models-interactions/model-actors/actor.aai/src/main | |
parent | aa2e18733fbaa2a0910091eca9677c076c53f454 (diff) |
Custom Query should always use vserver
Modified the Custom Query Operation to ignore the target entity
passed via the "params" and always use the vserver name found in
the enrichment data.
Issue-ID: POLICY-2349
Signed-off-by: Jim Hahn <jrh3@att.com>
Change-Id: If2c45df2d0377ca08059bdbfa0bcc3d3f043c5b9
Diffstat (limited to 'models-interactions/model-actors/actor.aai/src/main')
-rw-r--r-- | models-interactions/model-actors/actor.aai/src/main/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperation.java | 22 |
1 files changed, 16 insertions, 6 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 d2e8be510..613b6689d 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 @@ -25,6 +25,8 @@ import java.util.concurrent.CompletableFuture; import javax.ws.rs.client.Entity; 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; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; @@ -40,18 +42,23 @@ import org.slf4j.LoggerFactory; /** * A&AI Custom Query. Stores the {@link AaiCqResponse} in the context. In addition, if the * context does not contain the "tenant" data for the vserver, then it will request that, - * as well. + * as well. Note: this ignores the "target entity" in the parameters as this query always + * applies to the vserver, thus the target entity may be set to an empty string. */ public class AaiCustomQueryOperation extends HttpOperation<String> { private static final Logger logger = LoggerFactory.getLogger(AaiCustomQueryOperation.class); public static final String NAME = AaiCqResponse.OPERATION; + public static final String VSERVER_VSERVER_NAME = "vserver.vserver-name"; public static final String RESOURCE_LINK = "resource-link"; public static final String RESULT_DATA = "result-data"; private static final String PREFIX = "/aai/v16"; + @Getter + private final String vserver; + /** * Constructs the object. * @@ -60,6 +67,11 @@ public class AaiCustomQueryOperation extends HttpOperation<String> { */ public AaiCustomQueryOperation(ControlLoopOperationParams params, HttpConfig config) { super(params, config, String.class); + + this.vserver = params.getContext().getEnrichment().get(VSERVER_VSERVER_NAME); + if (StringUtils.isBlank(this.vserver)) { + throw new IllegalArgumentException("missing " + VSERVER_VSERVER_NAME + " in enrichment data"); + } } /** @@ -67,10 +79,9 @@ public class AaiCustomQueryOperation extends HttpOperation<String> { */ @Override protected CompletableFuture<OperationOutcome> startPreprocessorAsync() { - String vserver = params.getTargetEntity(); - - ControlLoopOperationParams tenantParams = params.toBuilder().actor(AaiConstants.ACTOR_NAME) - .operation(AaiGetOperation.TENANT).payload(null).retry(null).timeoutSec(null).build(); + ControlLoopOperationParams tenantParams = + params.toBuilder().actor(AaiConstants.ACTOR_NAME).operation(AaiGetOperation.TENANT) + .targetEntity(vserver).payload(null).retry(null).timeoutSec(null).build(); return params.getContext().obtain(AaiGetOperation.getTenantKey(vserver), tenantParams); } @@ -99,7 +110,6 @@ public class AaiCustomQueryOperation extends HttpOperation<String> { * Constructs the custom query using the previously retrieved tenant data. */ private Map<String, String> makeRequest() { - String vserver = params.getTargetEntity(); StandardCoderObject tenant = params.getContext().getProperty(AaiGetOperation.getTenantKey(vserver)); String resourceLink = tenant.getString(RESULT_DATA, 0, RESOURCE_LINK); |