From 9641684f3084e3e6a0ce8b8594258c25c1092c2d Mon Sep 17 00:00:00 2001 From: "Hockla, Ali (ah999m)" Date: Tue, 5 Sep 2017 14:01:04 -0500 Subject: Added changes for vDNS Use Case - MSO Interface Rebased and fixed merge conflicts Issue-ID: POLICY-102 Change-Id: Icc36a2cf6391aa9137593bc04f0d4543798b7ccd Signed-off-by: Ali Hockla Signed-off-by: Hockla, Ali (ah999m) Signed-off-by: HOCKLA Signed-off-by: Hockla, Ali (ah999m) --- .../resources/ControlLoop_Template_xacml_guard.drl | 114 +++++++++++++++++++++ 1 file changed, 114 insertions(+) (limited to 'controlloop/templates/template.demo/src/main') diff --git a/controlloop/templates/template.demo/src/main/resources/ControlLoop_Template_xacml_guard.drl b/controlloop/templates/template.demo/src/main/resources/ControlLoop_Template_xacml_guard.drl index aa1f1e977..f832ea5e2 100644 --- a/controlloop/templates/template.demo/src/main/resources/ControlLoop_Template_xacml_guard.drl +++ b/controlloop/templates/template.demo/src/main/resources/ControlLoop_Template_xacml_guard.drl @@ -39,6 +39,18 @@ import org.onap.policy.appclcm.LCMResponse; import org.onap.policy.appclcm.LCMCommonHeader; import org.onap.policy.vfc.VFCRequest; import org.onap.policy.vfc.VFCManager; +import org.onap.policy.mso.SOManager; +import org.onap.policy.mso.SORequest; +import org.onap.policy.mso.SORequestStatus; +import org.onap.policy.mso.SORequestDetails; +import org.onap.policy.mso.SOModelInfo; +import org.onap.policy.mso.SOCloudConfiguration; +import org.onap.policy.mso.SORequestInfo; +import org.onap.policy.mso.SORequestParameters; +import org.onap.policy.mso.SORelatedInstanceListElement; +import org.onap.policy.mso.SORelatedInstance; +import org.onap.policy.mso.SOResponse; +import org.onap.policy.controlloop.actor.mso.MSOActorServiceProvider; import org.onap.policy.guard.PolicyGuard; import org.onap.policy.guard.PolicyGuard.LockResult; import org.onap.policy.guard.TargetLock; @@ -499,6 +511,15 @@ rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED" Engine.deliver("UEB", "APPC-CL", request); } break; + case "SO": + // at this point the AAI named query request should have already been made, the response recieved and used + // in the construction of the SO Request which is stored in operationRequest + + if(request instanceof SORequest) { + // Call SO. The response will be inserted into memory once it's received + MSOActorServiceProvider.sendRequest(drools.getWorkingMemory(), request); + } + break; case "VFC": if (request instanceof VFCRequest) { // Start VFC thread @@ -892,6 +913,99 @@ rule "${policyName}.APPC.LCM.RESPONSE.CLEANUP" retract($response); end +/* +* +* This rule responds to SO Response Events +* +*/ +rule "${policyName}.SO.RESPONSE" + when + $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) + $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET ) + $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName ) + $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) + $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) + $lock : TargetLock (requestID == $event.requestID) + $request : SORequest( requestId == $event.requestID.toString() ) + $response : SOResponse( request.requestId == $event.requestID.toString() ) + then + + // + // Logging + Logger.info("------------------------------------------------------------------------------------------------"); + Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); + Logger.metrics($params); + Logger.metrics($event); + Logger.metrics($manager); + Logger.metrics($operation); + Logger.metrics($opTimer); + Logger.metrics($lock); + Logger.metrics($response); + + // Get the result of the operation + // + PolicyResult policyResult = $operation.onResponse($response); + if (policyResult != null) { + // + // This Operation has completed, construct a notification showing our results + // + VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event); + notification.from = "policy"; + notification.policyName = drools.getRule().getName(); + notification.policyScope = "${policyScope}"; + notification.policyVersion = "${policyVersion}"; + notification.message = $operation.getOperationHistory(); + notification.history = $operation.getHistory(); + if (policyResult.equals(PolicyResult.SUCCESS)) { + notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS; + // + // Let interested parties know + // + Engine.deliver("UEB", "POLICY-CL-MGT", notification); + } else { + notification.notification = ControlLoopNotificationType.OPERATION_FAILURE; + // + // Let interested parties know + // + Engine.deliver("UEB", "POLICY-CL-MGT", notification); + } + // + // Ensure the operation is complete + // + if ($operation.isOperationComplete() == true) { + // + // It is complete, remove it from memory + // + retract($operation); + // + // We must also retract the timer object + // NOTE: We could write a Rule to do this + // + retract($opTimer); + // + // Complete the operation + // + modify($manager) {finishOperation($operation)}; + } else { + // + // Just doing this will kick off the LOCKED rule again + // + modify($operation) {}; + } + } else { + // + // Its not finished yet (i.e. expecting more Response objects) + // + // Or possibly it is a leftover response that we timed the request out previously + // + } + // + // We are going to retract these objects from memory + // + retract($response); + +end + /* * * This is the timer that manages the timeout for an individual operation. -- cgit 1.2.3-korg