X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-interactions%2Fmodel-actors%2Factor.sdnr%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontrolloop%2Factor%2Fsdnr%2FSdnrActor.java;h=de7691e0e64fe7beb0957a049a1d971345865be9;hb=c88676ec64c4c870252502bc1cfaa8990c8fd964;hp=b9f477d300974ba5e57f46c1ad9e253f25b45c24;hpb=e4e7d15db6d2f79658e3a5f9e8326ea092afcfab;p=policy%2Fmodels.git diff --git a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java index b9f477d30..de7691e0e 100644 --- a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java +++ b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java @@ -21,28 +21,10 @@ package org.onap.policy.controlloop.actor.sdnr; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import java.util.Collections; -import java.util.List; -import org.apache.commons.lang3.tuple.Pair; -import org.onap.policy.controlloop.ControlLoopOperation; -import org.onap.policy.controlloop.ControlLoopResponse; -import org.onap.policy.controlloop.VirtualControlLoopEvent; import org.onap.policy.controlloop.actorserviceprovider.Operator; import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicActor; import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicOperator; import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicActorParams; -import org.onap.policy.controlloop.policy.Policy; -import org.onap.policy.controlloop.policy.PolicyResult; -import org.onap.policy.sdnr.PciCommonHeader; -import org.onap.policy.sdnr.PciRequest; -import org.onap.policy.sdnr.PciRequestWrapper; -import org.onap.policy.sdnr.PciResponse; -import org.onap.policy.sdnr.PciResponseCode; -import org.onap.policy.sdnr.PciResponseWrapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * SDNR is an unusual actor in that it uses a single, generic operator to initiate all @@ -52,28 +34,6 @@ public class SdnrActor extends BidirectionalTopicActor recipes = ImmutableList.of(RECIPE_MODIFY); - private static final ImmutableMap> targets = new ImmutableMap.Builder>() - .put(RECIPE_MODIFY, ImmutableList.of(TARGET_VNF)).build(); - private static final ImmutableMap> payloads = new ImmutableMap.Builder>() - .put(RECIPE_MODIFY, ImmutableList.of(SDNR_REQUEST_PARAMS, SDNR_CONFIG_PARAMS)).build(); - - // **HERE** - /** * Constructor. */ @@ -91,214 +51,4 @@ public class SdnrActor extends BidirectionalTopicActor recipes() { - return ImmutableList.copyOf(recipes); - } - - @Override - public List recipeTargets(String recipe) { - return ImmutableList.copyOf(targets.getOrDefault(recipe, Collections.emptyList())); - } - - @Override - public List recipePayloads(String recipe) { - return ImmutableList.copyOf(payloads.getOrDefault(recipe, Collections.emptyList())); - } - - /** - * Constructs an SDNR request conforming to the pci API. The actual request is - * constructed and then placed in a wrapper object used to send through DMAAP. - * - * @param onset - * the event that is reporting the alert for policy to perform an - * action - * @param operation - * the control loop operation specifying the actor, operation, - * target, etc. - * @param policy - * the policy the was specified from the yaml generated by CLAMP or - * through the Policy GUI/API - * @return an SDNR request conforming to the pci API using the DMAAP wrapper - */ - - public static PciRequestWrapper constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, - Policy policy) { - - /* Construct an SDNR request using pci Model */ - - /* - * The actual pci request is placed in a wrapper used to send through dmaap. The - * current version is 2.0 as of R1. - */ - PciRequestWrapper dmaapRequest = new PciRequestWrapper(); - dmaapRequest.setVersion("1.0"); - dmaapRequest.setCorrelationId(onset.getRequestId() + "-" + operation.getSubRequestId()); - dmaapRequest.setRpcName(policy.getRecipe().toLowerCase()); - dmaapRequest.setType("request"); - - /* This is the actual request that is placed in the dmaap wrapper. */ - final PciRequest sdnrRequest = new PciRequest(); - - /* The common header is a required field for all SDNR requests. */ - PciCommonHeader requestCommonHeader = new PciCommonHeader(); - requestCommonHeader.setRequestId(onset.getRequestId()); - requestCommonHeader.setSubRequestId(operation.getSubRequestId()); - - sdnrRequest.setCommonHeader(requestCommonHeader); - sdnrRequest.setPayload(onset.getPayload()); - - /* - * An action is required for all SDNR requests, this will be the recipe - * specified in the policy. - */ - sdnrRequest.setAction(policy.getRecipe()); - - /* - * Once the pci request is constructed, add it into the body of the dmaap - * wrapper. - */ - dmaapRequest.setBody(sdnrRequest); - logger.info("SDNR Request to be sent is {}", dmaapRequest); - - /* Return the request to be sent through dmaap. */ - return dmaapRequest; - } - - /** - * Parses the operation attempt using the subRequestId of SDNR response. - * - * @param subRequestId - * the sub id used to send to SDNR, Policy sets this using the - * operation attempt - * - * @return the current operation attempt - */ - public static Integer parseOperationAttempt(String subRequestId) { - Integer operationAttempt; - try { - operationAttempt = Integer.parseInt(subRequestId); - } catch (NumberFormatException e) { - logger.debug("A NumberFormatException was thrown in parsing the operation attempt {}", subRequestId); - return null; - } - return operationAttempt; - } - - /** - * Processes the SDNR pci response sent from SDNR. Determines if the SDNR - * operation was successful/unsuccessful and maps this to the corresponding - * Policy result. - * - * @param dmaapResponse - * the dmaap wrapper message that contains the actual SDNR reponse - * inside the body field - * - * @return an key-value pair that contains the Policy result and SDNR response - * message - */ - public static Pair processResponse( - PciResponseWrapper dmaapResponse) { - - logger.info("SDNR processResponse called : {}", dmaapResponse); - - /* The actual SDNR response is inside the wrapper's body field. */ - PciResponse sdnrResponse = dmaapResponse.getBody(); - - /* The message returned in the SDNR response. */ - String message; - - /* The Policy result determined from the SDNR Response. */ - PolicyResult result; - - /* - * If there is no status, Policy cannot determine if the request was successful. - */ - if (sdnrResponse.getStatus() == null) { - message = "Policy was unable to parse SDN-R response status field (it was null)."; - return Pair.of(PolicyResult.FAILURE_EXCEPTION, message); - } - - /* - * If there is no code, Policy cannot determine if the request was successful. - */ - String responseValue = PciResponseCode.toResponseValue(sdnrResponse.getStatus().getCode()); - if (responseValue == null) { - message = "Policy was unable to parse SDN-R response status code field."; - return Pair.of(PolicyResult.FAILURE_EXCEPTION, message); - } - logger.info("SDNR Response Code is {}", responseValue); - - /* Save the SDNR response's message for Policy notification message. */ - message = sdnrResponse.getStatus().getValue(); - logger.info("SDNR Response Message is {}", message); - - /* - * Response and Payload are just printed and no further action needed in - * casablanca release - */ - String rspPayload = sdnrResponse.getPayload(); - logger.info("SDNR Response Payload is {}", rspPayload); - - /* Maps the SDNR response result to a Policy result. */ - switch (responseValue) { - case PciResponseCode.ACCEPTED: - /* Nothing to do if code is accept, continue processing */ - result = null; - break; - case PciResponseCode.SUCCESS: - result = PolicyResult.SUCCESS; - break; - case PciResponseCode.FAILURE: - result = PolicyResult.FAILURE; - break; - case PciResponseCode.REJECT: - case PciResponseCode.ERROR: - default: - result = PolicyResult.FAILURE_EXCEPTION; - } - return Pair.of(result, message); - } - - /** - * Converts the SDNR response to ControlLoopResponse object. - * - * @param dmaapResponse - * the dmaap wrapper message that contains the actual SDNR reponse - * inside the body field - * - * @return a ControlLoopResponse object to send to DCAE_CL_RSP topic - */ - public static ControlLoopResponse getControlLoopResponse(PciResponseWrapper dmaapResponse, - VirtualControlLoopEvent event) { - - logger.info("SDNR getClosedLoopResponse called : {} {}", dmaapResponse, event); - - /* The actual SDNR response is inside the wrapper's body field. */ - PciResponse sdnrResponse = dmaapResponse.getBody(); - - /* The ControlLoop response determined from the SDNR Response and input event. */ - ControlLoopResponse clRsp = new ControlLoopResponse(); - clRsp.setPayload(sdnrResponse.getPayload()); - clRsp.setFrom(NAME); - clRsp.setTarget("DCAE"); - clRsp.setClosedLoopControlName(event.getClosedLoopControlName()); - clRsp.setPolicyName(event.getPolicyName()); - clRsp.setPolicyVersion(event.getPolicyVersion()); - clRsp.setRequestId(event.getRequestId()); - clRsp.setVersion(event.getVersion()); - logger.info("SDNR getClosedLoopResponse clRsp : {}", clRsp); - - return clRsp; - } - - // **HERE** }