summaryrefslogtreecommitdiffstats
path: root/controlloop/common/eventmanager/src/main/java
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-05-22 16:05:16 -0400
committerJim Hahn <jrh3@att.com>2020-05-22 16:17:14 -0400
commit18486d18e1a684cd4df27b335f565c1d985d4f06 (patch)
tree54fa608487ee43aa88a06ab0fd51ddad38b7bbdd /controlloop/common/eventmanager/src/main/java
parent7e6f32d775b8455e5c8f0c244ef0fb8324ce2b7a (diff)
Generate SDNR notification even on timeout
If a request to SDNR times out, the actor class does not generate a notification for the DCAE_CL_RSP topic. Rather than modifying the actor, decided to modify models to handle that case. Seems like that's where it belongs anyway, as notifications are more of an application- level behavior. Issue-ID: POLICY-2580 Change-Id: Id9426c223b719efce337a604316f19335dae8a94 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'controlloop/common/eventmanager/src/main/java')
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java33
1 files changed, 32 insertions, 1 deletions
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
index 9ef892e14..3f7aca6e0 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager2.java
@@ -42,6 +42,7 @@ 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.VirtualControlLoopEvent;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
@@ -514,7 +515,7 @@ public class ControlLoopOperationManager2 implements Serializable {
*/
state = (outcome.getResult() == PolicyResult.SUCCESS ? State.OPERATION_SUCCESS
: State.OPERATION_FAILURE);
- controlLoopResponse = outcome.getControlLoopResponse();
+ controlLoopResponse = makeControlLoopResponse(outcome.getControlLoopResponse());
if (!operationHistory.isEmpty() && operationHistory.peekLast().getClOperation().getEnd() == null) {
operationHistory.removeLast();
}
@@ -530,6 +531,36 @@ public class ControlLoopOperationManager2 implements Serializable {
}
/**
+ * Makes a control loop response.
+ *
+ * @param source original control loop response or {@code null}
+ * @return a new control loop response, or {@code null} none is required
+ */
+ protected ControlLoopResponse makeControlLoopResponse(ControlLoopResponse source) {
+ if (source != null) {
+ return source;
+ }
+
+ // only generate response for certain actors.
+ if (!actor.equals("SDNR")) {
+ return null;
+ }
+
+ VirtualControlLoopEvent event = eventContext.getEvent();
+
+ ControlLoopResponse clRsp = new ControlLoopResponse();
+ clRsp.setFrom(actor);
+ clRsp.setTarget("DCAE");
+ clRsp.setClosedLoopControlName(event.getClosedLoopControlName());
+ clRsp.setPolicyName(event.getPolicyName());
+ clRsp.setPolicyVersion(event.getPolicyVersion());
+ clRsp.setRequestId(event.getRequestId());
+ clRsp.setVersion(event.getVersion());
+
+ return clRsp;
+ }
+
+ /**
* Get the operation, as a message.
*
* @return the operation, as a message