/*-
* ============LICENSE_START=======================================================
- * demo
+ * archetype-closed-loop-demo-rules
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* ============LICENSE_END=========================================================
*/
-
-package org.openecomp.policy.controlloop;
+package org.onap.policy.controlloop;
import java.util.List;
import java.util.LinkedList;
import java.util.HashMap;
import java.util.UUID;
-import org.openecomp.policy.controlloop.VirtualControlLoopEvent;
-import org.openecomp.policy.controlloop.ControlLoopEventStatus;
-import org.openecomp.policy.controlloop.VirtualControlLoopNotification;
-import org.openecomp.policy.controlloop.ControlLoopNotificationType;
-import org.openecomp.policy.controlloop.ControlLoopOperation;
-import org.openecomp.policy.controlloop.ControlLoopOperationWrapper;
-import org.openecomp.policy.template.demo.ControlLoopException;
+import org.onap.policy.controlloop.VirtualControlLoopEvent;
+import org.onap.policy.controlloop.ControlLoopEventStatus;
+import org.onap.policy.controlloop.VirtualControlLoopNotification;
+import org.onap.policy.controlloop.ControlLoopNotificationType;
+import org.onap.policy.controlloop.ControlLoopOperation;
+import org.onap.policy.controlloop.ControlLoopOperationWrapper;
+import org.onap.policy.controlloop.ControlLoopException;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199CloudRegion;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperties;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperty;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199GenericVNF;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InstanceFilters;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Manager;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199NamedQuery;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199QueryParameters;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Request;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199RequestWrapper;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Response;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ServiceInstance;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Tenant;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199VfModule;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199VServer;
-import org.openecomp.policy.aai.util.Serialization;
+import org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;
+import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;
+import org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;
+import org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;
+import org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;
+import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
+import org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
+import org.onap.policy.aai.AAINQF199.AAINQF199Manager;
+import org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;
+import org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;
+import org.onap.policy.aai.AAINQF199.AAINQF199Request;
+import org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;
+import org.onap.policy.aai.AAINQF199.AAINQF199Response;
+import org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
+import org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;
+import org.onap.policy.aai.AAINQF199.AAINQF199Tenant;
+import org.onap.policy.aai.AAINQF199.AAINQF199VfModule;
+import org.onap.policy.aai.AAINQF199.AAINQF199VServer;
+import org.onap.policy.aai.util.Serialization;
-import org.openecomp.policy.appc.CommonHeader;
-import org.openecomp.policy.appc.Request;
-import org.openecomp.policy.appc.Response;
-import org.openecomp.policy.appc.ResponseCode;
-import org.openecomp.policy.appc.ResponseStatus;
-import org.openecomp.policy.appc.ResponseValue;
+import org.onap.policy.appc.CommonHeader;
+import org.onap.policy.appc.Request;
+import org.onap.policy.appc.Response;
+import org.onap.policy.appc.ResponseCode;
+import org.onap.policy.appc.ResponseStatus;
+import org.onap.policy.appc.ResponseValue;
-import org.openecomp.policy.template.demo.EventManager;
-import org.openecomp.policy.vnf.trafficgenerator.PGRequest;
-import org.openecomp.policy.vnf.trafficgenerator.PGStream;
-import org.openecomp.policy.vnf.trafficgenerator.PGStreams;
+import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager;
+import org.onap.policy.vnf.trafficgenerator.PGRequest;
+import org.onap.policy.vnf.trafficgenerator.PGStream;
+import org.onap.policy.vnf.trafficgenerator.PGStreams;
-import org.openecomp.policy.mso.MSOManager;
-import org.openecomp.policy.mso.MSORequest;
-import org.openecomp.policy.mso.MSORequestStatus;
-import org.openecomp.policy.mso.MSORequestDetails;
-import org.openecomp.policy.mso.MSOModelInfo;
-import org.openecomp.policy.mso.MSOCloudConfiguration;
-import org.openecomp.policy.mso.MSORequestInfo;
-import org.openecomp.policy.mso.MSORequestParameters;
-import org.openecomp.policy.mso.MSORelatedInstanceListElement;
-import org.openecomp.policy.mso.MSORelatedInstance;
-import org.openecomp.policy.mso.MSOResponse;
+import org.onap.policy.mso.MSOManager;
+import org.onap.policy.mso.MSORequest;
+import org.onap.policy.mso.MSORequestStatus;
+import org.onap.policy.mso.MSORequestDetails;
+import org.onap.policy.mso.MSOModelInfo;
+import org.onap.policy.mso.MSOCloudConfiguration;
+import org.onap.policy.mso.MSORequestInfo;
+import org.onap.policy.mso.MSORequestParameters;
+import org.onap.policy.mso.MSORelatedInstanceListElement;
+import org.onap.policy.mso.MSORelatedInstance;
+import org.onap.policy.mso.MSOResponse;
//import org.openecomp.policy.drools.system.PolicyEngine;
/*
*
* Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ECOMP opensource release since policy BRMS_GW already puts a Params fact in there)
+* NOTE: If this file is to be used as a template to be used with the policy BRMS GW, please comment out this line
+* as the BRMS_GW already generates a SETUP rule
*
*/
rule "${policyName}.SETUP"
insert(params);
end
+
/*
*
* This rule responds to DCAE Events
when
$params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
+ not ( ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName ))
then
System.out.println("rule EVENT is triggered.");
try {
//
// Create an EventManager
//
- EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
+ ControlLoopEventManager manager = new ControlLoopEventManager($params.getClosedLoopControlName(), $event.requestID);
//
// Determine if EventManager can actively process the event (i.e. syntax)
//
when
$params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
+ $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
then
System.out.println("rule EVENT.MANAGER is triggered.");
//
// Check which event this is.
//
- EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
+ ControlLoopEventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
//
// We only want the initial ONSET event in memory,
// all the other events need to be retracted to support
// cleanup and avoid the other rules being fired for this event.
//
- if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
+ if (eventStatus != ControlLoopEventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
System.out.println("Retracting "+eventStatus+" Event.");
retract($event);
return;
when
$params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+ $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
then
System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
+
//
// Check AAI response
//
when
$params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+ $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
$aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
$aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
then
//
// Extract related fields out of AAINQF199RESPONSE
//
- //
String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName,
vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemPersonaModelVersion;
+ relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;
relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
//
request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
+
//////////////////////////////////////////////////////////
// Simulate a valid MSOResponse for junit test
// Remove this for real deployment
when
$params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+ $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
$request : Request( getCommonHeader().RequestID == $event.requestID )
$response : Response( getCommonHeader().RequestID == $event.requestID )
when
$params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
$event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
+ $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName )
$operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
$request : MSORequest( requestId == $event.requestID.toString() )
$response : MSOResponse( request.requestId == $event.requestID.toString() )
retract($response);
retract($event);
retract($manager);
- }
-
-end
+ }
+end
+
+/*
+ * Sample Queries for illustration with and without arguments
+ * The results of the query can be introspected (and retracted if desired)
+ * through REST API.
+ */
+query "${policyName}.QUERY.EVENT.ONSET"
+ event : VirtualControlLoopEvent( closedLoopEventStatus == ControlLoopEventStatus.ONSET )
+end
+
+query "${policyName}.QUERY.MANAGER.RNA" (String aRequestId, Integer numOnsetsLowerBound, Boolean aActivated)
+ manager : ControlLoopEventManager( closedLoopControlName == "${closedLoopControlName}",
+ requestID.toString() == aRequestId,
+ numOnsets > numOnsetsLowerBound,
+ activated == aActivated )
+end