Add SDNR notifications to frankfurt rules 63/105563/1
authorJim Hahn <jrh3@att.com>
Wed, 8 Apr 2020 18:40:37 +0000 (14:40 -0400)
committerJim Hahn <jrh3@att.com>
Wed, 8 Apr 2020 19:15:46 +0000 (15:15 -0400)
Issue-ID: POLICY-2468
Change-Id: Ibf4d3e5f62fa3106028dcf85050c270b8eab0a89
Signed-off-by: Jim Hahn <jrh3@att.com>
controlloop/common/controller-frankfurt/src/main/resources/frankfurt.drl
controlloop/common/controller-frankfurt/src/test/resources/config/event-manager.properties
controlloop/common/controller-frankfurt/src/test/resources/config/frankfurt-controller.properties
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/feature-controlloop-management/src/main/feature/config/event-manager.properties

index 00c4f5f..f54786d 100644 (file)
@@ -243,6 +243,20 @@ rule "EVENT.MANAGER.PROCESSING"
                 $manager, e);
     }
     //
+    // Generate Response notification
+    //
+    try {
+        ControlLoopResponse clResponse = $manager.getControlLoopResponse();
+        if (clResponse != null) {
+            PolicyEngineConstants.getManager().deliver("DCAE_CL_RSP", clResponse);
+        }
+
+    } catch(RuntimeException e) {
+        logger.warn("{}: {}.{}: manager={} exception generating Response notification",
+                $manager.getClosedLoopControlName(), $manager.getPolicyName(), drools.getRule().getName(),
+                $manager, e);
+    }
+    //
     // Discard this message and wait for the next response.
     //
     $manager.nextStep();
index e5bd83c..384346e 100644 (file)
@@ -67,7 +67,7 @@ actor.service.SDNC.operations.Reroute.path=\
 
 actor.service.SDNR.sinkTopic=SDNR-CL
 actor.service.SDNR.sourceTopic=SDNR-CL-RSP
-actor.service.SDNR.operations.ModifyConfig.placeholder=
+actor.service.SDNR.operations.any.placeholder=
 
 actor.service.SO.clientName=SO
 actor.service.SO.pathGet=orchestrationRequests/v5/
index 8ed43c4..2839e0d 100644 (file)
@@ -53,10 +53,13 @@ noop.source.topics.POLICY-CL-MGT.events.custom.gson=org.onap.policy.controlloop.
 noop.source.topics.APPC-LCM-READ.events=org.onap.policy.appclcm.AppcLcmDmaapWrapper
 noop.source.topics.APPC-LCM-READ.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson
 
-noop.sink.topics=APPC-CL,APPC-LCM-READ,POLICY-CL-MGT,SDNR-CL
+noop.sink.topics=APPC-CL,APPC-LCM-READ,POLICY-CL-MGT,SDNR-CL,DCAE_CL_RSP
 
 noop.sink.topics.POLICY-CL-MGT.events=org.onap.policy.controlloop.VirtualControlLoopNotification
 noop.sink.topics.POLICY-CL-MGT.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty
 
 noop.sink.topics.SDNR-CL.events=org.onap.policy.sdnr.PciRequestWrapper
 noop.sink.topics.SDNR-CL.events.custom.gson=org.onap.policy.sdnr.util.Serialization,gson
+
+noop.sink.topics.DCAE_CL_RSP.events=org.onap.policy.controlloop.ControlLoopResponse
+noop.sink.topics.DCAE_CL_RSP.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty
index cc54b73..c79737a 100644 (file)
@@ -49,6 +49,7 @@ import org.onap.policy.controlloop.ControlLoopEventStatus;
 import org.onap.policy.controlloop.ControlLoopException;
 import org.onap.policy.controlloop.ControlLoopNotificationType;
 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.ActorService;
@@ -146,6 +147,8 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
 
     @Getter
     private VirtualControlLoopNotification notification;
+    @Getter
+    private ControlLoopResponse controlLoopResponse;
 
     @Getter
     private boolean updated = false;
@@ -225,6 +228,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
 
         logger.info("final={} oper state={} for {}", finalResult, currentOperation.get().getState(), requestId);
 
+        controlLoopResponse = null;
         notification = makeNotification();
         notification.setHistory(controlLoopHistory);
 
@@ -268,6 +272,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
             // processor problem - this is fatal
             logger.warn("{}: cannot start next step for {}", closedLoopControlName, requestId, e);
             finalResult = FinalResult.FINAL_FAILURE_EXCEPTION;
+            controlLoopResponse = null;
             notification = makeNotification();
             notification.setNotification(ControlLoopNotificationType.FINAL_FAILURE);
             notification.setMessage("Policy processing aborted due to policy error");
@@ -296,6 +301,7 @@ public class ControlLoopEventManager2 implements ManagerContext, Serializable {
             return;
         }
 
+        controlLoopResponse = operation.getControlLoopResponse();
         notification = makeNotification();
 
         VirtualControlLoopEvent event = context.getEvent();
index a096522..9d7ca58 100644 (file)
@@ -41,6 +41,7 @@ import lombok.ToString;
 import org.onap.policy.aai.AaiConstants;
 import org.onap.policy.aai.AaiCqResponse;
 import org.onap.policy.controlloop.ControlLoopOperation;
+import org.onap.policy.controlloop.ControlLoopResponse;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
@@ -137,6 +138,9 @@ public class ControlLoopOperationManager2 implements Serializable {
     private final transient ControlLoopOperationParams params;
     private final transient PipelineUtil taskUtil;
 
+    @Getter
+    private ControlLoopResponse controlLoopResponse;
+
     /**
      * Time when the lock was first requested.
      */
@@ -195,6 +199,7 @@ public class ControlLoopOperationManager2 implements Serializable {
         private int attempt;
         private PolicyResult policyResult;
         private ControlLoopOperation clOperation;
+        private ControlLoopResponse clResponse;
 
         /**
          * Constructs the object.
@@ -206,6 +211,7 @@ public class ControlLoopOperationManager2 implements Serializable {
             policyResult = outcome.getResult();
             clOperation = outcome.toControlLoopOperation();
             clOperation.setTarget(policy.getTarget().toString());
+            clResponse = outcome.getControlLoopResponse();
         }
     }
 
@@ -437,6 +443,7 @@ public class ControlLoopOperationManager2 implements Serializable {
         }
 
         if (outcome.isFinalOutcome() && outcome.isFor(actor, operation)) {
+            controlLoopResponse = null;
             return false;
         }
 
@@ -458,6 +465,8 @@ public class ControlLoopOperationManager2 implements Serializable {
         OperationOutcome outcome = outcomes.peek();
         logger.debug("process outcome={} for {}", outcome, requestId);
 
+        controlLoopResponse = null;
+
         switch (outcome.getActor()) {
 
             case CL_TIMEOUT_ACTOR:
@@ -501,6 +510,7 @@ public class ControlLoopOperationManager2 implements Serializable {
                  */
                 state = (outcome.getResult() == PolicyResult.SUCCESS ? State.OPERATION_SUCCESS
                                 : State.OPERATION_FAILURE);
+                controlLoopResponse = outcome.getControlLoopResponse();
                 if (!operationHistory.isEmpty() && operationHistory.peekLast().getClOperation().getEnd() == null) {
                     operationHistory.removeLast();
                 }
index 6f92531..8d770d7 100644 (file)
@@ -68,7 +68,7 @@ actor.service.SDNC.operations.Reroute.path=\
 
 actor.service.SDNR.sinkTopic=SDNR-CL
 actor.service.SDNR.sourceTopic=SDNR-CL-RSP
-actor.service.SDNR.operations.ModifyConfig.placeholder=
+actor.service.SDNR.operations.any.placeholder=
 
 actor.service.SO.clientName=SO
 actor.service.SO.pathGet=orchestrationRequests/v5/