Use ToscaPolicy instead of legacy Policy 74/111774/3
authorJim Hahn <jrh3@att.com>
Wed, 26 Aug 2020 20:57:52 +0000 (16:57 -0400)
committerPamela Dragosh <pdragosh@research.att.com>
Thu, 27 Aug 2020 18:29:28 +0000 (14:29 -0400)
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>
29 files changed:
controlloop/common/controller-frankfurt/pom.xml
controlloop/common/controller-frankfurt/src/main/resources/frankfurt.drl
controlloop/common/controller-usecases/pom.xml
controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/GetTargetEntityOperation2.java
controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java
controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/step/Step2.java
controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/GetTargetEntityOperation2Test.java
controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/LockOperation2Test.java
controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManagerTest.java
controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/step/Step2Test.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager2.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/LockData.java
controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/SupportUtil.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager2Test.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2Test.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/EventManagerServicesTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/LockDataTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/StepTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/processor/ControlLoopProcessorTest.java
controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/utils/ControlLoopUtilsTest.java
controlloop/common/eventmanager/src/test/resources/badtriggerpolicy.yaml
controlloop/common/eventmanager/src/test/resources/nopolicy.yaml
controlloop/common/eventmanager/src/test/resources/test.yaml
controlloop/common/feature-controlloop-management/pom.xml
controlloop/common/rules-test/src/test/resources/rulesTest.drl

index 998c477..809d9d4 100644 (file)
             <version>${policy.models.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.onap.policy.models.policy-models-interactions</groupId>
-            <artifactId>model-yaml</artifactId>
-            <version>${policy.models.version}</version>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.onap.policy.drools-pdp</groupId>
             <artifactId>policy-management</artifactId>
index c421313..9723cec 100644 (file)
@@ -25,7 +25,6 @@ import org.onap.policy.controlloop.CanonicalOnset;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2;
 import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2.NewEventStatus;
 import org.onap.policy.controlloop.eventmanager.ControlLoopOperationManager2;
index e99077a..fe1218e 100644 (file)
             <version>${policy.models.version}</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.onap.policy.models.policy-models-interactions</groupId>
-            <artifactId>model-yaml</artifactId>
-            <version>${policy.models.version}</version>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.onap.policy.drools-pdp</groupId>
             <artifactId>policy-management</artifactId>
index e1259e4..f9d90af 100644 (file)
@@ -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:
index cf8cc8e..d92fbcf 100644 (file)
@@ -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");
index 9275f79..5d80ea5 100644 (file)
@@ -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);
index 238ac3d..efa27a6 100644 (file)
@@ -39,10 +39,9 @@ import org.mockito.MockitoAnnotations;
 import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.actorserviceprovider.OperationProperties;
+import org.onap.policy.controlloop.actorserviceprovider.TargetType;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.eventmanager.StepContext;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
 
 public class GetTargetEntityOperation2Test {
     private static final String GENERIC_VNF_ID = "generic-vnf.vnf-id";
@@ -59,7 +58,6 @@ public class GetTargetEntityOperation2Test {
     private ControlLoopOperationParams params;
 
     private VirtualControlLoopEvent event;
-    private Target target;
     private GenericVnf vnf;
     private GetTargetEntityOperation2 oper;
 
@@ -74,13 +72,10 @@ public class GetTargetEntityOperation2Test {
         event.setTarget("pnf.pnf-name");
         event.setAai(Map.of("pnf.pnf-name", MY_PNF));
 
-        target = new Target();
-        target.setType(TargetType.PNF);
-
         vnf = new GenericVnf();
         vnf.setVnfId(MY_VNF);
 
-        when(params.getTarget()).thenReturn(target);
+        when(params.getTargetType()).thenReturn(TargetType.PNF);
         when(params.getActor()).thenReturn(MY_ACTOR);
         when(params.getOperation()).thenReturn(MY_OPERATION);
 
@@ -123,25 +118,13 @@ public class GetTargetEntityOperation2Test {
         assertThat(oper.getPropertyNames()).isEmpty();
     }
 
-    /**
-     * Tests detmTarget() when the target is {@code null}.
-     */
-    @Test
-    public void testDetmTargetNull() {
-        remakeWithoutData();
-        when(params.getTarget()).thenReturn(null);
-
-        assertThatIllegalArgumentException().isThrownBy(() -> oper.getPropertyNames())
-                        .withMessage("The target is null");
-    }
-
     /**
      * Tests detmTarget() when the target type is {@code null}.
      */
     @Test
     public void testDetmTargetNullType() {
         remakeWithoutData();
-        target.setType(null);
+        when(params.getTargetType()).thenReturn(null);
 
         assertThatIllegalArgumentException().isThrownBy(() -> oper.getPropertyNames())
                         .withMessage("The target type is null");
@@ -152,7 +135,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmTargetVm() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         enrichTarget(VSERVER_NAME);
         assertThat(oper.getPropertyNames()).isEmpty();
         verifyTarget(MY_VNF);
@@ -163,7 +146,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmTargetVnf() {
-        target.setType(TargetType.VNF);
+        when(params.getTargetType()).thenReturn(TargetType.VNF);
         enrichTarget(VSERVER_NAME);
         assertThat(oper.getPropertyNames()).isEmpty();
         verifyTarget(MY_VNF);
@@ -175,7 +158,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmTargetVfModule() {
-        target.setType(TargetType.VFMODULE);
+        when(params.getTargetType()).thenReturn(TargetType.VFMODULE);
         enrichTarget(VSERVER_NAME);
         assertThat(oper.getPropertyNames()).isEmpty();
         verifyTarget(MY_VNF);
@@ -186,7 +169,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmTargetUnknownType() {
-        target.setType(TargetType.VFC);
+        when(params.getTargetType()).thenReturn(TargetType.VFC);
         enrichTarget(VSERVER_NAME);
         assertThatIllegalArgumentException().isThrownBy(() -> oper.getPropertyNames())
                         .withMessage("The target type is not supported");
@@ -223,7 +206,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVfModuleTargetNullTarget() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         event.setTarget(null);
         assertThatIllegalArgumentException().isThrownBy(() -> oper.getPropertyNames()).withMessage("Target is null");
     }
@@ -233,7 +216,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVfModuleTargetVserverName() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         enrichTarget(VSERVER_NAME);
         assertThat(oper.getPropertyNames()).isEmpty();
         verifyTarget(MY_VNF);
@@ -244,7 +227,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVfModuleTargetVnfId() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         enrichTarget(GENERIC_VNF_ID);
         assertThat(oper.getPropertyNames()).isEmpty();
         verifyTarget(MY_VNF);
@@ -256,7 +239,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVfModuleTargetVnfName() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         enrichTarget(GENERIC_VNF_ID);
 
         // set this AFTER setting enrichment data
@@ -271,7 +254,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVfModuleTargetUnknown() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         enrichTarget(VSERVER_NAME);
         event.setTarget("unknown-vnf");
         assertThatIllegalArgumentException().isThrownBy(() -> oper.getPropertyNames())
@@ -283,7 +266,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVfModuleTargetMissingEnrichment() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         event.setTarget(VSERVER_NAME);
         assertThatIllegalArgumentException().isThrownBy(() -> oper.getPropertyNames())
                         .withMessage("Enrichment data is missing " + VSERVER_NAME);
@@ -294,7 +277,7 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVnfNameHaveData() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         event.setTarget(GENERIC_VNF_NAME);
         event.setAai(Map.of(GENERIC_VNF_ID, MY_VNF));
         assertThat(oper.getPropertyNames()).isEmpty();
@@ -306,14 +289,14 @@ public class GetTargetEntityOperation2Test {
      */
     @Test
     public void testDetmVnfNameNoData() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         event.setTarget(GENERIC_VNF_NAME);
         assertThat(oper.getPropertyNames()).isEqualTo(List.of(UsecasesConstants.AAI_DEFAULT_GENERIC_VNF));
     }
 
     @Test
     public void testSetProperty() {
-        target.setType(TargetType.VM);
+        when(params.getTargetType()).thenReturn(TargetType.VM);
         event.setTarget(GENERIC_VNF_NAME);
 
         // not a property of interest - should be ignored
@@ -336,7 +319,7 @@ public class GetTargetEntityOperation2Test {
     }
 
     private void remakeWithoutData() {
-        target.setType(TargetType.VNF);
+        when(params.getTargetType()).thenReturn(TargetType.VNF);
         event.setTarget(GENERIC_VNF_NAME);
         oper = new GetTargetEntityOperation2(stepContext, event, params);
     }
index dfbedc2..42fd9e4 100644 (file)
@@ -39,10 +39,9 @@ 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.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.eventmanager.StepContext;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
 
 public class LockOperation2Test {
     private static final String MY_PNF = "my-pnf";
@@ -56,7 +55,6 @@ public class LockOperation2Test {
     private ControlLoopOperationParams params;
 
     private VirtualControlLoopEvent event;
-    private Target target;
     private CompletableFuture<OperationOutcome> future;
     private GenericVnf vnf;
     private LockOperation2 oper;
@@ -72,9 +70,6 @@ public class LockOperation2Test {
         event.setTarget("pnf.pnf-name");
         event.setAai(Map.of("pnf.pnf-name", MY_PNF));
 
-        target = new Target();
-        target.setType(TargetType.PNF);
-
         future = new CompletableFuture<>();
 
         vnf = new GenericVnf();
@@ -82,7 +77,7 @@ public class LockOperation2Test {
 
         when(stepContext.requestLock(anyString())).thenReturn(future);
 
-        when(params.getTarget()).thenReturn(target);
+        when(params.getTargetType()).thenReturn(TargetType.PNF);
         when(params.getActor()).thenReturn(MY_ACTOR);
         when(params.getOperation()).thenReturn(MY_OPERATION);
 
index 05bc03a..6681c3e 100644 (file)
@@ -66,19 +66,18 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
 import org.onap.policy.controlloop.actorserviceprovider.Operation;
+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.Operator;
+import org.onap.policy.controlloop.actorserviceprovider.TargetType;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
 import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
 import org.onap.policy.controlloop.eventmanager.ActorConstants;
 import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2;
 import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
-import org.onap.policy.controlloop.policy.FinalResult;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager.NewEventStatus;
 import org.onap.policy.drools.apps.controller.usecases.step.AaiCqStep2;
 import org.onap.policy.drools.apps.controller.usecases.step.AaiGetPnfStep2;
@@ -137,7 +136,6 @@ public class UsecasesEventManagerTest {
     private Step2 stepb;
 
     private List<LockImpl> locks;
-    private Target target;
     private ToscaPolicy tosca;
     private ControlLoopParams params;
     private VirtualControlLoopEvent event;
@@ -163,10 +161,7 @@ public class UsecasesEventManagerTest {
         event.setAai(new TreeMap<>(Map.of(UsecasesConstants.VSERVER_VSERVER_NAME, MY_TARGET)));
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setClosedLoopControlName(CL_NAME);
-        event.setTargetType(TargetType.VNF.toString());
-
-        target = new Target();
-        target.setType(TargetType.VNF);
+        event.setTargetType(ControlLoopTargetType.VNF);
 
         params = new ControlLoopParams();
         params.setClosedLoopControlName(CL_NAME);
@@ -299,14 +294,14 @@ public class UsecasesEventManagerTest {
 
     @Test
     public void testAbort() {
-        mgr.abort(UsecasesEventManager.State.DONE, FinalResult.FINAL_FAILURE_GUARD, "some message");
+        mgr.abort(UsecasesEventManager.State.DONE, OperationFinalResult.FINAL_FAILURE_GUARD, "some message");
 
         assertEquals(UsecasesEventManager.State.DONE, mgr.getState());
-        assertEquals(FinalResult.FINAL_FAILURE_GUARD, mgr.getFinalResult());
+        assertEquals(OperationFinalResult.FINAL_FAILURE_GUARD, mgr.getFinalResult());
         assertEquals("some message", mgr.getFinalMessage());
 
         // try null state
-        assertThatThrownBy(() -> mgr.abort(null, FinalResult.FINAL_FAILURE_GUARD, ""))
+        assertThatThrownBy(() -> mgr.abort(null, OperationFinalResult.FINAL_FAILURE_GUARD, ""))
                         .isInstanceOf(NullPointerException.class).hasMessageContaining("finalState");
     }
 
@@ -325,7 +320,7 @@ public class UsecasesEventManagerTest {
         mgr.addToHistory(outcome);
 
         // indicate success and load next policy
-        mgr.loadNextPolicy(PolicyResult.SUCCESS);
+        mgr.loadNextPolicy(OperationResult.SUCCESS);
         assertEquals("OperationB", mgr.getSteps().poll().getOperationName());
         assertNull(mgr.getFinalResult());
 
@@ -334,8 +329,8 @@ public class UsecasesEventManagerTest {
         assertThat(mgr.getFullHistory()).hasSize(1);
 
         // indicate failure - should go to final failure
-        mgr.loadNextPolicy(PolicyResult.FAILURE);
-        assertEquals(FinalResult.FINAL_FAILURE, mgr.getFinalResult());
+        mgr.loadNextPolicy(OperationResult.FAILURE);
+        assertEquals(OperationFinalResult.FINAL_FAILURE, mgr.getFinalResult());
     }
 
     @Test
@@ -354,7 +349,8 @@ public class UsecasesEventManagerTest {
         assertSame(actors, params2.getActorService());
         assertSame(REQ_ID, params2.getRequestId());
         assertSame(ForkJoinPool.commonPool(), params2.getExecutor());
-        assertNotNull(params2.getTarget());
+        assertNotNull(params2.getTargetType());
+        assertNotNull(params2.getTargetEntityIds());
         assertEquals(Integer.valueOf(300), params2.getTimeoutSec());
         assertEquals(Integer.valueOf(0), params2.getRetry());
         assertThat(params2.getPayload()).isEmpty();
@@ -508,7 +504,10 @@ public class UsecasesEventManagerTest {
      */
     @Test
     public void testLoadPreprocessorStepsNeedTargetEntity() {
-        stepa = new Step2(mgr, ControlLoopOperationParams.builder().target(target).build(), event) {
+        stepa = new Step2(mgr,
+                ControlLoopOperationParams.builder()
+                        .targetType(TargetType.toTargetType(event.getTargetType()))
+                        .targetEntityIds(Map.of()).build(), event) {
             @Override
             public List<String> getPropertyNames() {
                 return List.of(OperationProperties.AAI_TARGET_ENTITY);
@@ -586,7 +585,7 @@ public class UsecasesEventManagerTest {
     @Test
     public void testIsAbort() {
         OperationOutcome outcome = makeCompletedOutcome();
-        outcome.setResult(PolicyResult.FAILURE);
+        outcome.setResult(OperationResult.FAILURE);
 
         // closed loop timeout
         outcome.setActor(ActorConstants.CL_TIMEOUT_ACTOR);
@@ -597,7 +596,7 @@ public class UsecasesEventManagerTest {
         assertTrue(mgr.isAbort(outcome));
 
         // no effect for success
-        outcome.setResult(PolicyResult.SUCCESS);
+        outcome.setResult(OperationResult.SUCCESS);
         assertFalse(mgr.isAbort(outcome));
     }
 
@@ -673,7 +672,7 @@ public class UsecasesEventManagerTest {
         assertThat(notif.getHistory()).hasSize(3);
 
         // indicate success and load the next policy - should clear the partial history
-        mgr.loadNextPolicy(PolicyResult.SUCCESS);
+        mgr.loadNextPolicy(OperationResult.SUCCESS);
 
         // check notification
         notif = mgr.makeNotification();
@@ -691,7 +690,7 @@ public class UsecasesEventManagerTest {
         assertThat(notif.getHistory()).hasSize(2);
 
         // indicate failure - should go to final state
-        mgr.loadNextPolicy(PolicyResult.FAILURE);
+        mgr.loadNextPolicy(OperationResult.FAILURE);
 
         // check notification
         notif = mgr.makeNotification();
@@ -1016,7 +1015,7 @@ public class UsecasesEventManagerTest {
         outcome.setActor(SIMPLE_ACTOR);
         outcome.setOperation(SIMPLE_OPERATION);
         outcome.setMessage(OUTCOME_MSG);
-        outcome.setResult(PolicyResult.SUCCESS);
+        outcome.setResult(OperationResult.SUCCESS);
         outcome.setStart(Instant.now());
         outcome.setTarget(MY_TARGET);
 
index 75fe486..d01e2b5 100644 (file)
@@ -35,6 +35,7 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
@@ -62,26 +63,21 @@ import org.onap.policy.controlloop.actorserviceprovider.Operation;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
 import org.onap.policy.controlloop.actorserviceprovider.OperationProperties;
 import org.onap.policy.controlloop.actorserviceprovider.Operator;
+import org.onap.policy.controlloop.actorserviceprovider.TargetType;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
 import org.onap.policy.controlloop.eventmanager.ControlLoopOperationManager2;
 import org.onap.policy.controlloop.eventmanager.StepContext;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.drools.apps.controller.usecases.UsecasesConstants;
 
 public class Step2Test {
     private static final UUID REQ_ID = UUID.randomUUID();
-    private static final String POLICY_ID = "my-policy";
     private static final String POLICY_ACTOR = "my-actor";
     private static final String POLICY_OPERATION = "my-operation";
     private static final String MY_TARGET = "my-target";
     private static final String PAYLOAD_KEY = "payload-key";
     private static final String PAYLOAD_VALUE = "payload-value";
-    private static final Integer POLICY_RETRY = 3;
-    private static final Integer POLICY_TIMEOUT = 20;
     private static final String NO_SLASH = "noslash";
     private static final String ONE_SLASH = "/one";
 
@@ -99,9 +95,7 @@ public class Step2Test {
     private AaiCqResponse aaicq;
 
     private CompletableFuture<OperationOutcome> future;
-    private Target target;
     private Map<String, String> payload;
-    private Policy policy;
     private VirtualControlLoopEvent event;
     private ControlLoopEventContext context;
     private BlockingQueue<OperationOutcome> starts;
@@ -128,20 +122,8 @@ public class Step2Test {
 
         when(stepContext.getProperty(AaiCqResponse.CONTEXT_KEY)).thenReturn(aaicq);
 
-        target = new Target();
-        target.setType(TargetType.VM);
-
         payload = Map.of(PAYLOAD_KEY, PAYLOAD_VALUE);
 
-        policy = new Policy();
-        policy.setId(POLICY_ID);
-        policy.setActor(POLICY_ACTOR);
-        policy.setRecipe(POLICY_OPERATION);
-        policy.setTarget(target);
-        policy.setPayload(payload);
-        policy.setRetry(POLICY_RETRY);
-        policy.setTimeout(POLICY_TIMEOUT);
-
         event = new VirtualControlLoopEvent();
         event.setRequestId(REQ_ID);
         event.setTarget(ControlLoopOperationManager2.VSERVER_VSERVER_NAME);
@@ -152,10 +134,13 @@ public class Step2Test {
         starts = new LinkedBlockingQueue<>();
         completions = new LinkedBlockingQueue<>();
 
+        Map<String, String> entityIds = new HashMap<>();
+
         params = ControlLoopOperationParams.builder().actor(POLICY_ACTOR).actorService(actors)
                         .completeCallback(completions::add).context(context).executor(ForkJoinPool.commonPool())
                         .operation(POLICY_OPERATION).payload(new TreeMap<>(payload)).startCallback(starts::add)
-                        .target(target).targetEntity(MY_TARGET).build();
+                        .targetType(TargetType.VM).targetEntityIds(entityIds).targetEntity(MY_TARGET)
+                        .build();
 
         step = new Step2(stepContext, params, event);
         step.init();
@@ -268,7 +253,7 @@ public class Step2Test {
 
     @Test
     public void testLoadResourceVnf_testGetResourceVnf() {
-        target.setResourceID("my-resource");
+        params.getTargetEntityIds().put(Step2.TARGET_RESOURCE_ID, "my-resource");
         GenericVnf data = new GenericVnf();
         when(aaicq.getGenericVnfByModelInvariantId("my-resource")).thenReturn(data);
         when(policyOperation.getPropertyNames()).thenReturn(List.of(OperationProperties.AAI_RESOURCE_VNF));
@@ -277,12 +262,12 @@ public class Step2Test {
         verify(policyOperation).setProperty(OperationProperties.AAI_RESOURCE_VNF, data);
 
         // missing resource ID
-        target.setResourceID(null);
+        params.getTargetEntityIds().put(Step2.TARGET_RESOURCE_ID, null);
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
                         .withMessageContaining("missing Target resource ID");
 
-        // missing target
-        params = params.toBuilder().target(null).build();
+        // missing target entity IDs
+        params = params.toBuilder().targetEntityIds(null).build();
         step = new Step2(stepContext, params, event);
         step.init();
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
@@ -315,7 +300,7 @@ public class Step2Test {
 
     @Test
     public void testLoadVnf_testGetVnf() {
-        target.setModelInvariantId("my-model-invariant");
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_INVARIANT_ID, "my-model-invariant");
         GenericVnf data = new GenericVnf();
         when(aaicq.getGenericVnfByVfModuleModelInvariantId("my-model-invariant")).thenReturn(data);
         when(policyOperation.getPropertyNames()).thenReturn(List.of(OperationProperties.AAI_VNF));
@@ -324,12 +309,12 @@ public class Step2Test {
         verify(policyOperation).setProperty(OperationProperties.AAI_VNF, data);
 
         // missing model invariant ID
-        target.setModelInvariantId(null);
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_INVARIANT_ID, null);
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
                         .withMessageContaining("missing modelInvariantId");
 
         // missing target
-        params = params.toBuilder().target(null).build();
+        params = params.toBuilder().targetEntityIds(null).build();
         step = new Step2(stepContext, params, event);
         step.init();
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
@@ -338,7 +323,7 @@ public class Step2Test {
 
     @Test
     public void testLoadVnfModel_testGetVnfModel() {
-        target.setModelInvariantId("my-model-invariant");
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_INVARIANT_ID, "my-model-invariant");
         GenericVnf vnf = new GenericVnf();
         when(aaicq.getGenericVnfByVfModuleModelInvariantId("my-model-invariant")).thenReturn(vnf);
 
@@ -388,9 +373,9 @@ public class Step2Test {
 
     @Test
     public void testLoadVfCount_testGetVfCount() {
-        target.setModelCustomizationId("vf-count-customization");
-        target.setModelInvariantId("vf-count-invariant");
-        target.setModelVersionId("vf-count-version");
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_CUSTOMIZATION_ID, "vf-count-customization");
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_INVARIANT_ID, "vf-count-invariant");
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_VERSION_ID, "vf-count-version");
         when(aaicq.getVfModuleCount("vf-count-customization", "vf-count-invariant", "vf-count-version")).thenReturn(11);
         when(policyOperation.getPropertyNames()).thenReturn(List.of(OperationProperties.DATA_VF_COUNT));
 
@@ -398,22 +383,22 @@ public class Step2Test {
         verify(policyOperation).setProperty(OperationProperties.DATA_VF_COUNT, 11);
 
         // missing model version id
-        target.setModelVersionId(null);
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_VERSION_ID, null);
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
                         .withMessageContaining("missing target modelVersionId");
 
         // missing model invariant id
-        target.setModelInvariantId(null);
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_INVARIANT_ID, null);
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
                         .withMessageContaining("missing target modelInvariantId");
 
         // missing model customization id
-        target.setModelCustomizationId(null);
+        params.getTargetEntityIds().put(Step2.TARGET_MODEL_CUSTOMIZATION_ID, null);
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
                         .withMessageContaining("missing target modelCustomizationId");
 
         // missing target
-        params = params.toBuilder().target(null).build();
+        params = params.toBuilder().targetEntityIds(null).build();
         step = new Step2(stepContext, params, event);
         step.init();
         assertThatIllegalArgumentException().isThrownBy(() -> step.setProperties())
index 5cf087a..c0116c9 100644 (file)
@@ -178,7 +178,7 @@ public class ControlLoopEventManager implements StepContext, Serializable {
      */
     private long detmControlLoopTimeoutMs() {
         // validation checks preclude null or 0 timeout values in the policy
-        Integer timeout = processor.getControlLoop().getTimeout();
+        Integer timeout = processor.getPolicy().getProperties().getTimeout();
         return TimeUnit.MILLISECONDS.convert(timeout, TimeUnit.SECONDS);
     }
 
@@ -221,6 +221,7 @@ public class ControlLoopEventManager implements StepContext, Serializable {
      * @param name name of the property of interest
      * @return {@code true} if the context contains the property, {@code false} otherwise
      */
+    @Override
     public boolean contains(String name) {
         return properties.containsKey(name);
     }
@@ -232,6 +233,7 @@ public class ControlLoopEventManager implements StepContext, Serializable {
      * @param name name of the property whose value is to be retrieved
      * @return the property's value, or {@code null} if it does not yet have a value
      */
+    @Override
     @SuppressWarnings("unchecked")
     public <T> T getProperty(String name) {
         return (T) properties.get(name);
@@ -243,6 +245,7 @@ public class ControlLoopEventManager implements StepContext, Serializable {
      * @param name property name
      * @param value new property value
      */
+    @Override
     public void setProperty(String name, Serializable value) {
         logger.error("set property {}={} manager={}", name, value, this);
         properties.put(name, value);
@@ -253,6 +256,7 @@ public class ControlLoopEventManager implements StepContext, Serializable {
      *
      * @param name property name
      */
+    @Override
     public void removeProperty(String name) {
         properties.remove(name);
     }
index 5f611c0..556fa31 100644 (file)
@@ -54,14 +54,14 @@ import org.onap.policy.controlloop.ControlLoopResponse;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
+import org.onap.policy.controlloop.actorserviceprovider.OperationFinalResult;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
 import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
-import org.onap.policy.controlloop.policy.FinalResult;
-import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.processor.ControlLoopProcessor;
 import org.onap.policy.drools.core.lock.LockCallback;
+import org.onap.policy.drools.domain.models.operational.Operation;
 import org.onap.policy.drools.system.PolicyEngineConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -151,7 +151,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
     private final ControlLoopProcessor processor;
     private final AtomicReference<ControlLoopOperationManager2> currentOperation = new AtomicReference<>();
 
-    private FinalResult finalResult = null;
+    private OperationFinalResult finalResult = null;
 
     @Getter
     private VirtualControlLoopNotification notification;
@@ -289,7 +289,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
         } catch (ControlLoopException | RuntimeException e) {
             // processor problem - this is fatal
             logger.warn("{}: cannot start next step for {}", closedLoopControlName, requestId, e);
-            finalResult = FinalResult.FINAL_FAILURE_EXCEPTION;
+            finalResult = OperationFinalResult.FINAL_FAILURE_EXCEPTION;
             controlLoopResponse = null;
             notification = makeNotification();
             notification.setNotification(ControlLoopNotificationType.FINAL_FAILURE);
@@ -363,7 +363,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
                 notification.setNotification(ControlLoopNotificationType.FINAL_FAILURE);
                 notification.setMessage("Control Loop timed out");
                 notification.setHistory(controlLoopHistory);
-                finalResult = FinalResult.FINAL_FAILURE;
+                finalResult = OperationFinalResult.FINAL_FAILURE;
                 break;
 
             case OPERATION_FAILURE:
@@ -460,7 +460,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
      */
     private long detmControlLoopTimeoutMs() {
         // validation checks preclude null or 0 timeout values in the policy
-        Integer timeout = processor.getControlLoop().getTimeout();
+        Integer timeout = processor.getPolicy().getProperties().getTimeout();
         return TimeUnit.MILLISECONDS.convert(timeout, TimeUnit.SECONDS);
     }
 
@@ -612,8 +612,8 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
 
     // the following methods may be overridden by junit tests
 
-    protected ControlLoopOperationManager2 makeOperationManager(ControlLoopEventContext ctx, Policy policy) {
-        return new ControlLoopOperationManager2(this, ctx, policy, getExecutor());
+    protected ControlLoopOperationManager2 makeOperationManager(ControlLoopEventContext ctx, Operation operation) {
+        return new ControlLoopOperationManager2(this, ctx, operation, getExecutor());
     }
 
     protected Executor getExecutor() {
index 7672622..31402f4 100644 (file)
@@ -28,6 +28,7 @@ import java.time.Instant;
 import java.util.Deque;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentLinkedDeque;
@@ -46,11 +47,12 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.actor.guard.GuardActor;
 import org.onap.policy.controlloop.actor.sdnr.SdnrActor;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
+import org.onap.policy.controlloop.actorserviceprovider.TargetType;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.actorserviceprovider.pipeline.PipelineUtil;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.PolicyResult;
+import org.onap.policy.drools.domain.models.operational.OperationalTarget;
 import org.onap.policy.sdnr.PciMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,7 +92,7 @@ public class ControlLoopOperationManager2 implements Serializable {
 
     private final transient ManagerContext operContext;
     private final transient ControlLoopEventContext eventContext;
-    private final Policy policy;
+    private final org.onap.policy.drools.domain.models.operational.Operation policy;
 
     @Getter
     @ToString.Include
@@ -156,25 +158,35 @@ public class ControlLoopOperationManager2 implements Serializable {
     @Getter
     private final String operation;
 
+    private final String targetStr;
+    private final OperationalTarget target;
+
 
     /**
      * Construct an instance.
      *
      * @param operContext this operation's context
      * @param context event context
-     * @param policy operation's policy
+     * @param operation2 operation's policy
      * @param executor executor for the Operation
      */
-    public ControlLoopOperationManager2(ManagerContext operContext, ControlLoopEventContext context, Policy policy,
-                    Executor executor) {
+    public ControlLoopOperationManager2(ManagerContext operContext, ControlLoopEventContext context,
+                    org.onap.policy.drools.domain.models.operational.Operation operation2, Executor executor) {
 
         this.operContext = operContext;
         this.eventContext = context;
-        this.policy = policy;
+        this.policy = operation2;
         this.requestId = context.getEvent().getRequestId().toString();
-        this.policyId = "" + policy.getId();
-        this.actor = policy.getActor();
-        this.operation = policy.getRecipe();
+        this.policyId = "" + operation2.getId();
+        this.actor = operation2.getActorOperation().getActor();
+        this.operation = operation2.getActorOperation().getOperation();
+        this.target = operation2.getActorOperation().getTarget();
+
+        String targetType = (target != null ? target.getTargetType() : null);
+        Map<String, String> entityIds = (target != null ? target.getEntityIds() : null);
+
+        // TODO encode()?
+        this.targetStr = (target != null ? target.toString() : null);
 
         // @formatter:off
         params = ControlLoopOperationParams.builder()
@@ -183,7 +195,8 @@ public class ControlLoopOperationManager2 implements Serializable {
                         .operation(operation)
                         .context(context)
                         .executor(executor)
-                        .target(policy.getTarget())
+                        .targetType(TargetType.toTargetType(targetType))
+                        .targetEntityIds(entityIds)
                         .startCallback(this::onStart)
                         .completeCallback(this::onComplete)
                         .build();
@@ -201,7 +214,7 @@ public class ControlLoopOperationManager2 implements Serializable {
         private static final long serialVersionUID = 1L;
 
         private int attempt;
-        private PolicyResult policyResult;
+        private OperationResult policyResult;
         private ControlLoopOperation clOperation;
         private ControlLoopResponse clResponse;
 
@@ -214,7 +227,7 @@ public class ControlLoopOperationManager2 implements Serializable {
             attempt = ControlLoopOperationManager2.this.attempts;
             policyResult = outcome.getResult();
             clOperation = outcome.toControlLoopOperation();
-            clOperation.setTarget(policy.getTarget().toString());
+            clOperation.setTarget(targetStr);
             clResponse = makeControlLoopResponse(outcome);
 
             if (outcome.getEnd() == null) {
@@ -268,14 +281,14 @@ public class ControlLoopOperationManager2 implements Serializable {
         // @formatter:off
         ControlLoopOperationParams params2 = params.toBuilder()
                     .payload(new LinkedHashMap<>())
-                    .retry(policy.getRetry())
+                    .retry(policy.getRetries())
                     .timeoutSec(policy.getTimeout())
                     .targetEntity(targetEntity)
                     .build();
         // @formatter:on
 
-        if (policy.getPayload() != null) {
-            params2.getPayload().putAll(policy.getPayload());
+        if (policy.getActorOperation().getPayload() != null) {
+            params2.getPayload().putAll(policy.getActorOperation().getPayload());
         }
 
         return params2.start();
@@ -481,28 +494,28 @@ public class ControlLoopOperationManager2 implements Serializable {
 
             case CL_TIMEOUT_ACTOR:
                 state = State.CONTROL_LOOP_TIMEOUT;
-                processAbort(outcome, PolicyResult.FAILURE, "Control loop timed out");
+                processAbort(outcome, OperationResult.FAILURE, "Control loop timed out");
                 break;
 
             case LOCK_ACTOR:
                 // lock is no longer available
                 if (state == State.ACTIVE) {
                     state = State.LOCK_DENIED;
-                    storeFailureInDataBase(outcome, PolicyResult.FAILURE_GUARD, "Operation denied by Lock");
+                    storeFailureInDataBase(outcome, OperationResult.FAILURE_GUARD, "Operation denied by Lock");
                 } else {
                     state = State.LOCK_LOST;
-                    processAbort(outcome, PolicyResult.FAILURE, "Operation aborted by Lock");
+                    processAbort(outcome, OperationResult.FAILURE, "Operation aborted by Lock");
                 }
                 break;
 
             case GUARD_ACTOR:
                 if (outcome.getEnd() == null) {
                     state = State.GUARD_STARTED;
-                } else if (outcome.getResult() == PolicyResult.SUCCESS) {
+                } else if (outcome.getResult() == OperationResult.SUCCESS) {
                     state = State.GUARD_PERMITTED;
                 } else {
                     state = State.GUARD_DENIED;
-                    storeFailureInDataBase(outcome, PolicyResult.FAILURE_GUARD, "Operation denied by Guard");
+                    storeFailureInDataBase(outcome, OperationResult.FAILURE_GUARD, "Operation denied by Guard");
                 }
                 break;
 
@@ -517,7 +530,7 @@ public class ControlLoopOperationManager2 implements Serializable {
                      * Operation completed. If the last entry was a "start" (i.e., "end" field
                      * is null), then replace it. Otherwise, just add the completion.
                      */
-                    state = (outcome.getResult() == PolicyResult.SUCCESS ? State.OPERATION_SUCCESS
+                    state = (outcome.getResult() == OperationResult.SUCCESS ? State.OPERATION_SUCCESS
                                     : State.OPERATION_FAILURE);
                     controlLoopResponse = makeControlLoopResponse(outcome);
                     if (!operationHistory.isEmpty() && operationHistory.peekLast().getClOperation().getEnd() == null) {
@@ -542,7 +555,7 @@ public class ControlLoopOperationManager2 implements Serializable {
      * @param result result to put into the DB
      * @param message message to put into the DB
      */
-    private void processAbort(OperationOutcome outcome, PolicyResult result, String message) {
+    private void processAbort(OperationOutcome outcome, OperationResult result, String message) {
         if (operationHistory.isEmpty() || operationHistory.peekLast().getClOperation().getEnd() != null) {
             // last item was not a "start" operation
 
@@ -612,9 +625,9 @@ public class ControlLoopOperationManager2 implements Serializable {
      *
      * @return the operation result
      */
-    public PolicyResult getOperationResult() {
+    public OperationResult getOperationResult() {
         Operation last = operationHistory.peekLast();
-        return (last == null ? PolicyResult.FAILURE_EXCEPTION : last.getPolicyResult());
+        return (last == null ? OperationResult.FAILURE_EXCEPTION : last.getPolicyResult());
     }
 
     /**
@@ -652,7 +665,7 @@ public class ControlLoopOperationManager2 implements Serializable {
      * @param result result to put into the DB
      * @param message message to put into the DB
      */
-    private void storeFailureInDataBase(OperationOutcome outcome, PolicyResult result, String message) {
+    private void storeFailureInDataBase(OperationOutcome outcome, OperationResult result, String message) {
         // don't include this in history yet
         holdLast = true;
 
@@ -680,15 +693,15 @@ public class ControlLoopOperationManager2 implements Serializable {
      *         already been determined
      */
     protected CompletableFuture<OperationOutcome> detmTarget() {
-        if (policy.getTarget() == null) {
+        if (target == null) {
             throw new IllegalArgumentException("The target is null");
         }
 
-        if (policy.getTarget().getType() == null) {
+        if (target.getTargetType() == null) {
             throw new IllegalArgumentException("The target type is null");
         }
 
-        switch (policy.getTarget().getType()) {
+        switch (TargetType.toTargetType(target.getTargetType())) {
             case PNF:
                 return detmPnfTarget();
             case VM:
index 8356000..91b5325 100644 (file)
@@ -29,7 +29,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Consumer;
 import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
-import org.onap.policy.controlloop.policy.PolicyResult;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.drools.core.lock.Lock;
 import org.onap.policy.drools.core.lock.LockCallback;
 import org.slf4j.Logger;
@@ -130,7 +130,7 @@ public class LockData implements LockCallback {
         theLock = lock;
 
         OperationOutcome outcome = makeOutcome();
-        outcome.setResult(PolicyResult.SUCCESS);
+        outcome.setResult(OperationResult.SUCCESS);
         outcome.setMessage(ControlLoopOperation.SUCCESS_MSG);
 
         future.get().complete(outcome);
@@ -141,7 +141,7 @@ public class LockData implements LockCallback {
         synchronized (this) {
             logger.warn("lock unavailable on {} for {}", targetEntity, requestId);
             failedOutcome = makeOutcome();
-            failedOutcome.setResult(PolicyResult.FAILURE);
+            failedOutcome.setResult(OperationResult.FAILURE);
             failedOutcome.setMessage(ControlLoopOperation.FAILED_MSG);
         }
 
index f578c8a..153b081 100644 (file)
 package org.onap.policy.controlloop.processor;
 
 import java.io.Serializable;
-import java.lang.reflect.InvocationTargetException;
-import java.util.stream.Collectors;
 import lombok.Getter;
-import org.apache.commons.beanutils.BeanUtils;
 import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardYamlCoder;
 import org.onap.policy.controlloop.ControlLoopException;
+import org.onap.policy.controlloop.actorserviceprovider.OperationFinalResult;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
-import org.onap.policy.controlloop.policy.ControlLoop;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.controlloop.policy.FinalResult;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.PolicyParam;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.domain.models.DroolsPolicy;
 import org.onap.policy.drools.domain.models.operational.Operation;
 import org.onap.policy.drools.domain.models.operational.OperationalPolicy;
-import org.onap.policy.drools.domain.models.operational.OperationalTarget;
 import org.onap.policy.drools.system.PolicyEngineConstants;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 
 public class ControlLoopProcessor implements Serializable {
     private static final long serialVersionUID = 1L;
-    private static final Logger logger = LoggerFactory.getLogger(ControlLoopProcessor.class);
+
+    private static final StandardYamlCoder coder = new StandardYamlCoder();
 
     @Getter
-    private final ControlLoopPolicy policy;
+    private final OperationalPolicy policy;
     private String currentNestedPolicyId;
 
     // not serializable, thus must be transient
     @Getter
     private transient ToscaPolicy toscaOpPolicy;
 
-    // not serializable, thus must be transient
-    @Getter
-    private transient DroolsPolicy domainOpPolicy;
+    //@Getter
+    //private ControlLoop controlLoop;
 
     /**
      * Construct an instance from yaml.
@@ -70,19 +57,7 @@ public class ControlLoopProcessor implements Serializable {
      * @throws ControlLoopException if an error occurs
      */
     public ControlLoopProcessor(String yaml) throws ControlLoopException {
-        try {
-            final Yaml y = new Yaml(new CustomClassLoaderConstructor(ControlLoopPolicy.class,
-                    ControlLoopPolicy.class.getClassLoader()));
-            final Object obj = y.load(yaml);
-
-            this.policy = (ControlLoopPolicy) obj;
-            this.currentNestedPolicyId = this.policy.getControlLoop().getTrigger_policy();
-        } catch (final Exception e) {
-            //
-            // Most likely this is a YAML Exception
-            //
-            throw new ControlLoopException(e);
-        }
+        this(decodeTosca(yaml));
     }
 
     /**
@@ -90,72 +65,30 @@ public class ControlLoopProcessor implements Serializable {
      */
     public ControlLoopProcessor(ToscaPolicy toscaPolicy) throws ControlLoopException {
         try {
-            this.policy = buildPolicyFromToscaCompliant(toscaPolicy);
-
-            this.currentNestedPolicyId = this.policy.getControlLoop().getTrigger_policy();
+            this.policy =
+                    PolicyEngineConstants.getManager().getDomainMaker().convertTo(toscaPolicy, OperationalPolicy.class);
+            this.currentNestedPolicyId = this.policy.getProperties().getTrigger();
             this.toscaOpPolicy = toscaPolicy;
         } catch (RuntimeException | CoderException e) {
             throw new ControlLoopException(e);
         }
     }
 
-    private Target toStandardTarget(OperationalTarget opTarget) {
-        Target target = new Target(TargetType.valueOf(opTarget.getTargetType()));
+    private static ToscaPolicy decodeTosca(String yaml) throws ControlLoopException {
         try {
-            BeanUtils.populate(target, opTarget.getEntityIds());
-        } catch (IllegalAccessException | InvocationTargetException e) {
-            logger.warn("target entityIds cannot be mapped (unexpected): {}", opTarget, e);
-        }
-        return target;
-    }
-
-    protected ControlLoopPolicy buildPolicyFromToscaCompliant(ToscaPolicy policy) throws CoderException {
-        OperationalPolicy domainPolicy =
-                PolicyEngineConstants.getManager().getDomainMaker().convertTo(policy, OperationalPolicy.class);
-
-        ControlLoopPolicy backwardsCompatiblePolicy = new ControlLoopPolicy();
-
-        // @formatter:off
-        backwardsCompatiblePolicy.setPolicies(
-            domainPolicy.getProperties().getOperations().stream().map(this::convertPolicy)
-                    .collect(Collectors.toList()));
-        // @formatter:on
-
-        ControlLoop controlLoop = new ControlLoop();
-        controlLoop.setAbatement(domainPolicy.getProperties().isAbatement());
-        controlLoop.setControlLoopName(domainPolicy.getProperties().getId());
-        controlLoop.setTimeout(domainPolicy.getProperties().getTimeout());
-        controlLoop.setTrigger_policy(domainPolicy.getProperties().getTrigger());
-        controlLoop.setVersion(domainPolicy.getVersion());
+            ToscaServiceTemplate template = coder.decode(yaml, ToscaServiceTemplate.class);
+            if (template == null || template.getToscaTopologyTemplate() == null) {
+                throw new IllegalArgumentException("Cannot decode yaml into ToscaServiceTemplate");
+            }
 
-        backwardsCompatiblePolicy.setControlLoop(controlLoop);
-        this.domainOpPolicy = domainPolicy;
-        return backwardsCompatiblePolicy;
-    }
+            return template.getToscaTopologyTemplate().getPolicies().get(0).values().iterator().next();
 
-    private Policy convertPolicy(Operation operation) {
-        // @formatter:off
-        Policy newPolicy = new Policy(PolicyParam.builder()
-                .id(operation.getId())
-                .name(operation.getActorOperation().getOperation())
-                .description(operation.getDescription())
-                .actor(operation.getActorOperation().getActor())
-                .payload(operation.getActorOperation().getPayload())
-                .recipe(operation.getActorOperation().getOperation())
-                .retries(operation.getRetries())
-                .timeout(operation.getTimeout())
-                .target(toStandardTarget(operation.getActorOperation().getTarget()))
-            .build());
-        // @formatter:on
-
-        newPolicy.setSuccess(operation.getSuccess());
-        newPolicy.setFailure(operation.getFailure());
-        newPolicy.setFailure_exception(operation.getFailureException());
-        newPolicy.setFailure_guard(operation.getFailureGuard());
-        newPolicy.setFailure_retries(operation.getFailureRetries());
-        newPolicy.setFailure_timeout(operation.getFailureTimeout());
-
-        return newPolicy;
+        } catch (final Exception e) {
+            //
+            // Most likely this is a YAML Exception
+            //
+            throw new ControlLoopException(e);
+        }
     }
 
     /**
@@ -164,21 +97,17 @@ public class ControlLoopProcessor implements Serializable {
     public ControlLoopParams getControlLoopParams() {
         ControlLoopParams controlLoopParams = new ControlLoopParams();
 
-        controlLoopParams.setClosedLoopControlName(this.getControlLoop().getControlLoopName());
-        controlLoopParams.setPolicyScope(domainOpPolicy.getType() + ":" + domainOpPolicy.getTypeVersion());
-        controlLoopParams.setPolicyName(domainOpPolicy.getName());
-        controlLoopParams.setPolicyVersion(domainOpPolicy.getVersion());
+        controlLoopParams.setClosedLoopControlName(this.policy.getProperties().getId());
+        controlLoopParams.setPolicyScope(policy.getType() + ":" + policy.getTypeVersion());
+        controlLoopParams.setPolicyName(policy.getName());
+        controlLoopParams.setPolicyVersion(policy.getVersion());
         controlLoopParams.setToscaPolicy(toscaOpPolicy);
 
         return controlLoopParams;
     }
 
-    public ControlLoop getControlLoop() {
-        return this.policy.getControlLoop();
-    }
-
-    public FinalResult checkIsCurrentPolicyFinal() {
-        return FinalResult.toResult(this.currentNestedPolicyId);
+    public OperationFinalResult checkIsCurrentPolicyFinal() {
+        return OperationFinalResult.toResult(this.currentNestedPolicyId);
     }
 
     /**
@@ -187,12 +116,14 @@ public class ControlLoopProcessor implements Serializable {
      * @return the current policy
      * @throws ControlLoopException if an error occurs
      */
-    public Policy getCurrentPolicy() throws ControlLoopException {
-        if (this.policy == null || this.policy.getPolicies() == null) {
+    public Operation getCurrentPolicy() throws ControlLoopException {
+        if (this.policy == null || this.policy.getProperties() == null
+                        || this.policy.getProperties().getOperations() == null
+                        || this.policy.getProperties().getOperations().isEmpty()) {
             throw new ControlLoopException("There are no policies defined.");
         }
 
-        for (final Policy nestedPolicy : this.policy.getPolicies()) {
+        for (final Operation nestedPolicy : this.policy.getProperties().getOperations()) {
             if (nestedPolicy.getId().equals(this.currentNestedPolicyId)) {
                 return nestedPolicy;
             }
@@ -206,8 +137,8 @@ public class ControlLoopProcessor implements Serializable {
      * @param result the result of the current policy
      * @throws ControlLoopException if an error occurs
      */
-    public void nextPolicyForResult(PolicyResult result) throws ControlLoopException {
-        final Policy currentPolicy = this.getCurrentPolicy();
+    public void nextPolicyForResult(OperationResult result) throws ControlLoopException {
+        final Operation currentPolicy = this.getCurrentPolicy();
         try {
             if (currentPolicy == null) {
                 throw new ControlLoopException("There is no current policy to determine where to go to.");
@@ -220,21 +151,21 @@ public class ControlLoopProcessor implements Serializable {
                     this.currentNestedPolicyId = currentPolicy.getFailure();
                     break;
                 case FAILURE_TIMEOUT:
-                    this.currentNestedPolicyId = currentPolicy.getFailure_timeout();
+                    this.currentNestedPolicyId = currentPolicy.getFailureTimeout();
                     break;
                 case FAILURE_RETRIES:
-                    this.currentNestedPolicyId = currentPolicy.getFailure_retries();
+                    this.currentNestedPolicyId = currentPolicy.getFailureRetries();
                     break;
                 case FAILURE_EXCEPTION:
-                    this.currentNestedPolicyId = currentPolicy.getFailure_exception();
+                    this.currentNestedPolicyId = currentPolicy.getFailureException();
                     break;
                 case FAILURE_GUARD:
                 default:
-                    this.currentNestedPolicyId = currentPolicy.getFailure_guard();
+                    this.currentNestedPolicyId = currentPolicy.getFailureGuard();
                     break;
             }
         } catch (final ControlLoopException e) {
-            this.currentNestedPolicyId = FinalResult.FINAL_FAILURE_EXCEPTION.toString();
+            this.currentNestedPolicyId = OperationFinalResult.FINAL_FAILURE_EXCEPTION.toString();
             throw e;
         }
     }
index 9534f93..05eba64 100644 (file)
@@ -26,7 +26,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.IOUtils;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
 import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.constructor.Constructor;
 
@@ -53,15 +53,15 @@ public final class SupportUtil {
      * @return a Pair
      * @throws IOException if the file cannot be read
      */
-    public static Pair<ControlLoopPolicy, String> loadYaml(String testFile) throws IOException {
+    public static Pair<ToscaPolicy, String> loadYaml(String testFile) throws IOException {
         try (InputStream is = new FileInputStream(new File(testFile))) {
             String contents = IOUtils.toString(is, StandardCharsets.UTF_8);
             //
             // Read the yaml into our Java Object
             //
-            Yaml yaml = new Yaml(new Constructor(ControlLoopPolicy.class));
-            Object obj = yaml.load(contents);
-            return new Pair<>((ControlLoopPolicy) obj, contents);
+            Yaml yaml = new Yaml(new Constructor(ToscaPolicy.class));
+            ToscaPolicy obj = yaml.load(contents);
+            return new Pair<>(obj, contents);
         }
     }
 
index 86381eb..1c4030c 100644 (file)
@@ -47,7 +47,6 @@ import java.util.function.Consumer;
 import org.drools.core.WorkingMemory;
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.kie.api.runtime.rule.FactHandle;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
@@ -66,18 +65,16 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
 import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2.NewEventStatus;
 import org.onap.policy.controlloop.eventmanager.ControlLoopOperationManager2.State;
 import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.drools.core.lock.LockCallback;
 import org.onap.policy.drools.core.lock.LockImpl;
 import org.onap.policy.drools.core.lock.LockState;
+import org.onap.policy.drools.domain.models.operational.Operation;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 
@@ -117,7 +114,6 @@ public class ControlLoopEventManager2Test {
 
     private long preCreateTimeMs;
     private List<LockImpl> locks;
-    private Target target;
     private ToscaPolicy tosca;
     private ControlLoopParams params;
     private VirtualControlLoopEvent event;
@@ -158,10 +154,7 @@ public class ControlLoopEventManager2Test {
         event.setAai(new TreeMap<>(Map.of(ControlLoopOperationManager2.VSERVER_VSERVER_NAME, MY_TARGET)));
         event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
         event.setClosedLoopControlName(CL_NAME);
-        event.setTargetType(TargetType.VNF.toString());
-
-        target = new Target();
-        target.setType(TargetType.VNF);
+        event.setTargetType(ControlLoopTargetType.VNF);
 
         params = new ControlLoopParams();
         params.setClosedLoopControlName(CL_NAME);
@@ -217,11 +210,11 @@ public class ControlLoopEventManager2Test {
 
         for (ControlLoopOperationManager2 oper : Arrays.asList(oper1, oper2, oper3)) {
             assertTrue(mgr.isActive());
-            nextStep(oper, true, PolicyResult.SUCCESS);
+            nextStep(oper, true, OperationResult.SUCCESS);
             runRule();
 
             assertTrue(mgr.isActive());
-            nextStep(oper, false, PolicyResult.SUCCESS);
+            nextStep(oper, false, OperationResult.SUCCESS);
             runRule();
         }
 
@@ -257,7 +250,7 @@ public class ControlLoopEventManager2Test {
 
     @Test
     public void testNextStep_testStartOperationSuccess() throws ControlLoopException {
-        runOperation(PolicyResult.SUCCESS);
+        runOperation(OperationResult.SUCCESS);
 
         VirtualControlLoopNotification notif = mgr.getNotification();
         assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notif.getNotification());
@@ -291,7 +284,7 @@ public class ControlLoopEventManager2Test {
      */
     @Test
     public void testStartOperationException() throws ControlLoopException {
-        runOperation(PolicyResult.FAILURE_EXCEPTION);
+        runOperation(OperationResult.FAILURE_EXCEPTION);
 
         VirtualControlLoopNotification notif = mgr.getNotification();
         assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notif.getNotification());
@@ -303,7 +296,7 @@ public class ControlLoopEventManager2Test {
      */
     @Test
     public void testStartOperationFailure() throws ControlLoopException {
-        runOperation(PolicyResult.FAILURE);
+        runOperation(OperationResult.FAILURE);
 
         VirtualControlLoopNotification notif = mgr.getNotification();
         assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notif.getNotification());
@@ -315,7 +308,7 @@ public class ControlLoopEventManager2Test {
      */
     @Test
     public void testStartOperationOpenLoop() throws ControlLoopException {
-        runOperation(PolicyResult.FAILURE_GUARD);
+        runOperation(OperationResult.FAILURE_GUARD);
 
         VirtualControlLoopNotification notif = mgr.getNotification();
         assertEquals(ControlLoopNotificationType.FINAL_OPENLOOP, notif.getNotification());
@@ -441,7 +434,7 @@ public class ControlLoopEventManager2Test {
 
         mgr.start();
 
-        nextStep(oper1, true, PolicyResult.SUCCESS);
+        nextStep(oper1, true, OperationResult.SUCCESS);
         runRule();
 
         // check notification while running
@@ -451,7 +444,7 @@ public class ControlLoopEventManager2Test {
         List<ControlLoopOperation> history = notif.getHistory();
         assertNotNull(history);
 
-        nextStep(oper1, false, PolicyResult.SUCCESS);
+        nextStep(oper1, false, OperationResult.SUCCESS);
         runRule();
 
         assertFalse(mgr.isActive());
@@ -635,7 +628,7 @@ public class ControlLoopEventManager2Test {
 
         event.setAai(addAai(orig, ControlLoopEventManager2.GENERIC_VNF_PROV_STATUS, "ACTIVE"));
         assertThatCode(() -> new ControlLoopEventManager2(params, event, workMem)).doesNotThrowAnyException();
+
         event.setAai(addAai(orig, ControlLoopEventManager2.GENERIC_VNF_PROV_STATUS, "inactive"));
         assertThatThrownBy(() -> new ControlLoopEventManager2(params, event, workMem))
                         .isInstanceOf(IllegalStateException.class);
@@ -701,11 +694,11 @@ public class ControlLoopEventManager2Test {
     }
 
 
-    private void nextStep(ControlLoopOperationManager2 oper, boolean moreSteps, PolicyResult result) {
+    private void nextStep(ControlLoopOperationManager2 oper, boolean moreSteps, OperationResult result) {
         when(oper.nextStep()).thenReturn(moreSteps);
         when(oper.getOperationResult()).thenReturn(result);
 
-        if (result == PolicyResult.SUCCESS) {
+        if (result == OperationResult.SUCCESS) {
             when(oper.getState()).thenReturn(State.OPERATION_SUCCESS);
         } else {
             when(oper.getState()).thenReturn(State.OPERATION_FAILURE);
@@ -723,13 +716,13 @@ public class ControlLoopEventManager2Test {
         mgr.nextStep();
     }
 
-    private void runOperation(PolicyResult finalResult) throws ControlLoopException {
+    private void runOperation(OperationResult finalResult) throws ControlLoopException {
         mgr.start();
         verify(oper1).start(anyLong());
 
         assertTrue(mgr.isActive());
 
-        nextStep(oper1, true, PolicyResult.SUCCESS);
+        nextStep(oper1, true, OperationResult.SUCCESS);
         runRule();
 
         nextStep(oper1, false, finalResult);
@@ -814,8 +807,8 @@ public class ControlLoopEventManager2Test {
         }
 
         @Override
-        protected ControlLoopOperationManager2 makeOperationManager(ControlLoopEventContext ctx, Policy policy) {
-            switch (policy.getActor()) {
+        protected ControlLoopOperationManager2 makeOperationManager(ControlLoopEventContext ctx, Operation policy) {
+            switch (policy.getActorOperation().getActor()) {
                 case "First":
                     return oper1;
                 case "Second":
@@ -823,7 +816,7 @@ public class ControlLoopEventManager2Test {
                 case "Third":
                     return oper3;
                 default:
-                    throw new IllegalArgumentException("unknown policy actor " + policy.getActor());
+                    throw new IllegalArgumentException("unknown policy actor " + policy.getActorOperation().getActor());
             }
         }
     }
index 0b37abb..e4c2332 100644 (file)
@@ -47,10 +47,8 @@ import org.onap.policy.common.utils.io.Serializer;
 import org.onap.policy.common.utils.resources.ResourceUtils;
 import org.onap.policy.controlloop.ControlLoopException;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
 import org.onap.policy.drools.core.lock.LockCallback;
 import org.onap.policy.drools.core.lock.LockImpl;
 import org.onap.policy.drools.core.lock.LockState;
@@ -73,7 +71,6 @@ public class ControlLoopEventManagerTest {
 
     private long preCreateTimeMs;
     private List<LockImpl> locks;
-    private Target target;
     private ToscaPolicy tosca;
     private ControlLoopParams params;
     private ControlLoopEventManager mgr;
@@ -85,9 +82,6 @@ public class ControlLoopEventManagerTest {
     public void setUp() throws ControlLoopException, CoderException {
         MockitoAnnotations.initMocks(this);
 
-        target = new Target();
-        target.setType(TargetType.VNF);
-
         params = new ControlLoopParams();
         params.setClosedLoopControlName(CL_NAME);
         params.setPolicyName(POLICY_NAME);
@@ -189,11 +183,11 @@ public class ControlLoopEventManagerTest {
         // indicate that the first lock failed
         locks.get(0).notifyUnavailable();
 
-        verifyLock(PolicyResult.FAILURE);
+        verifyLock(OperationResult.FAILURE);
         assertTrue(mgr.getOutcomes().isEmpty());
     }
 
-    private void verifyLock(PolicyResult result) {
+    private void verifyLock(OperationResult result) {
         OperationOutcome outcome = mgr.getOutcomes().poll();
         assertNotNull(outcome);
         assertEquals(ActorConstants.LOCK_ACTOR, outcome.getActor());
index add4c41..0b06665 100644 (file)
@@ -61,15 +61,15 @@ import org.onap.policy.controlloop.actor.guard.GuardActor;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
 import org.onap.policy.controlloop.actorserviceprovider.Operation;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.controlloop.actorserviceprovider.Operator;
+import org.onap.policy.controlloop.actorserviceprovider.TargetType;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
 import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
+import org.onap.policy.drools.domain.models.operational.ActorOperation;
+import org.onap.policy.drools.domain.models.operational.OperationalTarget;
 import org.onap.policy.sdnr.PciBody;
 import org.onap.policy.sdnr.PciMessage;
 import org.onap.policy.sdnr.PciResponse;
@@ -114,9 +114,11 @@ public class ControlLoopOperationManager2Test {
 
     private CompletableFuture<OperationOutcome> lockFuture;
     private CompletableFuture<OperationOutcome> policyFuture;
-    private Target target;
+    private ActorOperation operation;
+    private OperationalTarget target;
+    private Map<String, String> entityIds;
     private Map<String, String> payload;
-    private Policy policy;
+    private org.onap.policy.drools.domain.models.operational.Operation policy;
     private VirtualControlLoopEvent event;
     private ControlLoopEventContext context;
     private PseudoExecutor executor;
@@ -145,19 +147,28 @@ public class ControlLoopOperationManager2Test {
         when(vnf.getVnfId()).thenReturn(MY_VNF_ID);
         when(cqdata.getDefaultGenericVnf()).thenReturn(vnf);
 
-        target = new Target();
-        target.setType(TargetType.VM);
+        entityIds = Map.of("entity-name-A", "entity-value-A");
+
+        target = OperationalTarget.builder()
+                        .targetType(TargetType.VM.toString())
+                        .entityIds(entityIds)
+                        .build();
 
         payload = Map.of(PAYLOAD_KEY, PAYLOAD_VALUE);
 
-        policy = new Policy();
-        policy.setId(POLICY_ID);
-        policy.setActor(POLICY_ACTOR);
-        policy.setRecipe(POLICY_OPERATION);
-        policy.setTarget(target);
-        policy.setPayload(payload);
-        policy.setRetry(POLICY_RETRY);
-        policy.setTimeout(POLICY_TIMEOUT);
+        operation = ActorOperation.builder()
+                        .actor(POLICY_ACTOR)
+                        .operation(POLICY_OPERATION)
+                        .payload(payload)
+                        .target(target)
+                        .build();
+
+        policy = org.onap.policy.drools.domain.models.operational.Operation.builder()
+                        .id(POLICY_ID)
+                        .actorOperation(operation)
+                        .retries(POLICY_RETRY)
+                        .timeout(POLICY_TIMEOUT)
+                        .build();
 
         event = new VirtualControlLoopEvent();
         event.setRequestId(REQ_ID);
@@ -200,7 +211,7 @@ public class ControlLoopOperationManager2Test {
         assertFalse(mgr.nextStep());
 
         OperationOutcome outcome = mgr.getOutcomes().peek();
-        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(OperationResult.SUCCESS, outcome.getResult());
         assertTrue(outcome.isFinalOutcome());
 
         verify(mgrctx, times(4)).updated(mgr);
@@ -211,7 +222,8 @@ public class ControlLoopOperationManager2Test {
      */
     @Test
     public void testStartDetmTargetException() {
-        policy.setTarget(new Target());
+        operation.setTarget(OperationalTarget.builder().build());
+        mgr = new ControlLoopOperationManager2(mgrctx, context, policy, executor);
         mgr.start(REMAINING_MS);
 
         runToCompletion();
@@ -309,14 +321,15 @@ public class ControlLoopOperationManager2Test {
         assertSame(REQ_ID, params.getRequestId());
         assertSame(POLICY_RETRY, params.getRetry());
         assertNotNull(params.getStartCallback());
-        assertSame(target, params.getTarget());
+        assertEquals(target.getTargetType().toString(), params.getTargetType().toString());
+        assertSame(entityIds, params.getTargetEntityIds());
         assertEquals(MY_TARGET, params.getTargetEntity());
         assertSame(POLICY_TIMEOUT, params.getTimeoutSec());
     }
 
     @Test
     public void testStartOperationNullPayload() {
-        policy.setPayload(null);
+        operation.setPayload(null);
         mgr.start(REMAINING_MS);
 
         lockFuture.complete(new OperationOutcome());
@@ -341,7 +354,8 @@ public class ControlLoopOperationManager2Test {
         assertSame(REQ_ID, params.getRequestId());
         assertSame(POLICY_RETRY, params.getRetry());
         assertNotNull(params.getStartCallback());
-        assertSame(target, params.getTarget());
+        assertEquals(target.getTargetType().toString(), params.getTargetType().toString());
+        assertSame(entityIds, params.getTargetEntityIds());
         assertEquals(MY_TARGET, params.getTargetEntity());
         assertSame(POLICY_TIMEOUT, params.getTimeoutSec());
     }
@@ -367,7 +381,7 @@ public class ControlLoopOperationManager2Test {
         /*
          * now work with SDNR actor
          */
-        policy.setActor("SDNR");
+        operation.setActor("SDNR");
         mgr = new ControlLoopOperationManager2(mgrctx, context, policy, executor);
 
         // should return null for a null input
@@ -407,7 +421,7 @@ public class ControlLoopOperationManager2Test {
         assertNotNull(mgr.getOperationResult());
 
         runCyle();
-        assertEquals(PolicyResult.SUCCESS, mgr.getOperationResult());
+        assertEquals(OperationResult.SUCCESS, mgr.getOperationResult());
     }
 
     /**
@@ -420,7 +434,7 @@ public class ControlLoopOperationManager2Test {
         genLockFailure();
         runToCompletion();
 
-        assertEquals(PolicyResult.FAILURE_GUARD, mgr.getOperationResult());
+        assertEquals(OperationResult.FAILURE_GUARD, mgr.getOperationResult());
     }
 
     /**
@@ -490,7 +504,7 @@ public class ControlLoopOperationManager2Test {
         // generate failure outcome for ANOTHER actor - should be ignored
         OperationOutcome outcome = mgr.getParams().makeOutcome();
         outcome.setActor(OTHER_ACTOR);
-        outcome.setResult(PolicyResult.FAILURE);
+        outcome.setResult(OperationResult.FAILURE);
         outcome.setStart(Instant.now());
         mgr.getParams().callbackStarted(new OperationOutcome(outcome));
 
@@ -514,7 +528,7 @@ public class ControlLoopOperationManager2Test {
 
         assertFalse(mgr.nextStep());
 
-        assertEquals(PolicyResult.SUCCESS, mgr.getOutcomes().peek().getResult());
+        assertEquals(OperationResult.SUCCESS, mgr.getOutcomes().peek().getResult());
 
         verify(mgrctx, times(4)).updated(mgr);
     }
@@ -556,7 +570,7 @@ public class ControlLoopOperationManager2Test {
         assertFalse(mgr.nextStep());
         verify(mgrctx).updated(mgr);
 
-        verifyDb(1, PolicyResult.FAILURE_GUARD, "Operation denied by Lock");
+        verifyDb(1, OperationResult.FAILURE_GUARD, "Operation denied by Lock");
     }
 
     /**
@@ -588,7 +602,7 @@ public class ControlLoopOperationManager2Test {
         assertFalse(mgr.nextStep());
         verify(mgrctx, times(3)).updated(mgr);
 
-        verifyDb(1, PolicyResult.FAILURE, "Operation aborted by Lock");
+        verifyDb(1, OperationResult.FAILURE, "Operation aborted by Lock");
     }
 
     /**
@@ -634,7 +648,7 @@ public class ControlLoopOperationManager2Test {
         assertFalse(mgr.nextStep());
         verify(mgrctx, times(2)).updated(mgr);
 
-        verifyDb(1, PolicyResult.FAILURE_GUARD, "Operation denied by Guard");
+        verifyDb(1, OperationResult.FAILURE_GUARD, "Operation denied by Guard");
     }
 
     /**
@@ -664,7 +678,7 @@ public class ControlLoopOperationManager2Test {
         assertFalse(mgr.nextStep());
         verify(mgrctx, times(4)).updated(mgr);
 
-        verifyDb(2, PolicyResult.SUCCESS, null);
+        verifyDb(2, OperationResult.SUCCESS, null);
     }
 
     /**
@@ -690,7 +704,7 @@ public class ControlLoopOperationManager2Test {
 
         assertTrue(mgr.nextStep());
         assertEquals(ControlLoopOperationManager2.State.OPERATION_FAILURE, mgr.getState());
-        verifyDb(2, PolicyResult.FAILURE, null);
+        verifyDb(2, OperationResult.FAILURE, null);
 
         assertThat(mgr.toString()).contains("attempts=1");
 
@@ -703,7 +717,7 @@ public class ControlLoopOperationManager2Test {
 
         assertTrue(mgr.nextStep());
         assertEquals(ControlLoopOperationManager2.State.OPERATION_FAILURE, mgr.getState());
-        verifyDb(4, PolicyResult.FAILURE, null);
+        verifyDb(4, OperationResult.FAILURE, null);
 
         assertThat(mgr.toString()).contains("attempts=2");
 
@@ -715,7 +729,7 @@ public class ControlLoopOperationManager2Test {
 
         assertTrue(mgr.nextStep());
         assertEquals(ControlLoopOperationManager2.State.OPERATION_SUCCESS, mgr.getState());
-        verifyDb(6, PolicyResult.SUCCESS, null);
+        verifyDb(6, OperationResult.SUCCESS, null);
 
         assertThat(mgr.toString()).contains("attempts=3");
 
@@ -744,29 +758,30 @@ public class ControlLoopOperationManager2Test {
 
     @Test
     public void testDetmTargetVm() {
-        target.setType(TargetType.VM);
+        target.setTargetType(TargetType.VM.toString());
         assertNull(mgr.detmTarget());
         assertEquals(MY_TARGET, mgr.getTargetEntity());
 
-        target.setType(TargetType.VNF);
+        target.setTargetType(TargetType.VNF.toString());
         assertNull(mgr.detmTarget());
         assertEquals(MY_TARGET, mgr.getTargetEntity());
 
-        target.setType(TargetType.VFMODULE);
+        target.setTargetType(TargetType.VFMODULE.toString());
         assertNull(mgr.detmTarget());
         assertEquals(MY_TARGET, mgr.getTargetEntity());
 
         // unsupported type
-        target.setType(TargetType.VFC);
+        target.setTargetType(TargetType.VFC.toString());
         assertThatIllegalArgumentException().isThrownBy(() -> mgr.detmTarget())
                         .withMessage("The target type is not supported");
 
         // null type
-        target.setType(null);
+        target.setTargetType(null);
         assertThatIllegalArgumentException().isThrownBy(() -> mgr.detmTarget()).withMessage("The target type is null");
 
         // null target
-        policy.setTarget(null);
+        operation.setTarget(null);
+        mgr = new ControlLoopOperationManager2(mgrctx, context, policy, executor);
         assertThatIllegalArgumentException().isThrownBy(() -> mgr.detmTarget()).withMessage("The target is null");
     }
 
@@ -899,7 +914,7 @@ public class ControlLoopOperationManager2Test {
         OperationOutcome outcome = new OperationOutcome();
         outcome.setActor(ControlLoopOperationManager2.LOCK_ACTOR);
         outcome.setOperation(ControlLoopOperationManager2.LOCK_OPERATION);
-        outcome.setResult(PolicyResult.FAILURE);
+        outcome.setResult(OperationResult.FAILURE);
         outcome.setStart(Instant.now());
         outcome.setEnd(Instant.now());
         outcome.setFinalOutcome(true);
@@ -936,7 +951,7 @@ public class ControlLoopOperationManager2Test {
         mgr.getParams().callbackStarted(new OperationOutcome(outcome));
 
         if (!permit) {
-            outcome.setResult(PolicyResult.FAILURE);
+            outcome.setResult(OperationResult.FAILURE);
         }
 
         outcome.setEnd(Instant.now());
@@ -969,7 +984,7 @@ public class ControlLoopOperationManager2Test {
         if (success) {
             outcome.setFinalOutcome(true);
         } else {
-            outcome.setResult(PolicyResult.FAILURE);
+            outcome.setResult(OperationResult.FAILURE);
         }
 
         outcome.setEnd(Instant.now());
@@ -986,7 +1001,7 @@ public class ControlLoopOperationManager2Test {
         event.getAai().clear();
         event.getAai().putAll(Map.of(ControlLoopOperationManager2.PNF_NAME, MY_TARGET));
 
-        target.setType(TargetType.PNF);
+        target.setTargetType(TargetType.PNF.toString());
     }
 
     /**
@@ -997,7 +1012,7 @@ public class ControlLoopOperationManager2Test {
         event.getAai().clear();
         event.getAai().putAll(Map.of(ControlLoopOperationManager2.GENERIC_VNF_VNF_ID, MY_TARGET));
 
-        target.setType(TargetType.VNF);
+        target.setTargetType(TargetType.VNF.toString());
     }
 
     private void checkResp(OperationOutcome outcome, String expectedPayload) {
@@ -1007,7 +1022,7 @@ public class ControlLoopOperationManager2Test {
         assertEquals(expectedPayload, resp.getPayload());
     }
 
-    private void verifyDb(int nrecords, PolicyResult expectedResult, String expectedMsg) {
+    private void verifyDb(int nrecords, OperationResult expectedResult, String expectedMsg) {
         ArgumentCaptor<String> entityCaptor = ArgumentCaptor.forClass(String.class);
         ArgumentCaptor<ControlLoopOperation> opCaptor = ArgumentCaptor.forClass(ControlLoopOperation.class);
         verify(dataMgr, times(nrecords)).store(any(), any(), entityCaptor.capture(), opCaptor.capture());
index 13ad562..a2f0134 100644 (file)
@@ -33,7 +33,6 @@ import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
 import org.onap.policy.controlloop.ophistory.OperationHistoryDataManagerImpl;
index dc470e7..98ff04d 100644 (file)
@@ -43,7 +43,7 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
-import org.onap.policy.controlloop.policy.PolicyResult;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.drools.core.lock.Lock;
 
 public class LockDataTest {
@@ -135,7 +135,7 @@ public class LockDataTest {
         assertEquals(ControlLoopOperationManager2.LOCK_ACTOR, outcome.getActor());
         assertEquals(ControlLoopOperationManager2.LOCK_OPERATION, outcome.getOperation());
         assertEquals(ENTITY, outcome.getTarget());
-        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(OperationResult.SUCCESS, outcome.getResult());
         assertEquals(ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
 
         Instant start = outcome.getStart();
@@ -176,7 +176,7 @@ public class LockDataTest {
         assertEquals(ControlLoopOperationManager2.LOCK_ACTOR, outcome.getActor());
         assertEquals(ControlLoopOperationManager2.LOCK_OPERATION, outcome.getOperation());
         assertEquals(ENTITY, outcome.getTarget());
-        assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertEquals(OperationResult.FAILURE, outcome.getResult());
         assertEquals(ControlLoopOperation.FAILED_MSG, outcome.getMessage());
 
         Instant start = outcome.getStart();
index c4121bb..efcc610 100644 (file)
@@ -47,30 +47,27 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.onap.policy.controlloop.ControlLoopTargetType;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
 import org.onap.policy.controlloop.actorserviceprovider.Operation;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
 import org.onap.policy.controlloop.actorserviceprovider.Operator;
+import org.onap.policy.controlloop.actorserviceprovider.TargetType;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.Target;
-import org.onap.policy.controlloop.policy.TargetType;
+import org.onap.policy.drools.domain.models.operational.OperationalTarget;
 
 public class StepTest {
     private static final UUID REQ_ID = UUID.randomUUID();
-    private static final String POLICY_ID = "my-policy";
     private static final String POLICY_ACTOR = "my-actor";
     private static final String POLICY_OPERATION = "my-operation";
     private static final String MY_TARGET = "my-target";
     private static final String PAYLOAD_KEY = "payload-key";
     private static final String PAYLOAD_VALUE = "payload-value";
     private static final long REMAINING_MS = 5000;
-    private static final Integer POLICY_RETRY = 3;
-    private static final Integer POLICY_TIMEOUT = 20;
     private static final String EXPECTED_EXCEPTION = "expected exception";
 
     @Mock
@@ -83,9 +80,9 @@ public class StepTest {
     private ActorService actors;
 
     private CompletableFuture<OperationOutcome> future;
-    private Target target;
+    private OperationalTarget target;
+    private Map<String, String> entityIds;
     private Map<String, String> payload;
-    private Policy policy;
     private VirtualControlLoopEvent event;
     private ControlLoopEventContext context;
     private BlockingQueue<OperationOutcome> starts;
@@ -109,19 +106,14 @@ public class StepTest {
         when(policyOperator.buildOperation(any())).thenReturn(policyOperation);
         when(policyOperation.start()).thenReturn(future);
 
-        target = new Target();
-        target.setType(TargetType.VM);
+        entityIds = Map.of("entity-name-A", "entity-value-A");
 
-        payload = Map.of(PAYLOAD_KEY, PAYLOAD_VALUE);
+        target = OperationalTarget.builder()
+                        .targetType(ControlLoopTargetType.VM)
+                        .entityIds(entityIds)
+                        .build();
 
-        policy = new Policy();
-        policy.setId(POLICY_ID);
-        policy.setActor(POLICY_ACTOR);
-        policy.setRecipe(POLICY_OPERATION);
-        policy.setTarget(target);
-        policy.setPayload(payload);
-        policy.setRetry(POLICY_RETRY);
-        policy.setTimeout(POLICY_TIMEOUT);
+        payload = Map.of(PAYLOAD_KEY, PAYLOAD_VALUE);
 
         event = new VirtualControlLoopEvent();
         event.setRequestId(REQ_ID);
@@ -136,7 +128,8 @@ public class StepTest {
         params = ControlLoopOperationParams.builder().actor(POLICY_ACTOR).actorService(actors)
                         .completeCallback(completions::add).context(context).executor(ForkJoinPool.commonPool())
                         .operation(POLICY_OPERATION).payload(new TreeMap<>(payload)).startCallback(starts::add)
-                        .target(target).targetEntity(MY_TARGET).build();
+                        .targetType(TargetType.valueOf(target.getTargetType())).targetEntityIds(target.getEntityIds())
+                        .targetEntity(MY_TARGET).build();
 
         startTime = new AtomicReference<>();
 
@@ -171,7 +164,8 @@ public class StepTest {
         assertEquals("operB", params2.getOperation());
         assertNull(params2.getRetry());
         assertNull(params2.getTimeoutSec());
-        assertSame(target, params2.getTarget());
+        assertEquals(target.getTargetType().toString(), params2.getTargetType().toString());
+        assertSame(entityIds, params2.getTargetEntityIds());
         assertEquals(MY_TARGET, params2.getTargetEntity());
         assertTrue(params2.getPayload().isEmpty());
 
@@ -257,7 +251,7 @@ public class StepTest {
         OperationOutcome outcome = completions.poll();
         assertNotNull(outcome);
 
-        assertNotEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertNotEquals(OperationResult.SUCCESS, outcome.getResult());
         assertEquals(POLICY_ACTOR, outcome.getActor());
         assertTrue(outcome.isFinalOutcome());
     }
@@ -276,7 +270,7 @@ public class StepTest {
         OperationOutcome outcome = completions.poll();
         assertNotNull(outcome);
 
-        assertNotEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertNotEquals(OperationResult.SUCCESS, outcome.getResult());
         assertEquals(POLICY_ACTOR, outcome.getActor());
         assertTrue(outcome.isFinalOutcome());
     }
@@ -318,7 +312,7 @@ public class StepTest {
         OperationOutcome outcome = completions.poll();
         assertNotNull(outcome);
 
-        assertNotEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertNotEquals(OperationResult.SUCCESS, outcome.getResult());
         assertEquals(POLICY_ACTOR, outcome.getActor());
         assertTrue(outcome.isFinalOutcome());
         assertEquals(POLICY_OPERATION, outcome.getOperation());
@@ -348,7 +342,7 @@ public class StepTest {
         // verify that the future was cancelled
         assertTrue(future.isCancelled());
 
-        assertNotEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertNotEquals(OperationResult.SUCCESS, outcome.getResult());
         assertEquals(ActorConstants.CL_TIMEOUT_ACTOR, outcome.getActor());
         assertTrue(outcome.isFinalOutcome());
         assertNull(outcome.getOperation());
index 1031c86..0ca9872 100644 (file)
@@ -30,7 +30,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
-import java.nio.file.Paths;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
@@ -38,9 +37,9 @@ import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.resources.ResourceUtils;
 import org.onap.policy.controlloop.ControlLoopException;
-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.controlloop.actorserviceprovider.OperationFinalResult;
+import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
+import org.onap.policy.drools.domain.models.operational.Operation;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 import org.slf4j.Logger;
@@ -52,8 +51,7 @@ public class ControlLoopProcessorTest {
 
     @Test
     public void testControlLoopProcessor() throws IOException, ControlLoopException {
-        InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
-        String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+        String yamlString = Files.readString(new File("src/test/resources/test.yaml").toPath(), StandardCharsets.UTF_8);
         this.testSuccess(yamlString);
         this.testFailure(yamlString);
     }
@@ -116,18 +114,18 @@ public class ControlLoopProcessorTest {
         String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
         assertThatThrownBy(() -> new ControlLoopProcessor(yamlString))
-            .hasMessageStartingWith("Cannot create property=string for JavaBean=ControlLoopPolicy");
+            .hasMessageEndingWith("Cannot decode yaml into ToscaServiceTemplate");
     }
 
     @Test
     public void testControlLoopProcessorBadTriggerYaml() throws IOException, ControlLoopException {
-        InputStream is = new FileInputStream(new File("src/test/resources/badtriggerpolicy.yaml"));
-        String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+        String yamlString = Files.readString(new File("src/test/resources/badtriggerpolicy.yaml").toPath(),
+                        StandardCharsets.UTF_8);
 
         ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
         assertNull(clProcessor.getCurrentPolicy());
 
-        assertThatThrownBy(() -> clProcessor.nextPolicyForResult(PolicyResult.SUCCESS))
+        assertThatThrownBy(() -> clProcessor.nextPolicyForResult(OperationResult.SUCCESS))
             .hasMessageStartingWith("There is no current policy to determine where to go to.");
     }
 
@@ -146,12 +144,12 @@ public class ControlLoopProcessorTest {
         InputStream is = new FileInputStream(new File("src/test/resources/test.yaml"));
         String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
 
-        for (PolicyResult result : PolicyResult.values()) {
+        for (OperationResult result : OperationResult.values()) {
             checkResult(yamlString, result);
         }
     }
 
-    private void checkResult(String yamlString, PolicyResult result) throws ControlLoopException {
+    private void checkResult(String yamlString, OperationResult result) throws ControlLoopException {
         ControlLoopProcessor clProcessor = new ControlLoopProcessor(yamlString);
         clProcessor.getCurrentPolicy();
         clProcessor.nextPolicyForResult(result);
@@ -165,17 +163,17 @@ public class ControlLoopProcessorTest {
      */
     public void testSuccess(String yaml) throws ControlLoopException {
         ControlLoopProcessor processor = new ControlLoopProcessor(yaml);
-        logger.debug("testSuccess: {}", processor.getControlLoop());
+        logger.debug("testSuccess: {}", processor.getCurrentPolicy());
         while (true) {
-            FinalResult result = processor.checkIsCurrentPolicyFinal();
+            OperationFinalResult result = processor.checkIsCurrentPolicyFinal();
             if (result != null) {
                 logger.debug("{}", result);
                 break;
             }
-            Policy policy = processor.getCurrentPolicy();
+            Operation policy = processor.getCurrentPolicy();
             assertNotNull(policy);
-            logger.debug("current policy is: {} {}", policy.getId(), policy.getName());
-            processor.nextPolicyForResult(PolicyResult.SUCCESS);
+            logger.debug("current policy is: {}", policy.getId());
+            processor.nextPolicyForResult(OperationResult.SUCCESS);
         }
     }
 
@@ -187,17 +185,17 @@ public class ControlLoopProcessorTest {
      */
     public void testFailure(String yaml) throws ControlLoopException {
         ControlLoopProcessor processor = new ControlLoopProcessor(yaml);
-        logger.debug("testFailure: {}", processor.getControlLoop());
+        logger.debug("testFailure: {}", processor.getCurrentPolicy());
         while (true) {
-            FinalResult result = processor.checkIsCurrentPolicyFinal();
+            OperationFinalResult result = processor.checkIsCurrentPolicyFinal();
             if (result != null) {
                 logger.debug("{}", result);
                 break;
             }
-            Policy policy = processor.getCurrentPolicy();
+            Operation policy = processor.getCurrentPolicy();
             assertNotNull(policy);
-            logger.debug("current policy is: {} {}", policy.getId(), policy.getName());
-            processor.nextPolicyForResult(PolicyResult.FAILURE);
+            logger.debug("current policy is: {}", policy.getId());
+            processor.nextPolicyForResult(OperationResult.FAILURE);
         }
     }
 }
index c590741..9e29af5 100644 (file)
@@ -24,8 +24,6 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import org.junit.Test;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.resources.ResourceUtils;
index 8044c9e..e4db8c6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 AT&T Intellectual Property. All rights reserved
+# Copyright 2018, 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.
 # 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.
-controlLoop:
-  version: 1.0.0
-  controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
-  services: 
-    - serviceName: service1
-  resources: 
-    - resourceName: resource1
-      resourceType: VF
-    - resourceName: resource2
-      resourceType: VF
-    - resourceName: resource3
-      resourceType: VF
-    - resourceName: resource4
-      resourceType: VF
-    - resourceName: resource5
-      resourceType: VF
-  trigger_policy: a-policy-that-does-not-exist
-  timeout: 60
-
-policies:
-  - id: unique-policy-id-1-restart
-    name: Restart Policy
-    description:
-    actor: APPC
-    recipe: Restart
-    target:
-      type: VNF
-    retry: 1
-    timeout: 20
-    success: final_success
-    failure: unique-policy-id-2-rebuild
-    failure_timeout: unique-policy-id-2-rebuild
-    failure_retries: unique-policy-id-2-rebuild
-    failure_exception: final_failure_exception
-  
-  - id: unique-policy-id-2-rebuild
-    name: Rebuild Policy
-    description:
-    actor: APPC
-    recipe: Rebuild
-    target: VM
-    retry: 0
-    timeout: 10
-    success: final_success
-    failure: unique-policy-id-3-migrate
-    failure_timeout: unique-policy-id-3-migrate
-    failure_retries: unique-policy-id-3-migrate
-    failure_exception: final_failure_exception
-  
-  - id: unique-policy-id-3-migrate
-    name: Migrate Policy
-    description:
-    actor: APPC
-    recipe: Migrate
-    target: VM
-    retry: 0
-    timeout: 30
-    success: final_success
-    failure: final_failure
-    failure_timeout: final_failure_timeout
-    failure_retries: final_failure_retries
-    failure_exception: final_failure_exception
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+    policies:
+    -   operational.scaleout:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            version: 1.0.0
+            name: operational.scaleout
+            metadata:
+                policy-id: operational.scaleout
+            properties:
+                id: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+                timeout: 1200
+                abatement: false
+                trigger: a-policy-id-that-does-not-exist
+                operations:
+                -   id: unique-policy-id-1-scale-up
+                    description: Create a new VF Module
+                    operation:
+                        actor: SO
+                        operation: VF Module Create
+                        target:
+                            targetType: VFMODULE
+                            entityIds:
+                                modelInvariantId: e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e
+                                modelVersionId: 94b18b1d-cc91-4f43-911a-e6348665f292
+                                modelName: VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0
+                                modelVersion: "1"
+                                modelCustomizationId: 47958575-138f-452a-8c8d-d89b595f8164
+                        payload:
+                            requestParameters: '{"usePreload":true,"userParams":[]}'
+                            configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[9]","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[16]","enabled":"$.vf-module-topology.vf-module-parameters.param[23]"}]'
+                    timeout: 1200
+                    retries: 0
+                    success: final_success
+                    failure: final_failure
+                    failure_timeout: final_failure_timeout
+                    failure_retries: final_failure_retries
+                    failure_exception: final_failure_exception
+                    failure_guard: final_failure_guard
+                controllerName: frankfurt
index 85f8aeb..f69299e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 AT&T Intellectual Property. All rights reserved
+# Copyright 2018, 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.
 # 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.
-controlLoop:
-  version: 1.0.0
-  controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
-  services: 
-    - serviceName: service1
-  resources: 
-    - resourceName: resource1
-      resourceType: VF
-    - resourceName: resource2
-      resourceType: VF
-    - resourceName: resource3
-      resourceType: VF
-    - resourceName: resource4
-      resourceType: VF
-    - resourceName: resource5
-      resourceType: VF
-  trigger_policy: a-policy-that-does-not-exist
-  timeout: 60
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+    policies:
+    -   operational.scaleout:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            version: 1.0.0
+            name: operational.scaleout
+            metadata:
+                policy-id: operational.scaleout
+            properties:
+                id: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+                timeout: 1200
+                abatement: false
+                trigger: unique-policy-id-1-scale-up
+                operations: []
+                controllerName: frankfurt
index aac390c..02d51e2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 AT&T Intellectual Property. All rights reserved
+# Copyright 2018, 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.
 # 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.
-controlLoop:
-  version: 1.0.0
-  controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
-  services: 
-    - serviceName: service1
-  resources: 
-    - resourceName: resource1
-      resourceType: VF
-    - resourceName: resource2
-      resourceType: VF
-    - resourceName: resource3
-      resourceType: VF
-    - resourceName: resource4
-      resourceType: VF
-    - resourceName: resource5
-      resourceType: VF
-  trigger_policy: unique-policy-id-1-restart
-  timeout: 60
-
-policies:
-  - id: unique-policy-id-1-restart
-    name: Restart Policy
-    description:
-    actor: APPC
-    recipe: Restart
-    target:
-      type: VNF
-    retry: 1
-    timeout: 20
-    success: final_success
-    failure: unique-policy-id-2-rebuild
-    failure_timeout: unique-policy-id-2-rebuild
-    failure_retries: unique-policy-id-2-rebuild
-    failure_exception: final_failure_exception
-  
-  - id: unique-policy-id-2-rebuild
-    name: Rebuild Policy
-    description:
-    actor: APPC
-    recipe: Rebuild
-    target: VM
-    retry: 0
-    timeout: 10
-    success: final_success
-    failure: unique-policy-id-3-migrate
-    failure_timeout: unique-policy-id-3-migrate
-    failure_retries: unique-policy-id-3-migrate
-    failure_exception: final_failure_exception
-  
-  - id: unique-policy-id-3-migrate
-    name: Migrate Policy
-    description:
-    actor: APPC
-    recipe: Migrate
-    target: VM
-    retry: 0
-    timeout: 30
-    success: final_success
-    failure: final_failure
-    failure_timeout: final_failure_timeout
-    failure_retries: final_failure_retries
-    failure_exception: final_failure_exception
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+    policies:
+    -   operational.scaleout:
+            type: onap.policies.controlloop.operational.common.Drools
+            type_version: 1.0.0
+            version: 1.0.0
+            name: operational.scaleout
+            metadata:
+                policy-id: operational.scaleout
+            properties:
+                id: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
+                timeout: 1200
+                abatement: false
+                trigger: unique-policy-id-1-scale-up
+                operations:
+                -   id: unique-policy-id-1-scale-up
+                    description: Create a new VF Module
+                    operation:
+                        actor: SO
+                        operation: VF Module Create
+                        target:
+                            targetType: VFMODULE
+                            entityIds:
+                                modelInvariantId: e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e
+                                modelVersionId: 94b18b1d-cc91-4f43-911a-e6348665f292
+                                modelName: VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0
+                                modelVersion: "1"
+                                modelCustomizationId: 47958575-138f-452a-8c8d-d89b595f8164
+                        payload:
+                            requestParameters: '{"usePreload":true,"userParams":[]}'
+                            configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[9]","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[16]","enabled":"$.vf-module-topology.vf-module-parameters.param[23]"}]'
+                    timeout: 1200
+                    retries: 0
+                    success: final_success
+                    failure: final_failure
+                    failure_timeout: final_failure_timeout
+                    failure_retries: final_failure_retries
+                    failure_exception: final_failure_exception
+                    failure_guard: final_failure_guard
+                controllerName: frankfurt
index 2fcb0de..0b2f590 100644 (file)
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>org.onap.policy.models.policy-models-interactions</groupId>
-            <artifactId>model-yaml</artifactId>
-            <version>${policy.models.version}</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>guava</artifactId>
-                    <groupId>com.google.guava</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>snakeyaml</artifactId>
-                    <groupId>org.yaml</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
         <dependency>
             <groupId>org.onap.policy.drools-pdp</groupId>
             <artifactId>policy-management</artifactId>
index 11e99e9..734282e 100644 (file)
@@ -25,7 +25,6 @@ import org.onap.policy.controlloop.CanonicalOnset;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.VirtualControlLoopNotification;
 import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2;
 import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager2.NewEventStatus;
 import org.onap.policy.controlloop.eventmanager.ControlLoopOperationManager2;