diff options
Diffstat (limited to 'models-interactions/model-actors/actor.so/src/main')
5 files changed, 105 insertions, 68 deletions
diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoActorServiceProvider.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoActorServiceProvider.java index c7c6b00e9..1dbad623b 100644 --- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoActorServiceProvider.java +++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoActorServiceProvider.java @@ -98,7 +98,7 @@ public class SoActorServiceProvider extends ActorImpl { public SoActorServiceProvider() { super(NAME); - addOperator(SoOperator.makeSoOperator(NAME, VfModuleCreate.NAME, VfModuleCreate::new)); + addOperator(new SoOperator(NAME, VfModuleCreate.NAME, VfModuleCreate::new)); } // TODO old code: remove lines down to **HERE** diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoConfig.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoConfig.java new file mode 100644 index 000000000..959cd454a --- /dev/null +++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoConfig.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.controlloop.actor.so; + +import java.util.concurrent.Executor; +import lombok.Getter; +import org.onap.policy.common.endpoints.http.client.HttpClient; +import org.onap.policy.common.endpoints.http.client.HttpClientFactory; +import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig; + +@Getter +public class SoConfig extends HttpConfig { + + /** + * Path to use for the "get" request. A trailing "/" is added, if it is missing. + */ + private String pathGet; + + /** + * Maximum number of "get" requests permitted, after the initial request, to retrieve + * the response. + */ + private int maxGets; + + /** + * Time, in seconds, to wait between issuing "get" requests. + */ + private int waitSecGet; + + + /** + * Constructs the object. + * + * @param blockingExecutor executor to be used for tasks that may perform blocking I/O + * @param params operator parameters + * @param clientFactory factory from which to obtain the {@link HttpClient} + */ + public SoConfig(Executor blockingExecutor, SoParams params, HttpClientFactory clientFactory) { + super(blockingExecutor, params, clientFactory); + + this.pathGet = params.getPathGet() + (params.getPathGet().endsWith("/") ? "" : "/"); + this.maxGets = params.getMaxGets(); + this.waitSecGet = params.getWaitSecGet(); + } +} diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java index 510a737a6..d8d960e54 100644 --- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java +++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java @@ -41,6 +41,7 @@ import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; 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.onap.policy.controlloop.policy.PolicyResult; import org.onap.policy.controlloop.policy.Target; import org.onap.policy.so.SoModelInfo; @@ -68,8 +69,7 @@ public abstract class SoOperation extends HttpOperation<SoResponse> { public static final String REQ_PARAM_NM = "requestParameters"; public static final String CONFIG_PARAM_NM = "configurationParameters"; - @Getter - private final SoOperator operator; + private final SoConfig config; /** * Number of "get" requests issued so far, on the current operation attempt. @@ -82,11 +82,11 @@ public abstract class SoOperation extends HttpOperation<SoResponse> { * Constructs the object. * * @param params operation parameters - * @param operator operator that created this operation + * @param config configuration for this operation */ - public SoOperation(ControlLoopOperationParams params, SoOperator operator) { - super(params, operator, SoResponse.class); - this.operator = operator; + public SoOperation(ControlLoopOperationParams params, HttpConfig config) { + super(params, config, SoResponse.class); + this.config = (SoConfig) config; } /** @@ -134,9 +134,8 @@ public abstract class SoOperation extends HttpOperation<SoResponse> { } // see if the limit for the number of "gets" has been reached - if (getCount++ >= operator.getMaxGets()) { - logger.warn("{}: execeeded 'get' limit {} for {}", getFullName(), operator.getMaxGets(), - params.getRequestId()); + if (getCount++ >= getMaxGets()) { + logger.warn("{}: execeeded 'get' limit {} for {}", getFullName(), getMaxGets(), params.getRequestId()); setOutcome(outcome, PolicyResult.FAILURE_TIMEOUT); outcome.setMessage(SO_RESPONSE_CODE + " " + outcome.getMessage()); return CompletableFuture.completedFuture(outcome); @@ -155,15 +154,15 @@ public abstract class SoOperation extends HttpOperation<SoResponse> { * @return a future that can be used to cancel the "get" request or await its response */ private CompletableFuture<OperationOutcome> issueGet(OperationOutcome outcome, SoResponse response) { - String path = operator.getPathGet() + response.getRequestReferences().getRequestId(); - String url = operator.getClient().getBaseUrl() + path; + String path = getPathGet() + response.getRequestReferences().getRequestId(); + String url = getClient().getBaseUrl() + path; logger.debug("{}: 'get' count {} for {}", getFullName(), getCount, params.getRequestId()); logMessage(EventType.OUT, CommInfrastructure.REST, url, null); // TODO should this use "path" or the full "url"? - return handleResponse(outcome, url, callback -> operator.getClient().get(callback, path, null)); + return handleResponse(outcome, url, callback -> getClient().get(callback, path, null)); } /** @@ -335,6 +334,18 @@ public abstract class SoOperation extends HttpOperation<SoResponse> { * @return the wait time, in milliseconds, between "get" requests */ public long getWaitMsGet() { - return TimeUnit.MILLISECONDS.convert(operator.getWaitSecGet(), TimeUnit.SECONDS); + return TimeUnit.MILLISECONDS.convert(getWaitSecGet(), TimeUnit.SECONDS); + } + + public int getMaxGets() { + return config.getMaxGets(); + } + + public String getPathGet() { + return config.getPathGet(); + } + + public int getWaitSecGet() { + return config.getWaitSecGet(); } } diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperator.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperator.java index 011201f23..b8d0e652a 100644 --- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperator.java +++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperator.java @@ -21,70 +21,32 @@ package org.onap.policy.controlloop.actor.so; import java.util.Map; -import java.util.function.BiFunction; -import lombok.Getter; import org.onap.policy.common.parameters.ValidationResult; -import org.onap.policy.controlloop.actorserviceprovider.Operation; import org.onap.policy.controlloop.actorserviceprovider.Util; +import org.onap.policy.controlloop.actorserviceprovider.impl.HttpOperation; import org.onap.policy.controlloop.actorserviceprovider.impl.HttpOperator; -import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; +import org.onap.policy.controlloop.actorserviceprovider.impl.OperationMaker; +import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig; import org.onap.policy.controlloop.actorserviceprovider.parameters.ParameterValidationRuntimeException; -@Getter -public abstract class SoOperator extends HttpOperator { - - /** - * Path to use for the "get" request. A trailing "/" is added, if it is missing. - */ - private String pathGet; - - /** - * Maximum number of "get" requests permitted, after the initial request, to retrieve - * the response. - */ - private int maxGets; - - /** - * Time, in seconds, to wait between issuing "get" requests. - */ - private int waitSecGet; - +/** + * SO Operator. + */ +public class SoOperator extends HttpOperator { - public SoOperator(String actorName, String name) { - super(actorName, name); + public SoOperator(String actorName, String name, + @SuppressWarnings("rawtypes") OperationMaker<HttpConfig, HttpOperation> operationMaker) { + super(actorName, name, operationMaker); } @Override - protected void doConfigure(Map<String, Object> parameters) { + protected HttpConfig makeConfiguration(Map<String, Object> parameters) { SoParams params = Util.translate(getFullName(), parameters, SoParams.class); ValidationResult result = params.validate(getFullName()); if (!result.isValid()) { throw new ParameterValidationRuntimeException("invalid parameters", result); } - this.pathGet = params.getPathGet() + (params.getPathGet().endsWith("/") ? "" : "/"); - this.maxGets = params.getMaxGets(); - this.waitSecGet = params.getWaitSecGet(); - - super.doConfigure(params); - } - - /** - * Makes an operator that will construct operations. - * - * @param actorName actor name - * @param operation operation name - * @param operationMaker function to make an operation - * @return a new operator - */ - public static SoOperator makeSoOperator(String actorName, String operation, - BiFunction<ControlLoopOperationParams, SoOperator, SoOperation> operationMaker) { - - return new SoOperator(actorName, operation) { - @Override - public Operation buildOperation(ControlLoopOperationParams params) { - return operationMaker.apply(params, this); - } - }; + return new SoConfig(getBlockingExecutor(), params, getClientFactory()); } } diff --git a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java index f356dcefc..c17d25211 100644 --- a/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java +++ b/models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/VfModuleCreate.java @@ -35,6 +35,7 @@ import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType; import org.onap.policy.controlloop.actor.aai.AaiCustomQueryOperation; import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; +import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig; import org.onap.policy.so.SoCloudConfiguration; import org.onap.policy.so.SoModelInfo; import org.onap.policy.so.SoOperationType; @@ -47,8 +48,8 @@ import org.onap.policy.so.SoRequestParameters; public class VfModuleCreate extends SoOperation { public static final String NAME = "VF Module Create"; - public VfModuleCreate(ControlLoopOperationParams params, SoOperator operator) { - super(params, operator); + public VfModuleCreate(ControlLoopOperationParams params, HttpConfig config) { + super(params, config); } /** @@ -75,13 +76,13 @@ public class VfModuleCreate extends SoOperation { SoRequest request = pair.getRight(); Entity<SoRequest> entity = Entity.entity(request, MediaType.APPLICATION_JSON); - String url = getOperator().getClient().getBaseUrl() + path; + String url = getClient().getBaseUrl() + path; logMessage(EventType.OUT, CommInfrastructure.REST, url, request); // TODO should this use "path" or the full "url"? - return handleResponse(outcome, url, callback -> getOperator().getClient().post(callback, path, entity, null)); + return handleResponse(outcome, url, callback -> getClient().post(callback, path, entity, null)); } /** |