X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-interactions%2Fmodel-actors%2Factor.aai%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontrolloop%2Factor%2Faai%2FAaiCustomQueryOperation.java;h=0f9e2a1c4cb9b46f72d7bcbe7cfd9a27b46fee4d;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=b00928847dba63df88e40a590a8b796eb579798b;hpb=88fedd4d3edbb581eabe20074a65c32b635fc3b2;p=policy%2Fmodels.git 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 b00928847..0f9e2a1c4 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 @@ -2,7 +2,8 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,27 +21,24 @@ package org.onap.policy.controlloop.actor.aai; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.client.Invocation.Builder; +import jakarta.ws.rs.client.WebTarget; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.CompletableFuture; -import javax.ws.rs.client.Entity; -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; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType; -import org.onap.policy.common.utils.coder.StandardCoderObject; import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; +import org.onap.policy.controlloop.actorserviceprovider.OperationProperties; +import org.onap.policy.controlloop.actorserviceprovider.OperationResult; import org.onap.policy.controlloop.actorserviceprovider.impl.HttpOperation; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * A&AI Custom Query. Stores the {@link AaiCqResponse} in the context. In addition, if the @@ -49,19 +47,13 @@ import org.slf4j.LoggerFactory; * applies to the vserver, thus the target entity may be set to an empty string. */ public class AaiCustomQueryOperation extends HttpOperation { - 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"; - // TODO make this configurable - private static final String PREFIX = "/aai/v16"; - - @Getter - private final String vserver; + private static final List PROPERTY_NAMES = List.of(OperationProperties.AAI_VSERVER_LINK); /** * Constructs the object. @@ -70,24 +62,7 @@ public class AaiCustomQueryOperation extends HttpOperation { * @param config configuration for this operation */ 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"); - } - } - - /** - * Queries the vserver, if necessary. - */ - @Override - protected CompletableFuture startPreprocessorAsync() { - 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); + super(params, config, String.class, PROPERTY_NAMES); } @Override @@ -102,7 +77,7 @@ public class AaiCustomQueryOperation extends HttpOperation { final Map request = makeRequest(); Map headers = makeHeaders(); - StringBuilder str = new StringBuilder(getClient().getBaseUrl()); + var str = new StringBuilder(getClient().getBaseUrl()); String path = getPath(); WebTarget web = getClient().getWebTarget().path(path); @@ -115,11 +90,12 @@ public class AaiCustomQueryOperation extends HttpOperation { webldr.header(header.getKey(), header.getValue()); } - String url = str.toString(); + var url = str.toString(); - logMessage(EventType.OUT, CommInfrastructure.REST, url, request); + String strRequest = prettyPrint(request); + logMessage(EventType.OUT, CommInfrastructure.REST, url, strRequest); - Entity> entity = Entity.entity(request, MediaType.APPLICATION_JSON); + Entity entity = Entity.entity(strRequest, MediaType.APPLICATION_JSON); return handleResponse(outcome, url, callback -> webldr.async().put(entity, callback)); } @@ -137,16 +113,16 @@ public class AaiCustomQueryOperation extends HttpOperation { * Constructs the custom query using the previously retrieved tenant data. */ private Map makeRequest() { - StandardCoderObject tenant = params.getContext().getProperty(AaiGetOperation.getTenantKey(vserver)); - - String 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", getVserverLink(), "query", "query/closed-loop"); + } - return Map.of("start", resourceLink, "query", "query/closed-loop"); + /** + * Gets the vserver link, first checking the properties, and then the tenant data. + * + * @return the vserver link + */ + protected String getVserverLink() { + return getRequiredProperty(OperationProperties.AAI_VSERVER_LINK, "vserver link"); } @Override @@ -154,16 +130,16 @@ public class AaiCustomQueryOperation extends HttpOperation { return AaiUtil.makeHeaders(params); } - /** - * Injects the response into the context. - */ @Override - protected CompletableFuture postProcessResponse(OperationOutcome outcome, String url, - Response rawResponse, String response) { + public OperationOutcome setOutcome(OperationOutcome outcome, OperationResult result, Response rawResponse, + String response) { - logger.info("{}: caching response for {}", getFullName(), params.getRequestId()); - params.getContext().setProperty(AaiCqResponse.CONTEXT_KEY, new AaiCqResponse(response)); + super.setOutcome(outcome, result, rawResponse, response); + + if (response != null) { + outcome.setResponse(new AaiCqResponse(response)); + } - return super.postProcessResponse(outcome, url, rawResponse, response); + return outcome; } }