X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-interactions%2Fmodel-actors%2Factor.appclcm%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontrolloop%2Factor%2Fappclcm%2FAppcLcmOperation.java;h=1fd6f2d99ac5aa0fa376064b69cef47777b7adbb;hb=49f07db935d114b72a44e446867b16262dd552aa;hp=7496227149dbb0c71464e077bea0c2f43a63c113;hpb=3f48197acf151c5f2b2b8b4e7bd366c2371619a0;p=policy%2Fmodels.git diff --git a/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java b/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java index 749622714..1fd6f2d99 100644 --- a/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java +++ b/models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.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-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,35 +23,34 @@ package org.onap.policy.controlloop.actor.appclcm; import java.util.List; import java.util.Map; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import org.apache.commons.lang3.StringUtils; import org.onap.policy.appclcm.AppcLcmBody; import org.onap.policy.appclcm.AppcLcmCommonHeader; -import org.onap.policy.appclcm.AppcLcmDmaapWrapper; import org.onap.policy.appclcm.AppcLcmInput; +import org.onap.policy.appclcm.AppcLcmMessageWrapper; import org.onap.policy.appclcm.AppcLcmOutput; import org.onap.policy.appclcm.AppcLcmResponseCode; import org.onap.policy.appclcm.AppcLcmResponseStatus; import org.onap.policy.common.utils.coder.CoderException; -import org.onap.policy.controlloop.VirtualControlLoopEvent; 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.BidirectionalTopicOperation; import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicConfig; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; import org.onap.policy.controlloop.actorserviceprovider.topic.SelectorKey; -import org.onap.policy.controlloop.policy.PolicyResult; -public class AppcLcmOperation extends BidirectionalTopicOperation { +public class AppcLcmOperation extends BidirectionalTopicOperation { private static final String MISSING_STATUS = "APPC-LCM response is missing the response status"; public static final String VNF_ID_KEY = "vnf-id"; + private static final List PROPERTY_NAMES = List.of(OperationProperties.AAI_TARGET_ENTITY); + /** * Keys used to match the response with the request listener. The sub request ID is a * UUID, so it can be used to uniquely identify the response. *

- * Note: if these change, then {@link #getExpectedKeyValues(int, AppcLcmDmaapWrapper)} + * Note: if these change, then {@link #getExpectedKeyValues(int, AppcLcmMessageWrapper)} * must be updated accordingly. */ public static final List SELECTOR_KEYS = @@ -63,48 +63,35 @@ public class AppcLcmOperation extends BidirectionalTopicOperation startPreprocessorAsync() { - return startGuardAsync(); + super(params, config, AppcLcmMessageWrapper.class, PROPERTY_NAMES); } @Override - protected AppcLcmDmaapWrapper makeRequest(int attempt) { - VirtualControlLoopEvent onset = params.getContext().getEvent(); - String subRequestId = UUID.randomUUID().toString(); + protected AppcLcmMessageWrapper makeRequest(int attempt) { + String subRequestId = getSubRequestId(); - AppcLcmCommonHeader header = new AppcLcmCommonHeader(); - header.setOriginatorId(onset.getRequestId().toString()); - header.setRequestId(onset.getRequestId()); + var header = new AppcLcmCommonHeader(); + header.setOriginatorId(params.getRequestId().toString()); + header.setRequestId(params.getRequestId()); header.setSubRequestId(subRequestId); - AppcLcmInput inputRequest = new AppcLcmInput(); + var inputRequest = new AppcLcmInput(); inputRequest.setCommonHeader(header); - AppcLcmRecipeFormatter recipeFormatter = new AppcLcmRecipeFormatter(getName()); + var recipeFormatter = new AppcLcmRecipeFormatter(getName()); inputRequest.setAction(recipeFormatter.getBodyRecipe()); /* * Action Identifiers are required for APPC LCM requests. For R1, the recipes * supported by Policy only require a vnf-id. */ - inputRequest.setActionIdentifiers(Map.of(VNF_ID_KEY, params.getTargetEntity())); + String target = getRequiredProperty(OperationProperties.AAI_TARGET_ENTITY, "target entity"); + inputRequest.setActionIdentifiers(Map.of(VNF_ID_KEY, target)); /* * For R1, the payloads will not be required for the Restart, Rebuild, or Migrate * recipes. APPC will populate the payload based on A&AI look up of the vnd-id - * provided in the action identifiers. The payload is set when converPayload() is + * provided in the action identifiers. The payload is set when convertPayload() is * called. */ if (operationSupportsPayload()) { @@ -113,19 +100,19 @@ public class AppcLcmOperation extends BidirectionalTopicOperation source, AppcLcmInput request) { try { - String encodedPayloadString = makeCoder().encode(source); + var encodedPayloadString = getCoder().encode(source); request.setPayload(encodedPayloadString); } catch (CoderException e) { throw new IllegalArgumentException("Cannot convert payload", e); @@ -148,12 +135,12 @@ public class AppcLcmOperation extends BidirectionalTopicOperation getExpectedKeyValues(int attempt, AppcLcmDmaapWrapper request) { - return List.of(request.getBody().getInput().getCommonHeader().getSubRequestId()); + protected List getExpectedKeyValues(int attempt, AppcLcmMessageWrapper request) { + return List.of(getSubRequestId()); } @Override - protected Status detmStatus(String rawResponse, AppcLcmDmaapWrapper response) { + protected Status detmStatus(String rawResponse, AppcLcmMessageWrapper response) { AppcLcmResponseStatus status = getStatus(response); if (status == null) { throw new IllegalArgumentException(MISSING_STATUS); @@ -164,25 +151,23 @@ public class AppcLcmOperation extends BidirectionalTopicOperation Status.SUCCESS; + case AppcLcmResponseCode.FAILURE -> Status.FAILURE; + case AppcLcmResponseCode.ERROR, AppcLcmResponseCode.REJECT -> throw new IllegalArgumentException("APPC-LCM request was not accepted, code=" + code); - case AppcLcmResponseCode.ACCEPTED: - default: - return Status.STILL_WAITING; - } + default -> Status.STILL_WAITING; + }; } /** * Sets the message to the status description, if available. */ @Override - public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, AppcLcmDmaapWrapper response) { + public OperationOutcome setOutcome(OperationOutcome outcome, OperationResult result, + AppcLcmMessageWrapper response) { + outcome.setResponse(response); + AppcLcmResponseStatus status = getStatus(response); if (status == null) { return setOutcome(outcome, result); @@ -204,7 +189,7 @@ public class AppcLcmOperation extends BidirectionalTopicOperation