From 3052f10337897ea25983f35f4158c5626febbe7d Mon Sep 17 00:00:00 2001 From: Jim Hahn <jrh3@att.com> Date: Wed, 26 Aug 2020 16:57:52 -0400 Subject: Use ToscaPolicy instead of legacy Policy Removed usage of policy-yaml and old targetType definition. Switched to using TOSCA operational policy classes and new definitions for Target type enum. Issue-ID: POLICY-2428 Change-Id: I25d1c5219764df27bdae7f2cbeb7ada7bcef4e1e Signed-off-by: Jim Hahn <jrh3@att.com> Signed-off-by: Pamela Dragosh <pdragosh@research.att.com> --- .../usecases/GetTargetEntityOperation2.java | 16 +++----- .../controller/usecases/UsecasesEventManager.java | 46 ++++++++++++++-------- .../apps/controller/usecases/step/Step2.java | 24 ++++++----- 3 files changed, 50 insertions(+), 36 deletions(-) (limited to 'controlloop/common/controller-usecases/src/main') diff --git a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/GetTargetEntityOperation2.java b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/GetTargetEntityOperation2.java index e1259e48d..f9d90af4d 100644 --- a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/GetTargetEntityOperation2.java +++ b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/GetTargetEntityOperation2.java @@ -33,10 +33,10 @@ import org.onap.aai.domain.yang.GenericVnf; 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.TargetType; import org.onap.policy.controlloop.actorserviceprovider.impl.OperationPartial; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; import org.onap.policy.controlloop.eventmanager.StepContext; -import org.onap.policy.controlloop.policy.Target; /** * An operation to get the target entity. This is a "pseudo" operation; it is not found @@ -65,7 +65,7 @@ public class GetTargetEntityOperation2 extends OperationPartial { @Override public List<String> getPropertyNames() { - String propName = detmTarget(params.getTarget()); + String propName = detmTarget(params.getTargetType()); return (propName == null ? Collections.emptyList() : List.of(propName)); } @@ -77,26 +77,22 @@ public class GetTargetEntityOperation2 extends OperationPartial { /** * Determines the target entity. * - * @param target policy target + * @param targetType policy target type * * @return the property containing the target entity, or {@code null} if the target * entity is already known */ - private String detmTarget(Target target) { + private String detmTarget(TargetType targetType) { if (stepContext.contains(OperationProperties.AAI_TARGET_ENTITY)) { // the target entity has already been determined return null; } - if (target == null) { - throw new IllegalArgumentException("The target is null"); - } - - if (target.getType() == null) { + if (targetType == null) { throw new IllegalArgumentException("The target type is null"); } - switch (target.getType()) { + switch (targetType) { case PNF: return detmPnfTarget(); case VM: diff --git a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java index cf8cc8ee3..d92fbcfad 100644 --- a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java +++ b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java @@ -58,16 +58,16 @@ import org.onap.policy.controlloop.ControlLoopOperation; import org.onap.policy.controlloop.ControlLoopResponse; import org.onap.policy.controlloop.VirtualControlLoopEvent; import org.onap.policy.controlloop.VirtualControlLoopNotification; +import org.onap.policy.controlloop.actorserviceprovider.OperationFinalResult; 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.TargetType; import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; import org.onap.policy.controlloop.drl.legacy.ControlLoopParams; import org.onap.policy.controlloop.eventmanager.ActorConstants; import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager; import org.onap.policy.controlloop.eventmanager.StepContext; -import org.onap.policy.controlloop.policy.FinalResult; -import org.onap.policy.controlloop.policy.Policy; -import org.onap.policy.controlloop.policy.PolicyResult; import org.onap.policy.drools.apps.controller.usecases.step.AaiCqStep2; import org.onap.policy.drools.apps.controller.usecases.step.AaiGetPnfStep2; import org.onap.policy.drools.apps.controller.usecases.step.AaiGetTenantStep2; @@ -75,6 +75,9 @@ import org.onap.policy.drools.apps.controller.usecases.step.GetTargetEntityStep2 import org.onap.policy.drools.apps.controller.usecases.step.GuardStep2; import org.onap.policy.drools.apps.controller.usecases.step.LockStep2; import org.onap.policy.drools.apps.controller.usecases.step.Step2; +import org.onap.policy.drools.domain.models.operational.ActorOperation; +import org.onap.policy.drools.domain.models.operational.Operation; +import org.onap.policy.drools.domain.models.operational.OperationalTarget; import org.onap.policy.drools.system.PolicyEngine; import org.onap.policy.drools.system.PolicyEngineConstants; import org.onap.policy.sdnr.PciMessage; @@ -172,7 +175,7 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste /** * Policy currently being processed. */ - private Policy policy; + private Operation policy; /** * Result of the last policy operation. This is just a place where the rules can store @@ -180,7 +183,7 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste */ @Getter @Setter - private PolicyResult result = PolicyResult.SUCCESS; + private OperationResult result = OperationResult.SUCCESS; @ToString.Include private int numOnsets = 1; @@ -205,7 +208,7 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste private final transient Deque<OperationOutcome2> partialHistory = new LinkedList<>(); @Getter - private FinalResult finalResult = null; + private OperationFinalResult finalResult = null; /** * Message to be placed into the final notification. Typically used when something @@ -284,7 +287,7 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste * @param finalResult final result * @param finalMessage final message */ - public void abort(@NonNull State finalState, FinalResult finalResult, String finalMessage) { + public void abort(@NonNull State finalState, OperationFinalResult finalResult, String finalMessage) { this.state = finalState; this.finalResult = finalResult; this.finalMessage = finalMessage; @@ -297,7 +300,7 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste * * @throws ControlLoopException if the processor cannot get a policy */ - public void loadNextPolicy(@NonNull PolicyResult lastResult) throws ControlLoopException { + public void loadNextPolicy(@NonNull OperationResult lastResult) throws ControlLoopException { getProcessor().nextPolicyForResult(lastResult); loadPolicy(); } @@ -317,23 +320,30 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste policy = getProcessor().getCurrentPolicy(); + ActorOperation actor = policy.getActorOperation(); + + OperationalTarget target = actor.getTarget(); + String targetType = (target != null ? target.getTargetType() : null); + Map<String, String> entityIds = (target != null ? target.getEntityIds() : null); + // convert policy payload from Map<String,String> to Map<String,Object> Map<String, Object> payload = new LinkedHashMap<>(); - if (policy.getPayload() != null) { - payload.putAll(policy.getPayload()); + if (actor.getPayload() != null) { + payload.putAll(actor.getPayload()); } // @formatter:off ControlLoopOperationParams params = ControlLoopOperationParams.builder() .actorService(getActorService()) - .actor(policy.getActor()) - .operation(policy.getRecipe()) + .actor(actor.getActor()) + .operation(actor.getOperation()) .requestId(event.getRequestId()) .preprocessed(true) .executor(getExecutor()) - .target(policy.getTarget()) - .retry(policy.getRetry()) + .retry(policy.getRetries()) .timeoutSec(policy.getTimeout()) + .targetType(TargetType.toTargetType(targetType)) + .targetEntityIds(entityIds) .payload(payload) .startCallback(this::onStart) .completeCallback(this::onComplete) @@ -450,7 +460,7 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste * @return {@code true} if the TOSCA should be aborted, {@code false} otherwise */ public boolean isAbort(OperationOutcome outcome) { - return (outcome.getResult() != PolicyResult.SUCCESS && ABORT_ACTORS.contains(outcome.getActor())); + return (outcome.getResult() != OperationResult.SUCCESS && ABORT_ACTORS.contains(outcome.getActor())); } /** @@ -741,7 +751,11 @@ public class UsecasesEventManager extends ControlLoopEventManager implements Ste this.attempt = attempts; clOperation = outcome.toControlLoopOperation(); - clOperation.setTarget(policy.getTarget().toString()); + + // TODO encode()? + OperationalTarget target = policy.getActorOperation().getTarget(); + String targetStr = (target != null ? target.toString() : null); + clOperation.setTarget(targetStr); if (outcome.getEnd() == null) { clOperation.setOutcome("Started"); diff --git a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/step/Step2.java b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/step/Step2.java index 9275f791d..5d80ea5f4 100644 --- a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/step/Step2.java +++ b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/step/Step2.java @@ -59,7 +59,11 @@ import org.onap.policy.drools.apps.controller.usecases.UsecasesConstants; * steps. */ public class Step2 extends Step { - public static final String TARGET_INFO_MSG = "Target information"; + public static final String TARGET_MODEL_VERSION_ID = "modelVersionId"; + public static final String TARGET_MODEL_CUSTOMIZATION_ID = "modelCustomizationId"; + public static final String TARGET_MODEL_INVARIANT_ID = "modelInvariantId"; + public static final String TARGET_RESOURCE_ID = "resourceID"; + public static final String TARGET_INFO_MSG = "Target Entity IDs"; public static final String ENRICHMENT_PREFIX = "enrichment/"; public static final String VSERVER_VSERVER_NAME = "vserver.vserver-name"; public static final String RESOURCE_LINK = "resource-link"; @@ -293,9 +297,9 @@ public class Step2 extends Step { } protected GenericVnf getResourceVnf() { - verifyNotNull(TARGET_INFO_MSG, params.getTarget()); + verifyNotNull(TARGET_INFO_MSG, params.getTargetEntityIds()); - String resourceId = params.getTarget().getResourceID(); + String resourceId = params.getTargetEntityIds().get(TARGET_RESOURCE_ID); verifyNotNull("Target resource ID", resourceId); @@ -323,11 +327,11 @@ public class Step2 extends Step { } protected GenericVnf getVnf() { - verifyNotNull(TARGET_INFO_MSG, params.getTarget()); + verifyNotNull(TARGET_INFO_MSG, params.getTargetEntityIds()); - String modelInvariantId = params.getTarget().getModelInvariantId(); + String modelInvariantId = params.getTargetEntityIds().get(TARGET_MODEL_INVARIANT_ID); - verifyNotNull("modelInvariantId", modelInvariantId); + verifyNotNull(TARGET_MODEL_INVARIANT_ID, modelInvariantId); AaiCqResponse aaicq = getCustomQueryData(); return aaicq.getGenericVnfByVfModuleModelInvariantId(modelInvariantId); @@ -359,11 +363,11 @@ public class Step2 extends Step { return stepContext.getProperty(OperationProperties.DATA_VF_COUNT); } - verifyNotNull(TARGET_INFO_MSG, params.getTarget()); + verifyNotNull(TARGET_INFO_MSG, params.getTargetEntityIds()); - String modelCustomizationId = params.getTarget().getModelCustomizationId(); - String modelInvariantId = params.getTarget().getModelInvariantId(); - String modelVersionId = params.getTarget().getModelVersionId(); + String modelCustomizationId = params.getTargetEntityIds().get(TARGET_MODEL_CUSTOMIZATION_ID); + String modelInvariantId = params.getTargetEntityIds().get(TARGET_MODEL_INVARIANT_ID); + String modelVersionId = params.getTargetEntityIds().get(TARGET_MODEL_VERSION_ID); verifyNotNull("target modelCustomizationId", modelCustomizationId); verifyNotNull("target modelInvariantId", modelInvariantId); -- cgit 1.2.3-korg