Merge "Policy API support for Rainy Day Decision Policy"
authorJorge Hernandez <jh1730@att.com>
Thu, 28 Sep 2017 03:40:01 +0000 (03:40 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 28 Sep 2017 03:40:01 +0000 (03:40 +0000)
20 files changed:
BRMSGateway/config.properties
BRMSGateway/dependency.json
BRMSGateway/src/main/java/org/onap/policy/brmsInterface/BRMSPush.java
BRMSGateway/src/test/resources/config.properties
POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreatePolicyController.java
docs/platform/architecture.rst
docs/platform/offeredapis.rst
packages/base/src/files/install/mysql/data/161000_upgrade_script.sql
packages/base/src/files/install/mysql/data/171001_upgrade_script.sql
packages/base/src/files/install/servers/brmsgw/config.properties
packages/base/src/files/install/servers/brmsgw/dependency.json
packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml [deleted file]
packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml [deleted file]
packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vFirewall.1.xml [deleted file]
packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vLoadBalancer.1.xml [deleted file]
packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt [deleted file]
packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt [deleted file]
packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vFirewall.1.json [deleted file]
packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vLoadBalancer.1.json [deleted file]
packages/install/src/files/brmsgw.conf

index fa5f919..b17804b 100644 (file)
@@ -47,13 +47,11 @@ repositoryPassword=admin123
 policyKeyID = controller
 
 ## GroupNames can be comma separated values. 
-groupNames = default, vFW , vDNS
+groupNames = default, amsterdam
 default.groupID = org.onap.policy-engine
 default.artifactID = drlPDPGroup
-vFW.groupID= org.onap.policy-engine.drools.vFW
-vFW.artifactID= policy-vFW-rules
-vDNS.groupID= org.onap.policy-engine.drools.vDNS
-vDNS.artifactID= policy-vDNS-rules
+amsterdam.groupID= org.onap.policy-engine.drools.amsterdam
+amsterdam.artifactID= policy-amsterdam-rules
 
 #Integrity Monitor values
 #database driver for Integrity Monitor
index a883cc9..f758db0 100644 (file)
 {
-       "dependencies": {
-               "default": [{
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "demo",
-                       "version": "1.1.0-SNAPSHOT"
-               }, {
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "events",
-                       "version": "1.1.0-SNAPSHOT"
-               }, {
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "rest",
-                       "version": "1.1.0-SNAPSHOT"
-               }, {
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "appc",
-                       "version": "1.1.0-SNAPSHOT"
-               }, {
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "aai",
-                       "version": "1.1.0-SNAPSHOT"
-               }, {
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "mso",
-                       "version": "1.1.0-SNAPSHOT"
-               }, {
-                       "groupId": "org.onap.policy.drools-applications",
-                       "artifactId": "trafficgenerator",
-                       "version": "1.1.0-SNAPSHOT"
-               }]
-       }
+    "dependencies": {
+        "default": [{
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "demo",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "events",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "rest",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "aai",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "mso",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "trafficgenerator",
+            "version": "1.1.0-SNAPSHOT"
+        }],
+        "amsterdam": [{
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "events",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appclcm",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "vfc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "so",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "aai",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "sdc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "trafficgenerator",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "eventmanager",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "guard",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actorServiceProvider",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appclcm",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.so",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.vfc",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "policy-yaml",
+            "version": "1.1.0-SNAPSHOT"
+        }, {
+            "groupId": "com.att.research.xacml",
+            "artifactId": "xacml-pdp",
+            "version": "1.0.0"
+        }]
+    }
 }
\ No newline at end of file
index 6e8588a..266e090 100644 (file)
@@ -109,6 +109,7 @@ public class BRMSPush {
     private static final String[] GOALS = { "clean", "deploy" };
     private static final String DEFAULT_VERSION = "1.1.0-SNAPSHOT";
     private static final String DEPENDENCY_FILE = "dependency.json";
+    private static final String BRMSPERSISTENCE = "brmsEclipselink.persistencexml";
 
     private static Map<String, String> modifiedGroups = new HashMap<>();
     private static IntegrityMonitor im;
@@ -188,8 +189,10 @@ public class BRMSPush {
         } catch (Exception e) {
             LOGGER.error("Error starting BackUpMonitor: " + e);
         }
-        if(!config.containsKey(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML)){
+        if(!config.containsKey(BRMSPERSISTENCE)){
             config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistenceBRMS.xml");
+        } else {
+            config.setProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, config.getProperty(BRMSPERSISTENCE,"META-INF/persistenceBRMS.xml"));
         }
         EntityManagerFactory emf = Persistence.createEntityManagerFactory("BRMSGW", config);
         em = emf.createEntityManager();
index 4f9e013..8c46ec2 100644 (file)
@@ -65,7 +65,7 @@ javax.persistence.jdbc.user=sa
 #database password for Integrity Monitor
 javax.persistence.jdbc.password=
 #persistence xml
-eclipselink.persistencexml=META-INF/persistenceBRMStest.xml
+brmsEclipselink.persistencexml=META-INF/persistenceBRMStest.xml
 #resource name
 RESOURCE_NAME=site_1.brmsgw_1
 #***Properties for IntegrityMonitor integration defined in IntegrityMonitorProperties.java***
index 625b2bd..71d0b3d 100644 (file)
@@ -60,7 +60,7 @@ public class CreatePolicyController extends RestrictedBaseController{
                        policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName());
                        policyAdapter.setConfigType(entity.getConfigurationData().getConfigType());
                        policyAdapter.setConfigBodyData(entity.getConfigurationData().getConfigBody());
-                       String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf(' ') + 1);
+                       String policyNameValue = policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf('_') + 1);
                        policyAdapter.setPolicyName(policyNameValue);
                        String description = "";
                        try{
index fd46637..5351de2 100644 (file)
@@ -4,4 +4,91 @@
 
 Architecture
 ------------
-Describe the architecture and design of the platform component.
+POLICY is a subsystem of ONAP that maintains, distributes, and operates on the set of rules that underlie ONAP’s control, orchestration, and management functions. 
+
+POLICY provides a centralized environment, for the creation and management of conditional rules.  This provides the capability to **validate** policies and rules, **identify overlaps**, **resolve conflicts**, and derive additional policies as needed.  Policies are used to control, influence, and help **ensure compliance** with goals.  Policies can support infrastructure, products and services, operation automation, and security.  Users, including network and service designers, operations engineers, and security experts, can easily **create**, **change**, and **manage** policy rules from the POLICY Manager in the ONAP Portal.
+
+The figure below represents the target POLICY Architecture.
+
+.. image:: https://wiki.onap.org/download/attachments/1015858/PolicyTargetArchitecture.png?api=v2
+
+
+The figure below represents the current POLICY Architecture.
+
+.. image:: https://wiki.onap.org/download/attachments/1015858/PolicyR1Architecture.png?api=v2
+
+
+A policy is defined to create a condition, requirement, constraint, or need that must be provided, maintained, and enforced.  The policy is validated and corrected for any conflicts, and then placed in the appropriate repository, and made available for use by other subsystems and components.  In addition, the decisions and actions taken by the policy are distributed. 
+
+ONAP supports XACML policies and Drools rules running in the respective engines.  Several configuration and operational policies are pre-loaded.
+
+System Architecture
+^^^^^^^^^^^^^^^^^^^
+
+ONAP POLICY is composed of several subcomponents: the **Policy Administration Point (PAP)**, which offers interfaces for policy creation, and two types of **Policy Decision Point (PDP)**, each based on a specific rules technology.  PDP-X is based on XACML technology and PDP-D is based on Drools technology.  PDP-X is **stateless** and can be implemented using a resource pool of PDP-X servers.  The number of servers can be grown to increase both capacity (horizontal scalability) and to increase availability.  The PDP-D is **stateful**, as it utilizes Drools in its native, stateful way and transactions persist so long as the PDP-D is active.  Persistent Drools sessions, state management, local and geo-redundancy have been deactivated for the initial release of ONAP POLICY and will be turned on in a future release.  Additional instances of XACML/Drools engines and assigned roles/purposes may also be added in the future to provide a flexible, expandable policy capability.
+
+As illustrated in the Figure below, the POLICY components are supported by a number of interfaces and subsystems.  The ONAP Portal provides a human interface for the creation, management and deployment of policies.  It is a web-based system that utilizes internal APIs in the PAP.
+
+.. image:: https://wiki.onap.org/download/attachments/1015858/PolicyArchitectureDetails.png?api=v2
+
+
+The PAP provides interfaces and management of policy definitions.  It utilizes the XACML database to store policy definitions, which are then distributed to the PDPs.
+
+The XACML and Drools databases are hosted in a MariaDB cluster.  The XACML database is used to persist policy definitions and provide a point for PDPs to retrieve policy definitions.  The XACML database also has tables used for node state management, detection of node failure and failover. As indicated above, the state management tables will only include entries for the PAP and PDP-X as the testing is not yet complete for the PDP-D.
+
+The PDP-X receives deployed policies and has interfaces to handle XACML policy transactions.  These transactions are stateless and once complete, they are removed from memory.  If a policy that is deployed to the PDP-X is of an operational nature it will contain Drools rules and Java executables.  These artifacts are processed into Maven artifacts and pushed to the Maven repository.  The PDP-D is then notified a new policy has been deployed.
+
+When the PDP-D is notified a new policy has been deployed, it downloads it from the Maven repository and assigns it to an internal controller.  This controller provides the external Closed Loop interfaces to the DMaaP message bus over which events and messages are exchanged with external systems.  As events or messages arrive at the PDP-D, they are assigned to the appropriate controller and a Drools session is either created or retrieved from memory.  The events, messages or facts are passed to the Drools session and the rule engine is fired,  resulting in a change of internal session state and possibly actions taken in response to the rule processing. Response messages and requests are passed by the controller back over the DMaaP message bus to the appropriate system.  The Drools session can also have timers and autonomous events. In a future release the PDP-D will enable the node state management and session persistence in the Drools DB. 
+
+
+Policy Creation
+^^^^^^^^^^^^^^^
+The Policy Creation component of the Policy subsystem enables creation of new policies and modification of existing polices, both online and offline.  Policy Creation is targeted to be integrated to a unified Service design and creation (SDC) environment.
+
+A policy can be defined at a high level to create a condition, requirement, constraint, or need that must be provided, maintained, and enforced. A policy can also be defined at a lower or functional level, such as a machine-readable rule or software condition/assertion which enables actions to be taken based on a trigger or request, specific to particular selected conditions in effect at that time.  
+
+Some examples of types of policies are:
+
+* VNF placement — rules governing where VNFs should be placed, including affinity rules
+* Data and feed management — what data to collect and when, retention periods, and when to send alarms about issues
+* Access control — who (or what) can have access to which data
+* Trigger conditions and actions — what conditions are actionable, and what to do under those conditions
+* Interactions — how interactions between change management and fault/performance management are handled (for example, should closed loops be disabled during maintenance?)
+
+
+Policy Distribution
+^^^^^^^^^^^^^^^^^^^
+After a policy has been initially created or an existing policy has been modified, the Policy Distribution Framework sends the policy from the repository to its points of use, known as Policy Distribution Points, before it is actually needed.
+
+The decisions and actions taken by the policy are distributed.  Policies are distributed either in conjunction with installation packages (for example, related to service instantiation) or independently, if unrelated to a particular service.  Some policies can be configured (e.g., configuring policy parameters within microservices), while other polices are delivered to policy engines such as XAMCL and Drools.  With this methodology, policies will already be available when needed by a component, minimizing real-time requests to a central policy engine or PDP (Policy Decision Point). This improves scalability and reduces latency.
+
+Separate notifications or events communicate the link or URL for a policy to the components that need it.  Then, when a component needs the policy, it uses the link to fetch it. Components in some cases might also publish events indicating that they need new policies, eliciting a response with updated links or URLs. Also, in some cases, policies can indicate to components that they should subscribe to one or more policies, so that they receive automatic updates to those policies as they become available.
+
+
+Policy Decision and Enforcement
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Run-time policy enforcement is performed by ONAP subsystems that are policy enabled. For example, policy rules for data collection are enforced by the data collection functionality of DCAE. Analytic policy rules, identification of anomalous or abnormal conditions, and publication of events signaling detection of such conditions are enforced by DCAE analytic applications. Policy rules for associated remedial actions, or for further diagnostics, are enforced by the correct component in a control loop such as the MSO, a Controller, or DCAE.  Policy engines such as XACML and Drools also enforce policies and can trigger other components as a result (for example, causing a controller to take specific actions specified by the policy).  Additionally, some policies (“Guard Policies”) may enforce checks against decided actions.
+
+
+Policy Unification and Organization
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Because the POLICY framework is expandable and multipurpose, it is likely to contain many types of policies which require organization according to some useful dimensions.  Users can define attributes that specify the scope of policies, and these attributes can be extended to the policy-enabled functions and components. Useful policy organizing dimensions might include:
+
+* Policy type or category (taxonomical)
+* Policy ownership or administrative domain
+* Geographic area or location, 
+* Technology type  
+* Policy language and version 
+* Security level or other security-related values, specifiers, or limiters
+
+Attributes can be specified for each dimension. In addition to being defined for individual policies themselves, these attributes can be used to define the scope of these additional additional policy-related functions:
+
+* Policy events or requests/triggers 
+* Policy decision, enforcement, or other functions 
+* Virtual functions of any type 
+
+Policy-writers can define attributes so that policy events or requests self-indicate their scope. The scope is then examined by a suitable function and subsequently acted upon accordingly. Policy decisions and enforcement functions can self-indicate their scope of decision-making, enforcement, or other capabilities. Virtual functions can be automatically attached to the appropriate POLICY Framework and distribution mechanisms.
+
+
+
index 728f2ba..6f52263 100644 (file)
@@ -4,7 +4,7 @@
 
 Offered APIs
 ============
-The Policy subsystem of ONAP maintains, distributes, and operates on the set of rules that underlie ONAP’s control, orchestration, and management functions. Policy provides a centralized environment for the creation and management of easily-updatable conditional rules. It enables users to validate policies and rules, identify and resolve overlaps and conflicts, and derive additional policies where needed.  The following operations are support by the policy API:
+The Policy subsystem of ONAP maintains, distributes, and operates on the set of rules that underlie ONAP’s control, orchestration, and management functions. Policy provides a centralized environment for the creation and management of easily-updatable conditional rules. It enables users to validate policies and rules, identify and resolve overlaps and conflicts, and derive additional policies where needed.  The following operations are supported by the policy API:
 
 * Create policies on the PAP 
 * Update policies on the PAP
@@ -18,12 +18,32 @@ The Policy subsystem of ONAP maintains, distributes, and operates on the set of
 * Import Micro Services Models
 * Retrieve Metrics for policy counts from PDP and PAP
 
-.. SStodo need to include the swaggerv2doc for the api
 
-Example Swagger Displayed with swaggerv2doc directive
------------------------------------------------------
+POLICY Engine Services
+^^^^^^^^^^^^^^^^^^^^^^
+
+The figure below represents the target POLICY Architecture.
+
+.. image:: https://wiki.onap.org/download/attachments/1015898/PolicyEngineApiList.png?api=v2
+
+
+
+POLICY API Details
+^^^^^^^^^^^^^^^^^^
+
+.. SStodo Check with Pam about if using onap wiki urls are okay.  
+
+.. swaggerv2doc:: https://wiki.onap.org/download/attachments/1015898/api-docs-09192017.json?api=v2
+
+
+
+Additional information can be found at `PolicyApi link`_.
+
+.. _PolicyApi link: https://wiki.onap.org/display/DW/Policy+API
+
+
+
 
-.. SStodo add swaggerv2doc directive here
 
 End of document
 
index 70dae61..4c64c64 100755 (executable)
@@ -6361,20 +6361,6 @@ INSERT INTO `microservicelocation` VALUES (1,'SampleServiceLocation','demo');
 
 INSERT INTO `risktype` VALUES (1,'demo','2016-12-29 20:20:48','demo','SampleRiskType','demo','2016-12-29 20:20:48');
 
-INSERT INTO `brmsparamtemplate` VALUES (2,'ControlLoopDemo__closedLoopControlName','ControlLoopDemo__closedLoopControlName','\r\n\r\n/*-\n * ============LICENSE_START=======================================================\n * archetype-closed-loop-demo-rules\n * ================================================================================\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *      http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============LICENSE_END=========================================================\n */\n\npackage org.onap.policy.controlloop;\n\nimport java.util.List;\nimport java.util.LinkedList;\nimport java.util.Map;\nimport java.util.HashMap;\nimport java.util.UUID;\n\nimport org.onap.policy.controlloop.VirtualControlLoopEvent;\nimport org.onap.policy.controlloop.ControlLoopEventStatus;\nimport org.onap.policy.controlloop.VirtualControlLoopNotification;\nimport org.onap.policy.controlloop.ControlLoopNotificationType;\nimport org.onap.policy.controlloop.ControlLoopOperation;\nimport org.onap.policy.controlloop.ControlLoopOperationWrapper;\nimport org.onap.policy.template.demo.ControlLoopException;\n\nimport org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;\nimport org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Manager;\nimport org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;\nimport org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Request;\nimport org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Response;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Tenant;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VfModule;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VServer;\nimport org.onap.policy.aai.util.Serialization;\n\nimport org.onap.policy.appc.CommonHeader;\nimport org.onap.policy.appc.Request;\nimport org.onap.policy.appc.Response;\nimport org.onap.policy.appc.ResponseCode;\nimport org.onap.policy.appc.ResponseStatus;\nimport org.onap.policy.appc.ResponseValue;\n\nimport org.onap.policy.template.demo.EventManager;\nimport org.onap.policy.vnf.trafficgenerator.PGRequest;\nimport org.onap.policy.vnf.trafficgenerator.PGStream;\nimport org.onap.policy.vnf.trafficgenerator.PGStreams;\n\nimport org.onap.policy.mso.MSOManager;\nimport org.onap.policy.mso.MSORequest;\nimport org.onap.policy.mso.MSORequestStatus;\nimport org.onap.policy.mso.MSORequestDetails;\nimport org.onap.policy.mso.MSOModelInfo;\nimport org.onap.policy.mso.MSOCloudConfiguration;\nimport org.onap.policy.mso.MSORequestInfo;\nimport org.onap.policy.mso.MSORequestParameters;\nimport org.onap.policy.mso.MSORelatedInstanceListElement;\nimport org.onap.policy.mso.MSORelatedInstance;\nimport org.onap.policy.mso.MSOResponse;\n\nimport org.onap.policy.drools.system.PolicyEngine;\n\n//\n// These parameters are required to build the runtime policy\n//\ndeclare Params\n    closedLoopControlName : String\n    actor : String\n    aaiURL : String\n    aaiUsername : String\n    aaiPassword : String\n    msoURL : String\n    msoUsername : String\n    msoPassword : String\n    aaiNamedQueryUUID : String\n    aaiPatternMatch : int \n    notificationTopic : String\n    appcTopic : String\nend\n\n/*\n*\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\n* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)\n*\n*\n*rule \"${policyName}.SETUP\"\n*       when\n* then\n*         System.out.println(\"rule SETUP is triggered.\");\n*            Params params = new Params();\n*                params.setClosedLoopControlName(\"${closedLoopControlName}\");\n*               params.setActor(\"${actor}\");\n*               params.setAaiURL(\"${aaiURL}\");\n*             params.setAaiUsername(\"${aaiUsername}\");\n*           params.setAaiPassword(\"${aaiPassword}\");\n*           params.setMsoURL(\"${msoURL}\");\n*             params.setMsoUsername(\"${msoUsername}\");\n*           params.setMsoPassword(\"${msoPassword}\");\n*           params.setAaiNamedQueryUUID(\"${aaiNamedQueryUUID}\");\n*               params.setAaiPatternMatch(${aaiPatternMatch});\n*               params.setNotificationTopic(\"${notificationTopic}\");\n*               params.setAppcTopic(\"${appcTopic}\");\n*               //\n*           // This stays in memory as long as the rule is alive and running\n*             //\n*           insert(params);\n*end\n*/\n/*\n*\n* This rule responds to DCAE Events\n*\n*/\nrule \"${policyName}.EVENT\"\n    when\n        $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\n    then\n          System.out.println(\"rule EVENT is triggered.\");\n             try {\n                 // \n                   // Check the requestID in the event to make sure it is not null before we create the EventManager. \n                   // The EventManager will do extra syntax checking as well check if the closed loop is disabled/\n                       //\n                    if ($event.requestID == null) {\n                               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                             notification.notification = ControlLoopNotificationType.REJECTED;\n                             notification.from = \"policy\";\n                               notification.message = \"Missing requestID from DCAE event\";\n                         notification.policyName = drools.getRule().getName();\n                         notification.policyScope = \"${policyScope}\";\n                                notification.policyVersion = \"${policyVersion}\";\n                            //\n                            // Let interested parties know\n                                //\n                            try {\n                                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                           } catch (Exception e) {\n                                       e.printStackTrace();\n                                  System.out.println(\"Can\'t deliver notification: \" + notification);\n                         }\n                             //\n                            // Retract it from memory\n                             //\n                            retract($event);\n                              System.out.println(\"Event with requestID=null has been retracted.\");\n                        } else {\n                              //\n                            // Create an EventManager\n                             //\n                            EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\n                         //\n                            // Determine if EventManager can actively process the event (i.e. syntax)\n                             //\n                            VirtualControlLoopNotification notification = manager.activate($event);\n                               notification.from = \"policy\"; \n                              notification.policyName = drools.getRule().getName();\n                         notification.policyScope = \"${policyScope}\";\n                                notification.policyVersion = \"${policyVersion}\";\n                            //\n                            // Are we actively pursuing this event?\n                               //\n                            if (notification.notification == ControlLoopNotificationType.ACTIVE) {\n                                        //\n                                    // Insert Event Manager into memory, this will now kick off processing.\n                                       //\n                                    insert(manager);\n                                      //\n                                    // Let interested parties know\n                                        //\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               e.printStackTrace();\n                                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                                 }               \n                              } else {\n                                      //\n                                    // Let interested parties know\n                                        //\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               e.printStackTrace();\n                                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                                 }\n                                     //\n                                    // Retract it from memory\n                                     //\n                                    retract($event);\n                              }\n                             //\n                            // Now that the manager is inserted into Drools working memory, we\'ll wait for\n                               // another rule to fire in order to continue processing. This way we can also\n                         // then screen for additional ONSET and ABATED events for this same RequestIDs \n                               // and for different RequestIDs but with the same closedLoopControlName and target.\n                           //\n                    }\n             //\n            } catch (Exception e) {\n                       e.printStackTrace();\n                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                     notification.notification = ControlLoopNotificationType.REJECTED;\n                     notification.message = \"Exception occurred \" + e.getMessage();\n                      notification.policyName = drools.getRule().getName();\n                 notification.policyScope = \"${policyScope}\";\n                        notification.policyVersion = \"${policyVersion}\";\n                    //\n                    //\n                    //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e1) {\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e1.printStackTrace();\n                 }\n                     //\n                    // Retract the event\n                  //\n                    retract($event);\n              }\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\n* is created. We can start the operations for this closed loop.\n*\n*/\nrule \"${policyName}.EVENT.MANAGER\"\n     when\n          $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\n    then\n          System.out.println(\"rule EVENT.MANAGER is triggered.\");\n             //\n            // Check which event this is.\n         //\n            EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\n              //\n            // We only want the initial ONSET event in memory,\n            // all the other events need to be retracted to support\n               // cleanup and avoid the other rules being fired for this event.\n              //\n            if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\n                       System.out.println(\"Retracting \"+eventStatus+\" Event.\");\n                  retract($event);\n                      return;\n               }\n             //\n            // Now the event in memory is first onset event\n               //\n            try {\n                 //\n                    // Pull the known AAI field from the Event\n                    //\n                    // generic-vnf is needed for vFirewall case\n                   // vserver-name is needed for vLoadBalancer case\n                      //\n                    String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\n                   String vserver = $event.AAI.get(\"vserver.vserver-name\");\n                    //\n                    // Check if we are implementing a simple pattern match.\n                       //\n                    if ($params.getAaiPatternMatch() == 1) {\n                              //\n                            // Yes\n                                //\n                            //Basic naming characteristics:\n                               //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\n                                //Example: \n                           //VF Name (9 characters):    cscf0001v\n                                //VM Name(13 characters): cscf0001vm001\n                               //VFC name(19 characters): cscf0001vm001cfg001\n                                //\n                            // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \n                               // replaced with\n                              // zdfw1fwl01pgn02 or zdfw1fwl01pgn01\n                         //\n                            int index = genericVNF.lastIndexOf(\"fwl\");\n                          if (index == -1) {\n                                    System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\n                         } else {\n                                      genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\n                         }\n                             //\n                            // Construct an APPC request\n                          //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"ModifyConfig\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // insert operationWrapper into memory\n                                //\n                            insert(operationWrapper);\n                             //\n                            Request request = new Request();\n                              request.CommonHeader = new CommonHeader();\n                            request.CommonHeader.RequestID = $event.requestID;\n                            request.Action = operation.operation;\n                         request.Payload = new HashMap<String, Object>();\n                              //\n                            // Fill in the payload\n                                //\n                            request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n                              //\n                            PGRequest pgRequest = new PGRequest();\n                                pgRequest.pgStreams = new PGStreams();\n                                \n                              PGStream pgStream;\n                            for(int i = 0; i < 5; i++){\n                                   pgStream = new PGStream();\n                                    pgStream.streamId = \"fw_udp\"+(i+1);\n                                 pgStream.isEnabled = \"true\";\n                                        pgRequest.pgStreams.pgStream.add(pgStream);\n                           }\n                             request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n                             \n                              if (request != null) {\n                                        //\n                                    // Insert request into memory\n                                 //\n                                    insert(request);\n                                      //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    // message and history ??\n                                     notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"${policyScope}\";\n                                        notification.policyVersion = \"${policyVersion}\";\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Now send the operation request\n                                     //\n                                    if (request instanceof Request) {\n                                             try {\n                                                 System.out.println(\"APPC request sent:\");\n                                                   System.out.println(Serialization.gsonPretty.toJson(request));\n                                                 PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n                                                } catch (Exception e) {\n                                                       e.printStackTrace();\n                                                  System.out.println(\"Can\'t deliver request: \" + request);\n                                           }\n                                     }\n                             } else {\n                                      //\n                                    // what happens if it is null\n                                 //\n                            }\n                             //\n                    } else {\n                              //\n                            // create AAI named-query request with UUID started with \"F199\"\n                             //\n                            AAINQF199Request aainqf199request = new AAINQF199Request();\n                           AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\n                                AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\n                          AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\n                            //\n                            // queryParameters\n                            //\n                            aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \n                                aainqf199queryparam.namedQuery = aainqf199namedquery;\n                         aainqf199request.queryParameters = aainqf199queryparam;\n                               //\n                            // instanceFilters\n                            //\n                            Map aainqf199instancefiltermap = new HashMap();\n                               Map aainqf199instancefiltermapitem = new HashMap();\n                           aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \n                               aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\n                          aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\n                               aainqf199request.instanceFilters = aainqf199instancefilter;\n                           //\n                            // print aainqf199request for debug\n                           //\n                            System.out.println(\"AAI Request sent:\");\n                            System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\n                                //\n                            // Create AAINQF199RequestWrapper\n                             //\n                            AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\n                            //\n                            // insert aainqf199request into memory\n                                //\n                            insert(aainqf199RequestWrapper);\n                      }\n                     //\n            } catch (Exception e) {\n                e.printStackTrace();\n         }\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\n*\n*/\nrule \"${policyName}.EVENT.MANAGER.AAINQF199REQUEST\"\n  when\n          $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n     then\n          System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\n            //\n            // send the request\n           //\n            AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\n                                                                                                        $aainqf199RequestWrapper.aainqf199request, $event.requestID);\n              //\n            // Check AAI response\n         //\n            if (aainqf199response == null) {\n                      System.err.println(\"Failed to get AAI response\");\n                   //\n                    // Fail and retract everything\n                        //\n                    retract($event);\n                      retract($manager);\n                    retract($aainqf199RequestWrapper);\n            } else {\n                      //\n                    // Create AAINQF199ResponseWrapper\n                    //\n                    AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\n                        //\n                    // insert aainqf199ResponseWrapper to memeory\n                 //\n                    insert(aainqf199ResponseWrapper);\n             }\nend\n\n/*\n*\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\n*\n*/\nrule \"${policyName}.EVENT.MANAGER.AAINQF199RESPONSE\"\n        when \n         $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n             $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\n   then\n          System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\n           //\n            // Extract related fields out of AAINQF199RESPONSE\n            //\n            String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \n                   vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\n                      serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\n                   vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \n                vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\n              try {\n                 //\n                    // vnfItem\n                    //\n                    vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\n                        vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\n                    vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\n                       vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\n                      vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\n                    vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n                  vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\n                     vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n                     //\n                    // serviceItem\n                        //\n                    serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\n                   serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\n                 serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n                  serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\n                  serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\n                      serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n                 //\n                    // Find the index for base vf module and non-base vf module\n                   //\n                    int baseIndex = -1;\n                   int nonBaseIndex = -1;\n                        List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;\n                     for (AAINQF199InventoryResponseItem m : inventoryItems) {\n                             if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {\n                                        baseIndex = inventoryItems.indexOf(m);\n                                } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {\n                                      nonBaseIndex = inventoryItems.indexOf(m);\n                             }\n                             //\n                            if (baseIndex != -1 && nonBaseIndex != -1) {\n                                  break;\n                                }\n                     }\n                     //\n                    // Report the error if either base vf module or non-base vf module is not found\n                       //\n                    if (baseIndex == -1 || nonBaseIndex == -1) {\n                          System.err.println(\"Either base or non-base vf module is not found from AAI response.\");\n                            retract($aainqf199RequestWrapper);\n                            retract($aainqf199ResponseWrapper);\n                           retract($manager);\n                            retract($event);\n                              return;\n                       }\n                     //\n                    // This comes from the base module\n                    //\n                    vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;\n                      vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\n                  //\n                    // vfModuleItem - NOT the base module\n                 //\n                    vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;\n                 vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;\n                    vfModuleItemModelName =                         $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;\n                      vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;\n                      //\n                    // tenantItem\n                 //\n                    tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\n                   //\n                    // cloudRegionItem\n                    //\n                    cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\n                   //\n            } catch (Exception e) {\n                       e.printStackTrace();\n                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                     notification.notification = ControlLoopNotificationType.REJECTED;\n                     notification.message = \"Exception occurred \" + e.getMessage();\n                      notification.policyName = drools.getRule().getName();\n                 notification.policyScope = \"${policyScope}\";\n                        notification.policyVersion = \"${policyVersion}\";\n                    //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e1) {\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e1.printStackTrace();\n                 }\n                     //\n                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        notification.message = \"Invalid named-query response from AAI\";\n            //\n            try {\n                  System.out.println(Serialization.gsonPretty.toJson(notification));\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e1) {\n                System.out.println(\"Can\'t deliver notification: \" + notification);\n                e1.printStackTrace();\n            }\n                    //\n                    // Retract everything\n                 //\n                    retract($aainqf199RequestWrapper);\n                    retract($aainqf199ResponseWrapper);\n                   retract($manager);\n                    retract($event);\n                      return;\n               }       \n              //\n            // Extracted fields should not be null\n                //\n            if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\n                 (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\n              (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\n               (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\n                   (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\n                (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\n              (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\n                  (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\n                (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\n                 //\n                    System.err.println(\"some fields are missing from AAI response.\");\n                   //\n                    // Fail and retract everything\n                        //\n                    retract($aainqf199RequestWrapper);\n                    retract($aainqf199ResponseWrapper);\n                   retract($manager);\n                    retract($event);\n                      return;\n               }\n             //\n            // We don\'t need them any more\n               //\n            retract($aainqf199ResponseWrapper);\n           retract($aainqf199RequestWrapper);  \n          //\n            // check the actor of this closed loop\n                //\n            switch ($params.getActor()) {\n                 case \"APPC\":\n                        {\n                             //\n                            // Construct an APPC request\n                          //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"ModifyConfig\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // insert operationWrapper into memory\n                                //\n                            insert(operationWrapper);\n                             //\n                            Request request = new Request();\n                              request.CommonHeader = new CommonHeader();\n                            request.CommonHeader.RequestID = $event.requestID;\n                            request.Action = operation.operation;\n                         request.Payload = new HashMap<String, Object>();\n                              //\n                            // Fill in the payload\n                                // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\n                           //\n                            String genericVNF = \"zdfw1fwl01pgn02\";\n                              request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n                              //\n                            PGRequest pgRequest = new PGRequest();\n                                pgRequest.pgStreams = new PGStreams();\n                                \n                              PGStream pgStream;\n                            for(int i = 0; i < 5; i++){\n                                   pgStream = new PGStream();\n                                    pgStream.streamId = \"fw_udp\"+(i+1);\n                                 pgStream.isEnabled = \"true\";\n                                        pgRequest.pgStreams.pgStream.add(pgStream);\n                           }\n                             request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n                             \n                              if (request != null) {\n                                        //\n                                    // Insert request into memory\n                                 //\n                                    insert(request);\n                                      //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    // message and history ??\n                                     notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"${policyScope}\";\n                                        notification.policyVersion = \"${policyVersion}\";\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Now send the operation request\n                                     //\n                                    if (request instanceof Request) {\n                                             try {\n                                                 System.out.println(\"APPC request sent:\");\n                                                   System.out.println(Serialization.gsonPretty.toJson(request));\n                                                 PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n                                                } catch (Exception e) {\n                                                       e.printStackTrace();\n                                                  System.out.println(\"Can\'t deliver request: \" + request);\n                                           }\n                                     }\n                             } else {\n                                      //\n                                    // what happens if it is null\n                                 //\n                            }\n                     }\n                     break;\n                        case \"MSO\":\n                 {\n                             //\n                            // Construct an operation\n                             //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"createModuleInstance\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // Construct an MSO request\n                           //\n                            MSORequest request = new MSORequest();\n                                request.requestDetails = new MSORequestDetails();\n                             request.requestDetails.modelInfo = new MSOModelInfo();\n                                request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\n                              request.requestDetails.requestInfo = new MSORequestInfo();\n                            request.requestDetails.requestParameters = new MSORequestParameters();\n                                request.requestDetails.requestParameters.userParams = null;\n                           //\n                            // cloudConfiguration\n                         //\n                            request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\n                            request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\n                              //\n                            // modelInfo\n                          //\n                            request.requestDetails.modelInfo.modelType = \"vfModule\";\n                            request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\n                               request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\n                         request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\n                           request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\n                              //\n                            // requestInfo\n                                //\n                            request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\n                           request.requestDetails.requestInfo.source = \"POLICY\";\n                               request.requestDetails.requestInfo.suppressRollback = false;\n                          //\n                            // relatedInstanceList\n                                //\n                            MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\n                              MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\n                              relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\n                               relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\n                               //\n                            relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\n                                relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\n                                relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\n                             relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\n                               relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\n                         //\n                            relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\n                                relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\n                            relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\n                               relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\n                             relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\n                                //      \n                              request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\n                          request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\n                          //\n                            // print MSO request for debug\n                                //\n                            System.out.println(\"MSO request sent:\");\n                            System.out.println(Serialization.gsonPretty.toJson(request));\n                         //\n                            //\n                            //\n                            if (request != null) {\n                                        //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"${policyScope}\";\n                                        notification.policyVersion = \"${policyVersion}\";\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\n                                        //\n                                    String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\n                                  //\n                                    // Call MSO\n                                   //\n                                    MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\n                                     //\n                                    if (response != null) {\n                                               //\n                                            // Assign requestId\n                                           //\n                                            request.requestId = $event.requestID.toString();                                                \n                                              response.request.requestId = $event.requestID.toString();\n                                             //\n                                            // Insert facts\n                                               //\n                                            insert(operationWrapper);\n                                             insert(request);\n                                              insert(response);\n                                     } else {\n                                              //\n                                            // MSO request not even accepted\n                                              //\n                                            notification.message = operationWrapper.operation.toMessage();\n                                                operationWrapper.operation.message = operationWrapper.operation.toMessage();\n                                          operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                                           $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n                                         notification.history.add(operationWrapper.operation);\n                                         notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                                            //\n                                            // Let interested parties know\n                                                //\n                                            try {\n                                                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                                                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                           } catch (Exception e) {\n                                                       System.out.println(\"Can\'t deliver notification: \" + notification);\n                                                 e.printStackTrace();\n                                          }\n                         notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        try {\n                             System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                        } catch (Exception e) {\n                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                        }\n                                               //\n                                            // Retract everything\n                                         //\n                                            retract($event);\n                                              retract($manager);\n                                    }\n                             } else {\n                                      System.err.println(\"constructed MSO request is invalid.\");\n                          }\n                     }\n                     break; \n               } \nend\n               \n/*\n*\n* This rule responds to APPC Response Events\n*\n*/\nrule \"${policyName}.APPC.RESPONSE\"\n    when\n          $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n              $request : Request( getCommonHeader().RequestID == $event.requestID )\n         $response : Response( getCommonHeader().RequestID == $event.requestID ) \n      then\n          System.out.println(\"rule APPC.RESPONSE is triggered.\");\n             if ($response.Status == null) {\n                       $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                  $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n         } \n            //\n            // Get the Response Code\n              //\n            ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\n               if (code == null) {\n                   $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                  $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n         }\n             //\n            // Construct notification\n             //\n            VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n             notification.from = \"policy\";\n               notification.policyName = drools.getRule().getName();\n         notification.policyScope = \"${policyScope}\";\n                notification.policyVersion = \"${policyVersion}\";\n            notification.message = $operationWrapper.operation.toMessage();\n               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n                //\n            // Ok, let\'s figure out what APP-C\'s response is\n            //\n            switch (code) {\n                       case ACCEPT:\n                          $operationWrapper.operation.outcome = \"PROCESSING\";\n                         break;\n                        case ERROR:\n                   case REJECT:\n                          $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                          $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n                         break;\n                        case SUCCESS:\n                         $operationWrapper.operation.outcome = \"SUCCESS\";\n                            $manager.setControlLoopResult(\"SUCCESS\");\n                           break;\n                        case FAILURE:\n                         $operationWrapper.operation.outcome = \"FAILURE\";\n                            $manager.setControlLoopResult(\"FAILURE\");\n                           break;\n                }\n             if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\n                        notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            try {\n              System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n\n                 //\n                    // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            } else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\n                      retract($response);\n           } else {\n                      notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n                  System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n                   //\n                    // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            }\n             \nend           \n\n/*\n*\n* This rule is used to clean up APPC response\n*\n*/         \nrule \"${policyName}.APPC.RESPONSE.CLEANUP\"\n        when\n          $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n        $response : Response($id : getCommonHeader().RequestID )\n              not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \n      then\n          System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\n             retract($response);\nend\n\n/*\n*\n* This rule responds to MSO Response Events\n*\n*/\nrule \"${policyName}.MSO.RESPONSE\"\n    when\n          $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\n                $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n              $request : MSORequest( requestId == $event.requestID.toString() )\n             $response : MSOResponse( request.requestId == $event.requestID.toString() )     \n      then\n          System.out.println(\"rule MSO.RESPONSE is triggered.\");\n              //\n            // Construct notification\n             //\n            VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n             notification.from = \"policy\";\n               notification.policyName = drools.getRule().getName();\n         notification.policyScope = \"${policyScope}\";\n                notification.policyVersion = \"${policyVersion}\";\n            notification.message = $operationWrapper.operation.toMessage();\n               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n                //\n            // The operation can either be succeeded or failed\n            // \n           if($response.request.requestStatus.requestState.equals(\"COMPLETE\")) {\n                       $operationWrapper.operation.outcome = \"SUCCESS\";\n                    $manager.setControlLoopResult(\"SUCCESS\");\n                   notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n                     notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            //\n            // Let interested parties know\n            //\n            try {\n                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n            //\n                   // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            } else {\n                      $operationWrapper.operation.outcome = \"FAILURE\";\n                    $manager.setControlLoopResult(\"FAILURE\");\n                   notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n                     notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n            //\n                   // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            }\n             \nend   ','2017-03-14 19:55:47','demo');
-
-INSERT INTO `policyentity` VALUES (3156,'doACPolicyPut','2017-03-03 17:26:24',0,'Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-03 17:26:24','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:34928b05-b0f6-4974-8458-f4d34a2a1764\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vFirewall.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"service\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"uuid\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"location\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:063161de-0534-4989-bd01-42f784daf21e\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"MSID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_MS_vFirewall.1.json</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vFirewall.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:service\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:uuid\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:Location\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"Priority\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_MS_vFirewall.1.xml',0,'com',1,NULL,3155),(3158,'doACPolicyPut','2017-03-03 17:28:10',0,'Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-03 17:28:10','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:c220802a-70ee-4ca8-9f1e-f8a515650381\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"service\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"uuid\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"location\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:fca27dab-6c09-4541-8136-328abaec2656\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"MSID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_MS_vLoadBalancer.1.json</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DCAE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleConfigName</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:service\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">TcaMetrics-v1.0.0.5</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:uuid\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:Location\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleServiceLocation</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"Priority\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_MS_vLoadBalancer.1.xml',0,'com',1,NULL,3157);
-
-INSERT INTO `configurationdataentity` VALUES (3155,'{\"service\":\"TcaMetrics\",\"location\":\"SampleServiceLocation\",\"uuid\":\"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall\",\"policyName\":\"vFirewall\",\"description\":\"Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:\",\"configName\":\"SampleConfigName\",\"templateVersion\":\"OpenSource.version.1\",\"version\":\"1.0.0.5\",\"priority\":\"1\",\"policyScope\":\"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop\",\"content\":{\"thresholds\":[{\"severity\":\"MAJOR\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\",\"thresholdValue\":\"300\",\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"version\":\"1.0.2\",\"direction\":\"LESS_OR_EQUAL\"},{\"severity\":\"CRITICAL\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\",\"thresholdValue\":\"700\",\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"version\":\"1.0.2\",\"direction\":\"GREATER_OR_EQUAL\"}],\"functionalRole\":\"vFirewall\",\"name\":\"0\"}}\r\n','JSON','com.Config_MS_vFirewall.1.json','doACPolicyPut','2017-03-03 17:26:24',0,'','doACPolicyPut','2017-03-03 17:26:24',1),(3157,'{\"service\":\"TcaMetrics\",\"location\":\"SampleServiceLocation\",\"uuid\":\"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer\",\"policyName\":\"vLoadBalancer\",\"description\":\"Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:\",\"configName\":\"SampleConfigName\",\"templateVersion\":\"OpenSource.version.1\",\"version\":\"1.0.0.5\",\"priority\":\"1\",\"policyScope\":\"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop\",\"content\":{\"thresholds\":[{\"severity\":\"MAJOR\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn\",\"thresholdValue\":\"200\",\"closedLoopControlName\":\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"version\":\"1.0.2\",\"direction\":\"GREATER_OR_EQUAL\"}],\"functionalRole\":\"vLoadBalancer\",\"name\":\"0\"}}\r\n','JSON','com.Config_MS_vLoadBalancer.1.json','doACPolicyPut','2017-03-03 17:28:10',0,'','doACPolicyPut','2017-03-03 17:28:10',1);
-
-INSERT INTO `configurationdataentity` VALUES (3201,'/* Autogenerated Code Please Don\'t change/remove this comment section. This is for the UI purpose. \n      <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> \n */ \n\r\n\r\n/*-\n * ============LICENSE_START=======================================================\n * archetype-closed-loop-demo-rules\n * ================================================================================\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *      http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============LICENSE_END=========================================================\n */\n\npackage org.onap.policy.controlloop;\n\nimport java.util.List;\nimport java.util.LinkedList;\nimport java.util.Map;\nimport java.util.HashMap;\nimport java.util.UUID;\n\nimport org.onap.policy.controlloop.VirtualControlLoopEvent;\nimport org.onap.policy.controlloop.ControlLoopEventStatus;\nimport org.onap.policy.controlloop.VirtualControlLoopNotification;\nimport org.onap.policy.controlloop.ControlLoopNotificationType;\nimport org.onap.policy.controlloop.ControlLoopOperation;\nimport org.onap.policy.controlloop.ControlLoopOperationWrapper;\nimport org.onap.policy.template.demo.ControlLoopException;\n\nimport org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;\nimport org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Manager;\nimport org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;\nimport org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Request;\nimport org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Response;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Tenant;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VfModule;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VServer;\nimport org.onap.policy.aai.util.Serialization;\n\nimport org.onap.policy.appc.CommonHeader;\nimport org.onap.policy.appc.Request;\nimport org.onap.policy.appc.Response;\nimport org.onap.policy.appc.ResponseCode;\nimport org.onap.policy.appc.ResponseStatus;\nimport org.onap.policy.appc.ResponseValue;\n\nimport org.onap.policy.template.demo.EventManager;\nimport org.onap.policy.vnf.trafficgenerator.PGRequest;\nimport org.onap.policy.vnf.trafficgenerator.PGStream;\nimport org.onap.policy.vnf.trafficgenerator.PGStreams;\n\nimport org.onap.policy.mso.MSOManager;\nimport org.onap.policy.mso.MSORequest;\nimport org.onap.policy.mso.MSORequestStatus;\nimport org.onap.policy.mso.MSORequestDetails;\nimport org.onap.policy.mso.MSOModelInfo;\nimport org.onap.policy.mso.MSOCloudConfiguration;\nimport org.onap.policy.mso.MSORequestInfo;\nimport org.onap.policy.mso.MSORequestParameters;\nimport org.onap.policy.mso.MSORelatedInstanceListElement;\nimport org.onap.policy.mso.MSORelatedInstance;\nimport org.onap.policy.mso.MSOResponse;\n\nimport org.onap.policy.drools.system.PolicyEngine;\n\n//\n// These parameters are required to build the runtime policy\n//\ndeclare Params\n    closedLoopControlName : String\n    actor : String\n    aaiURL : String\n    aaiUsername : String\n    aaiPassword : String\n    msoURL : String\n    msoUsername : String\n    msoPassword : String\n    aaiNamedQueryUUID : String\n    aaiPatternMatch : int \n    notificationTopic : String\n    appcTopic : String\nend\n\n/*\n*\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\n* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)\n*\n*\n*rule \"BRMSParamvFWDemoPolicy.SETUP\"\n*    when\n* then\n*         System.out.println(\"rule SETUP is triggered.\");\n*            Params params = new Params();\n*                params.setClosedLoopControlName(\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n*           params.setActor(\"APPC\");\n*           params.setAaiURL(\"null\");\n*          params.setAaiUsername(\"null\");\n*             params.setAaiPassword(\"null\");\n*             params.setMsoURL(\"null\");\n*          params.setMsoUsername(\"null\");\n*             params.setMsoPassword(\"null\");\n*             params.setAaiNamedQueryUUID(\"null\");\n*               params.setAaiPatternMatch(1);\n*                params.setNotificationTopic(\"POLICY-CL-MGT\");\n*              params.setAppcTopic(\"APPC-CL\");\n*            //\n*           // This stays in memory as long as the rule is alive and running\n*             //\n*           insert(params);\n*end\n*/\n/*\n*\n* This rule responds to DCAE Events\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT\"\n   when\n        $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\n        then\n          System.out.println(\"rule EVENT is triggered.\");\n             try {\n                 // \n                   // Check the requestID in the event to make sure it is not null before we create the EventManager. \n                   // The EventManager will do extra syntax checking as well check if the closed loop is disabled/\n                       //\n                    if ($event.requestID == null) {\n                               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                             notification.notification = ControlLoopNotificationType.REJECTED;\n                             notification.from = \"policy\";\n                               notification.message = \"Missing requestID from DCAE event\";\n                         notification.policyName = drools.getRule().getName();\n                         notification.policyScope = \"com\";\n                           notification.policyVersion = \"1\";\n                           //\n                            // Let interested parties know\n                                //\n                            try {\n                                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                           } catch (Exception e) {\n                                       e.printStackTrace();\n                                  System.out.println(\"Can\'t deliver notification: \" + notification);\n                         }\n                             //\n                            // Retract it from memory\n                             //\n                            retract($event);\n                              System.out.println(\"Event with requestID=null has been retracted.\");\n                        } else {\n                              //\n                            // Create an EventManager\n                             //\n                            EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\n                         //\n                            // Determine if EventManager can actively process the event (i.e. syntax)\n                             //\n                            VirtualControlLoopNotification notification = manager.activate($event);\n                               notification.from = \"policy\"; \n                              notification.policyName = drools.getRule().getName();\n                         notification.policyScope = \"com\";\n                           notification.policyVersion = \"1\";\n                           //\n                            // Are we actively pursuing this event?\n                               //\n                            if (notification.notification == ControlLoopNotificationType.ACTIVE) {\n                                        //\n                                    // Insert Event Manager into memory, this will now kick off processing.\n                                       //\n                                    insert(manager);\n                                      //\n                                    // Let interested parties know\n                                        //\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               e.printStackTrace();\n                                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                                 }               \n                              } else {\n                                      //\n                                    // Let interested parties know\n                                        //\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               e.printStackTrace();\n                                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                                 }\n                                     //\n                                    // Retract it from memory\n                                     //\n                                    retract($event);\n                              }\n                             //\n                            // Now that the manager is inserted into Drools working memory, we\'ll wait for\n                               // another rule to fire in order to continue processing. This way we can also\n                         // then screen for additional ONSET and ABATED events for this same RequestIDs \n                               // and for different RequestIDs but with the same closedLoopControlName and target.\n                           //\n                    }\n             //\n            } catch (Exception e) {\n                       e.printStackTrace();\n                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                     notification.notification = ControlLoopNotificationType.REJECTED;\n                     notification.message = \"Exception occurred \" + e.getMessage();\n                      notification.policyName = drools.getRule().getName();\n                 notification.policyScope = \"com\";\n                   notification.policyVersion = \"1\";\n                   //\n                    //\n                    //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e1) {\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e1.printStackTrace();\n                 }\n                     //\n                    // Retract the event\n                  //\n                    retract($event);\n              }\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\n* is created. We can start the operations for this closed loop.\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER\"\n    when\n          $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n            $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\n    then\n          System.out.println(\"rule EVENT.MANAGER is triggered.\");\n             //\n            // Check which event this is.\n         //\n            EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\n              //\n            // We only want the initial ONSET event in memory,\n            // all the other events need to be retracted to support\n               // cleanup and avoid the other rules being fired for this event.\n              //\n            if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\n                       System.out.println(\"Retracting \"+eventStatus+\" Event.\");\n                  retract($event);\n                      return;\n               }\n             //\n            // Now the event in memory is first onset event\n               //\n            try {\n                 //\n                    // Pull the known AAI field from the Event\n                    //\n                    // generic-vnf is needed for vFirewall case\n                   // vserver-name is needed for vLoadBalancer case\n                      //\n                    String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\n                   String vserver = $event.AAI.get(\"vserver.vserver-name\");\n                    //\n                    // Check if we are implementing a simple pattern match.\n                       //\n                    if ($params.getAaiPatternMatch() == 1) {\n                              //\n                            // Yes\n                                //\n                            //Basic naming characteristics:\n                               //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\n                                //Example: \n                           //VF Name (9 characters):    cscf0001v\n                                //VM Name(13 characters): cscf0001vm001\n                               //VFC name(19 characters): cscf0001vm001cfg001\n                                //\n                            // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \n                               // replaced with\n                              // zdfw1fwl01pgn02 or zdfw1fwl01pgn01\n                         //\n                            int index = genericVNF.lastIndexOf(\"fwl\");\n                          if (index == -1) {\n                                    System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\n                         } else {\n                                      genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\n                         }\n                             //\n                            // Construct an APPC request\n                          //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"ModifyConfig\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // insert operationWrapper into memory\n                                //\n                            insert(operationWrapper);\n                             //\n                            Request request = new Request();\n                              request.CommonHeader = new CommonHeader();\n                            request.CommonHeader.RequestID = $event.requestID;\n                            request.Action = operation.operation;\n                         request.Payload = new HashMap<String, Object>();\n                              //\n                            // Fill in the payload\n                                //\n                            request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n                              //\n                            PGRequest pgRequest = new PGRequest();\n                                pgRequest.pgStreams = new PGStreams();\n                                \n                              PGStream pgStream;\n                            for(int i = 0; i < 5; i++){\n                                   pgStream = new PGStream();\n                                    pgStream.streamId = \"fw_udp\"+(i+1);\n                                 pgStream.isEnabled = \"true\";\n                                        pgRequest.pgStreams.pgStream.add(pgStream);\n                           }\n                             request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n                             \n                              if (request != null) {\n                                        //\n                                    // Insert request into memory\n                                 //\n                                    insert(request);\n                                      //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    // message and history ??\n                                     notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"com\";\n                                   notification.policyVersion = \"1\";\n                                   try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Now send the operation request\n                                     //\n                                    if (request instanceof Request) {\n                                             try {\n                                                 System.out.println(\"APPC request sent:\");\n                                                   System.out.println(Serialization.gsonPretty.toJson(request));\n                                                 PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n                                                } catch (Exception e) {\n                                                       e.printStackTrace();\n                                                  System.out.println(\"Can\'t deliver request: \" + request);\n                                           }\n                                     }\n                             } else {\n                                      //\n                                    // what happens if it is null\n                                 //\n                            }\n                             //\n                    } else {\n                              //\n                            // create AAI named-query request with UUID started with \"F199\"\n                             //\n                            AAINQF199Request aainqf199request = new AAINQF199Request();\n                           AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\n                                AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\n                          AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\n                            //\n                            // queryParameters\n                            //\n                            aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \n                                aainqf199queryparam.namedQuery = aainqf199namedquery;\n                         aainqf199request.queryParameters = aainqf199queryparam;\n                               //\n                            // instanceFilters\n                            //\n                            Map aainqf199instancefiltermap = new HashMap();\n                               Map aainqf199instancefiltermapitem = new HashMap();\n                           aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \n                               aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\n                          aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\n                               aainqf199request.instanceFilters = aainqf199instancefilter;\n                           //\n                            // print aainqf199request for debug\n                           //\n                            System.out.println(\"AAI Request sent:\");\n                            System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\n                                //\n                            // Create AAINQF199RequestWrapper\n                             //\n                            AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\n                            //\n                            // insert aainqf199request into memory\n                                //\n                            insert(aainqf199RequestWrapper);\n                      }\n                     //\n            } catch (Exception e) {\n                e.printStackTrace();\n         }\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST\"\n when\n          $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n            $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n     then\n          System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\n            //\n            // send the request\n           //\n            AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\n                                                                                                        $aainqf199RequestWrapper.aainqf199request, $event.requestID);\n              //\n            // Check AAI response\n         //\n            if (aainqf199response == null) {\n                      System.err.println(\"Failed to get AAI response\");\n                   //\n                    // Fail and retract everything\n                        //\n                    retract($event);\n                      retract($manager);\n                    retract($aainqf199RequestWrapper);\n            } else {\n                      //\n                    // Create AAINQF199ResponseWrapper\n                    //\n                    AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\n                        //\n                    // insert aainqf199ResponseWrapper to memeory\n                 //\n                    insert(aainqf199ResponseWrapper);\n             }\nend\n\n/*\n*\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE\"\n       when \n         $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n            $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n             $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\n   then\n          System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\n           //\n            // Extract related fields out of AAINQF199RESPONSE\n            //\n            String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \n                   vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\n                      serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\n                   vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \n                vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\n              try {\n                 //\n                    // vnfItem\n                    //\n                    vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\n                        vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\n                    vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\n                       vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\n                      vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\n                    vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n                  vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\n                     vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n                     //\n                    // serviceItem\n                        //\n                    serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\n                   serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\n                 serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n                  serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\n                  serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\n                      serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n                 //\n                    // Find the index for base vf module and non-base vf module\n                   //\n                    int baseIndex = -1;\n                   int nonBaseIndex = -1;\n                        List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;\n                     for (AAINQF199InventoryResponseItem m : inventoryItems) {\n                             if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {\n                                        baseIndex = inventoryItems.indexOf(m);\n                                } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {\n                                      nonBaseIndex = inventoryItems.indexOf(m);\n                             }\n                             //\n                            if (baseIndex != -1 && nonBaseIndex != -1) {\n                                  break;\n                                }\n                     }\n                     //\n                    // Report the error if either base vf module or non-base vf module is not found\n                       //\n                    if (baseIndex == -1 || nonBaseIndex == -1) {\n                          System.err.println(\"Either base or non-base vf module is not found from AAI response.\");\n                            retract($aainqf199RequestWrapper);\n                            retract($aainqf199ResponseWrapper);\n                           retract($manager);\n                            retract($event);\n                              return;\n                       }\n                     //\n                    // This comes from the base module\n                    //\n                    vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;\n                      vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\n                  //\n                    // vfModuleItem - NOT the base module\n                 //\n                    vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;\n                 vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;\n                    vfModuleItemModelName =                         $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;\n                      vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;\n                      //\n                    // tenantItem\n                 //\n                    tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\n                   //\n                    // cloudRegionItem\n                    //\n                    cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\n                   //\n            } catch (Exception e) {\n                       e.printStackTrace();\n                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                     notification.notification = ControlLoopNotificationType.REJECTED;\n                     notification.message = \"Exception occurred \" + e.getMessage();\n                      notification.policyName = drools.getRule().getName();\n                 notification.policyScope = \"com\";\n                   notification.policyVersion = \"1\";\n                   //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e1) {\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e1.printStackTrace();\n                 }\n                     //\n                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        notification.message = \"Invalid named-query response from AAI\";\n            //\n            try {\n                  System.out.println(Serialization.gsonPretty.toJson(notification));\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e1) {\n                System.out.println(\"Can\'t deliver notification: \" + notification);\n                e1.printStackTrace();\n            }\n                    //\n                    // Retract everything\n                 //\n                    retract($aainqf199RequestWrapper);\n                    retract($aainqf199ResponseWrapper);\n                   retract($manager);\n                    retract($event);\n                      return;\n               }       \n              //\n            // Extracted fields should not be null\n                //\n            if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\n                 (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\n              (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\n               (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\n                   (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\n                (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\n              (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\n                  (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\n                (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\n                 //\n                    System.err.println(\"some fields are missing from AAI response.\");\n                   //\n                    // Fail and retract everything\n                        //\n                    retract($aainqf199RequestWrapper);\n                    retract($aainqf199ResponseWrapper);\n                   retract($manager);\n                    retract($event);\n                      return;\n               }\n             //\n            // We don\'t need them any more\n               //\n            retract($aainqf199ResponseWrapper);\n           retract($aainqf199RequestWrapper);  \n          //\n            // check the actor of this closed loop\n                //\n            switch ($params.getActor()) {\n                 case \"APPC\":\n                        {\n                             //\n                            // Construct an APPC request\n                          //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"ModifyConfig\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // insert operationWrapper into memory\n                                //\n                            insert(operationWrapper);\n                             //\n                            Request request = new Request();\n                              request.CommonHeader = new CommonHeader();\n                            request.CommonHeader.RequestID = $event.requestID;\n                            request.Action = operation.operation;\n                         request.Payload = new HashMap<String, Object>();\n                              //\n                            // Fill in the payload\n                                // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\n                           //\n                            String genericVNF = \"zdfw1fwl01pgn02\";\n                              request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n                              //\n                            PGRequest pgRequest = new PGRequest();\n                                pgRequest.pgStreams = new PGStreams();\n                                \n                              PGStream pgStream;\n                            for(int i = 0; i < 5; i++){\n                                   pgStream = new PGStream();\n                                    pgStream.streamId = \"fw_udp\"+(i+1);\n                                 pgStream.isEnabled = \"true\";\n                                        pgRequest.pgStreams.pgStream.add(pgStream);\n                           }\n                             request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n                             \n                              if (request != null) {\n                                        //\n                                    // Insert request into memory\n                                 //\n                                    insert(request);\n                                      //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    // message and history ??\n                                     notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"com\";\n                                   notification.policyVersion = \"1\";\n                                   try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Now send the operation request\n                                     //\n                                    if (request instanceof Request) {\n                                             try {\n                                                 System.out.println(\"APPC request sent:\");\n                                                   System.out.println(Serialization.gsonPretty.toJson(request));\n                                                 PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n                                                } catch (Exception e) {\n                                                       e.printStackTrace();\n                                                  System.out.println(\"Can\'t deliver request: \" + request);\n                                           }\n                                     }\n                             } else {\n                                      //\n                                    // what happens if it is null\n                                 //\n                            }\n                     }\n                     break;\n                        case \"MSO\":\n                 {\n                             //\n                            // Construct an operation\n                             //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"createModuleInstance\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // Construct an MSO request\n                           //\n                            MSORequest request = new MSORequest();\n                                request.requestDetails = new MSORequestDetails();\n                             request.requestDetails.modelInfo = new MSOModelInfo();\n                                request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\n                              request.requestDetails.requestInfo = new MSORequestInfo();\n                            request.requestDetails.requestParameters = new MSORequestParameters();\n                                request.requestDetails.requestParameters.userParams = null;\n                           //\n                            // cloudConfiguration\n                         //\n                            request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\n                            request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\n                              //\n                            // modelInfo\n                          //\n                            request.requestDetails.modelInfo.modelType = \"vfModule\";\n                            request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\n                               request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\n                         request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\n                           request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\n                              //\n                            // requestInfo\n                                //\n                            request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\n                           request.requestDetails.requestInfo.source = \"POLICY\";\n                               request.requestDetails.requestInfo.suppressRollback = false;\n                          //\n                            // relatedInstanceList\n                                //\n                            MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\n                              MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\n                              relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\n                               relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\n                               //\n                            relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\n                                relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\n                                relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\n                             relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\n                               relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\n                         //\n                            relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\n                                relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\n                            relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\n                               relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\n                             relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\n                                //      \n                              request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\n                          request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\n                          //\n                            // print MSO request for debug\n                                //\n                            System.out.println(\"MSO request sent:\");\n                            System.out.println(Serialization.gsonPretty.toJson(request));\n                         //\n                            //\n                            //\n                            if (request != null) {\n                                        //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"com\";\n                                   notification.policyVersion = \"1\";\n                                   try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\n                                        //\n                                    String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\n                                  //\n                                    // Call MSO\n                                   //\n                                    MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\n                                     //\n                                    if (response != null) {\n                                               //\n                                            // Assign requestId\n                                           //\n                                            request.requestId = $event.requestID.toString();                                                \n                                              response.request.requestId = $event.requestID.toString();\n                                             //\n                                            // Insert facts\n                                               //\n                                            insert(operationWrapper);\n                                             insert(request);\n                                              insert(response);\n                                     } else {\n                                              //\n                                            // MSO request not even accepted\n                                              //\n                                            notification.message = operationWrapper.operation.toMessage();\n                                                operationWrapper.operation.message = operationWrapper.operation.toMessage();\n                                          operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                                           $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n                                         notification.history.add(operationWrapper.operation);\n                                         notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                                            //\n                                            // Let interested parties know\n                                                //\n                                            try {\n                                                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                                                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                           } catch (Exception e) {\n                                                       System.out.println(\"Can\'t deliver notification: \" + notification);\n                                                 e.printStackTrace();\n                                          }\n                         notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        try {\n                             System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                        } catch (Exception e) {\n                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                        }\n                                               //\n                                            // Retract everything\n                                         //\n                                            retract($event);\n                                              retract($manager);\n                                    }\n                             } else {\n                                      System.err.println(\"constructed MSO request is invalid.\");\n                          }\n                     }\n                     break; \n               } \nend\n               \n/*\n*\n* This rule responds to APPC Response Events\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.APPC.RESPONSE\"\n   when\n          $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n            $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n              $request : Request( getCommonHeader().RequestID == $event.requestID )\n         $response : Response( getCommonHeader().RequestID == $event.requestID ) \n      then\n          System.out.println(\"rule APPC.RESPONSE is triggered.\");\n             if ($response.Status == null) {\n                       $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                  $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n         } \n            //\n            // Get the Response Code\n              //\n            ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\n               if (code == null) {\n                   $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                  $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n         }\n             //\n            // Construct notification\n             //\n            VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n             notification.from = \"policy\";\n               notification.policyName = drools.getRule().getName();\n         notification.policyScope = \"com\";\n           notification.policyVersion = \"1\";\n           notification.message = $operationWrapper.operation.toMessage();\n               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n                //\n            // Ok, let\'s figure out what APP-C\'s response is\n            //\n            switch (code) {\n                       case ACCEPT:\n                          $operationWrapper.operation.outcome = \"PROCESSING\";\n                         break;\n                        case ERROR:\n                   case REJECT:\n                          $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                          $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n                         break;\n                        case SUCCESS:\n                         $operationWrapper.operation.outcome = \"SUCCESS\";\n                            $manager.setControlLoopResult(\"SUCCESS\");\n                           break;\n                        case FAILURE:\n                         $operationWrapper.operation.outcome = \"FAILURE\";\n                            $manager.setControlLoopResult(\"FAILURE\");\n                           break;\n                }\n             if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\n                        notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            try {\n              System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n\n                 //\n                    // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            } else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\n                      retract($response);\n           } else {\n                      notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n                  System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n                   //\n                    // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            }\n             \nend           \n\n/*\n*\n* This rule is used to clean up APPC response\n*\n*/         \nrule \"BRMSParamvFWDemoPolicy.APPC.RESPONSE.CLEANUP\"\n       when\n          $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $response : Response($id : getCommonHeader().RequestID )\n          not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \n      then\n          System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\n             retract($response);\nend\n\n/*\n*\n* This rule responds to MSO Response Events\n*\n*/\nrule \"BRMSParamvFWDemoPolicy.MSO.RESPONSE\"\n   when\n          $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n            $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n              $request : MSORequest( requestId == $event.requestID.toString() )\n             $response : MSOResponse( request.requestId == $event.requestID.toString() )     \n      then\n          System.out.println(\"rule MSO.RESPONSE is triggered.\");\n              //\n            // Construct notification\n             //\n            VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n             notification.from = \"policy\";\n               notification.policyName = drools.getRule().getName();\n         notification.policyScope = \"com\";\n           notification.policyVersion = \"1\";\n           notification.message = $operationWrapper.operation.toMessage();\n               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n                //\n            // The operation can either be succeeded or failed\n            // \n           if($response.request.requestStatus.requestState.equals(\"COMPLETE\")) {\n                       $operationWrapper.operation.outcome = \"SUCCESS\";\n                    $manager.setControlLoopResult(\"SUCCESS\");\n                   notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n                     notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            //\n            // Let interested parties know\n            //\n            try {\n                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n            //\n                   // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            } else {\n                      $operationWrapper.operation.outcome = \"FAILURE\";\n                    $manager.setControlLoopResult(\"FAILURE\");\n                   notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n                     notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n            //\n                   // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            }\n             \nend   \nrule \"com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.Params\" \n       salience 1000 \n        when\n  then\n          Params params = new Params();\n         params.setAaiPatternMatch(1);\n         params.setAppcTopic(\"APPC-CL\");\n             params.setAaiURL(\"null\");\n           params.setMsoPassword(\"null\");\n              params.setClosedLoopControlName(\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n            params.setMsoURL(\"null\");\n           params.setAaiUsername(\"null\");\n              params.setActor(\"APPC\");\n            params.setMsoUsername(\"null\");\n              params.setAaiNamedQueryUUID(\"null\");\n                params.setAaiPassword(\"null\");\n              params.setNotificationTopic(\"POLICY-CL-MGT\");\n               insert(params);\nend\r\n','OTHER','com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt','doACPolicyPut','2017-03-14 19:58:19',0,'','doACPolicyPut','2017-03-14 19:58:19',1),(3203,'/* Autogenerated Code Please Don\'t change/remove this comment section. This is for the UI purpose. \n         <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> \n */ \n\r\n\r\n/*-\n * ============LICENSE_START=======================================================\n * archetype-closed-loop-demo-rules\n * ================================================================================\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\n * ================================================================================\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * \n *      http://www.apache.org/licenses/LICENSE-2.0\n * \n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============LICENSE_END=========================================================\n */\n\npackage org.onap.policy.controlloop;\n\nimport java.util.List;\nimport java.util.LinkedList;\nimport java.util.Map;\nimport java.util.HashMap;\nimport java.util.UUID;\n\nimport org.onap.policy.controlloop.VirtualControlLoopEvent;\nimport org.onap.policy.controlloop.ControlLoopEventStatus;\nimport org.onap.policy.controlloop.VirtualControlLoopNotification;\nimport org.onap.policy.controlloop.ControlLoopNotificationType;\nimport org.onap.policy.controlloop.ControlLoopOperation;\nimport org.onap.policy.controlloop.ControlLoopOperationWrapper;\nimport org.onap.policy.template.demo.ControlLoopException;\n\nimport org.onap.policy.aai.AAINQF199.AAINQF199CloudRegion;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperties;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ExtraProperty;\nimport org.onap.policy.aai.AAINQF199.AAINQF199GenericVNF;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InstanceFilters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\nimport org.onap.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Manager;\nimport org.onap.policy.aai.AAINQF199.AAINQF199NamedQuery;\nimport org.onap.policy.aai.AAINQF199.AAINQF199QueryParameters;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Request;\nimport org.onap.policy.aai.AAINQF199.AAINQF199RequestWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Response;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\nimport org.onap.policy.aai.AAINQF199.AAINQF199ServiceInstance;\nimport org.onap.policy.aai.AAINQF199.AAINQF199Tenant;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VfModule;\nimport org.onap.policy.aai.AAINQF199.AAINQF199VServer;\nimport org.onap.policy.aai.util.Serialization;\n\nimport org.onap.policy.appc.CommonHeader;\nimport org.onap.policy.appc.Request;\nimport org.onap.policy.appc.Response;\nimport org.onap.policy.appc.ResponseCode;\nimport org.onap.policy.appc.ResponseStatus;\nimport org.onap.policy.appc.ResponseValue;\n\nimport org.onap.policy.template.demo.EventManager;\nimport org.onap.policy.vnf.trafficgenerator.PGRequest;\nimport org.onap.policy.vnf.trafficgenerator.PGStream;\nimport org.onap.policy.vnf.trafficgenerator.PGStreams;\n\nimport org.onap.policy.mso.MSOManager;\nimport org.onap.policy.mso.MSORequest;\nimport org.onap.policy.mso.MSORequestStatus;\nimport org.onap.policy.mso.MSORequestDetails;\nimport org.onap.policy.mso.MSOModelInfo;\nimport org.onap.policy.mso.MSOCloudConfiguration;\nimport org.onap.policy.mso.MSORequestInfo;\nimport org.onap.policy.mso.MSORequestParameters;\nimport org.onap.policy.mso.MSORelatedInstanceListElement;\nimport org.onap.policy.mso.MSORelatedInstance;\nimport org.onap.policy.mso.MSOResponse;\n\nimport org.onap.policy.drools.system.PolicyEngine;\n\n//\n// These parameters are required to build the runtime policy\n//\ndeclare Params\n    closedLoopControlName : String\n    actor : String\n    aaiURL : String\n    aaiUsername : String\n    aaiPassword : String\n    msoURL : String\n    msoUsername : String\n    msoPassword : String\n    aaiNamedQueryUUID : String\n    aaiPatternMatch : int \n    notificationTopic : String\n    appcTopic : String\nend\n\n/*\n*\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\n* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)\n*\n*\n*rule \"BRMSParamvLBDemoPolicy.SETUP\"\n*    when\n* then\n*         System.out.println(\"rule SETUP is triggered.\");\n*            Params params = new Params();\n*                params.setClosedLoopControlName(\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n*            params.setActor(\"MSO\");\n*            params.setAaiURL(\"https://aai.api.simpledemo.openecomp.org:8443\");\n*         params.setAaiUsername(\"POLICY\");\n*           params.setAaiPassword(\"POLICY\");\n*           params.setMsoURL(\"http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra\");\n*           params.setMsoUsername(\"InfraPortalClient\");\n*                params.setMsoPassword(\"password1$\");\n*               params.setAaiNamedQueryUUID(\"f199cb88-5e69-4b1f-93e0-6f257877d066\");\n*               params.setAaiPatternMatch(0);\n*                params.setNotificationTopic(\"POLICY-CL-MGT\");\n*              params.setAppcTopic(\"APPC-CL\");\n*            //\n*           // This stays in memory as long as the rule is alive and running\n*             //\n*           insert(params);\n*end\n*/\n/*\n*\n* This rule responds to DCAE Events\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT\"\n   when\n        $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\n then\n          System.out.println(\"rule EVENT is triggered.\");\n             try {\n                 // \n                   // Check the requestID in the event to make sure it is not null before we create the EventManager. \n                   // The EventManager will do extra syntax checking as well check if the closed loop is disabled/\n                       //\n                    if ($event.requestID == null) {\n                               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                             notification.notification = ControlLoopNotificationType.REJECTED;\n                             notification.from = \"policy\";\n                               notification.message = \"Missing requestID from DCAE event\";\n                         notification.policyName = drools.getRule().getName();\n                         notification.policyScope = \"com\";\n                           notification.policyVersion = \"1\";\n                           //\n                            // Let interested parties know\n                                //\n                            try {\n                                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                           } catch (Exception e) {\n                                       e.printStackTrace();\n                                  System.out.println(\"Can\'t deliver notification: \" + notification);\n                         }\n                             //\n                            // Retract it from memory\n                             //\n                            retract($event);\n                              System.out.println(\"Event with requestID=null has been retracted.\");\n                        } else {\n                              //\n                            // Create an EventManager\n                             //\n                            EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\n                         //\n                            // Determine if EventManager can actively process the event (i.e. syntax)\n                             //\n                            VirtualControlLoopNotification notification = manager.activate($event);\n                               notification.from = \"policy\"; \n                              notification.policyName = drools.getRule().getName();\n                         notification.policyScope = \"com\";\n                           notification.policyVersion = \"1\";\n                           //\n                            // Are we actively pursuing this event?\n                               //\n                            if (notification.notification == ControlLoopNotificationType.ACTIVE) {\n                                        //\n                                    // Insert Event Manager into memory, this will now kick off processing.\n                                       //\n                                    insert(manager);\n                                      //\n                                    // Let interested parties know\n                                        //\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               e.printStackTrace();\n                                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                                 }               \n                              } else {\n                                      //\n                                    // Let interested parties know\n                                        //\n                                    try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               e.printStackTrace();\n                                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                                 }\n                                     //\n                                    // Retract it from memory\n                                     //\n                                    retract($event);\n                              }\n                             //\n                            // Now that the manager is inserted into Drools working memory, we\'ll wait for\n                               // another rule to fire in order to continue processing. This way we can also\n                         // then screen for additional ONSET and ABATED events for this same RequestIDs \n                               // and for different RequestIDs but with the same closedLoopControlName and target.\n                           //\n                    }\n             //\n            } catch (Exception e) {\n                       e.printStackTrace();\n                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                     notification.notification = ControlLoopNotificationType.REJECTED;\n                     notification.message = \"Exception occurred \" + e.getMessage();\n                      notification.policyName = drools.getRule().getName();\n                 notification.policyScope = \"com\";\n                   notification.policyVersion = \"1\";\n                   //\n                    //\n                    //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e1) {\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e1.printStackTrace();\n                 }\n                     //\n                    // Retract the event\n                  //\n                    retract($event);\n              }\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\n* is created. We can start the operations for this closed loop.\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER\"\n    when\n          $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n             $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\n    then\n          System.out.println(\"rule EVENT.MANAGER is triggered.\");\n             //\n            // Check which event this is.\n         //\n            EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\n              //\n            // We only want the initial ONSET event in memory,\n            // all the other events need to be retracted to support\n               // cleanup and avoid the other rules being fired for this event.\n              //\n            if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\n                       System.out.println(\"Retracting \"+eventStatus+\" Event.\");\n                  retract($event);\n                      return;\n               }\n             //\n            // Now the event in memory is first onset event\n               //\n            try {\n                 //\n                    // Pull the known AAI field from the Event\n                    //\n                    // generic-vnf is needed for vFirewall case\n                   // vserver-name is needed for vLoadBalancer case\n                      //\n                    String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\n                   String vserver = $event.AAI.get(\"vserver.vserver-name\");\n                    //\n                    // Check if we are implementing a simple pattern match.\n                       //\n                    if ($params.getAaiPatternMatch() == 1) {\n                              //\n                            // Yes\n                                //\n                            //Basic naming characteristics:\n                               //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\n                                //Example: \n                           //VF Name (9 characters):    cscf0001v\n                                //VM Name(13 characters): cscf0001vm001\n                               //VFC name(19 characters): cscf0001vm001cfg001\n                                //\n                            // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \n                               // replaced with\n                              // zdfw1fwl01pgn02 or zdfw1fwl01pgn01\n                         //\n                            int index = genericVNF.lastIndexOf(\"fwl\");\n                          if (index == -1) {\n                                    System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\n                         } else {\n                                      genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\n                         }\n                             //\n                            // Construct an APPC request\n                          //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"ModifyConfig\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // insert operationWrapper into memory\n                                //\n                            insert(operationWrapper);\n                             //\n                            Request request = new Request();\n                              request.CommonHeader = new CommonHeader();\n                            request.CommonHeader.RequestID = $event.requestID;\n                            request.Action = operation.operation;\n                         request.Payload = new HashMap<String, Object>();\n                              //\n                            // Fill in the payload\n                                //\n                            request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n                              //\n                            PGRequest pgRequest = new PGRequest();\n                                pgRequest.pgStreams = new PGStreams();\n                                \n                              PGStream pgStream;\n                            for(int i = 0; i < 5; i++){\n                                   pgStream = new PGStream();\n                                    pgStream.streamId = \"fw_udp\"+(i+1);\n                                 pgStream.isEnabled = \"true\";\n                                        pgRequest.pgStreams.pgStream.add(pgStream);\n                           }\n                             request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n                             \n                              if (request != null) {\n                                        //\n                                    // Insert request into memory\n                                 //\n                                    insert(request);\n                                      //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    // message and history ??\n                                     notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"com\";\n                                   notification.policyVersion = \"1\";\n                                   try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Now send the operation request\n                                     //\n                                    if (request instanceof Request) {\n                                             try {\n                                                 System.out.println(\"APPC request sent:\");\n                                                   System.out.println(Serialization.gsonPretty.toJson(request));\n                                                 PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n                                                } catch (Exception e) {\n                                                       e.printStackTrace();\n                                                  System.out.println(\"Can\'t deliver request: \" + request);\n                                           }\n                                     }\n                             } else {\n                                      //\n                                    // what happens if it is null\n                                 //\n                            }\n                             //\n                    } else {\n                              //\n                            // create AAI named-query request with UUID started with \"F199\"\n                             //\n                            AAINQF199Request aainqf199request = new AAINQF199Request();\n                           AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\n                                AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\n                          AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\n                            //\n                            // queryParameters\n                            //\n                            aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \n                                aainqf199queryparam.namedQuery = aainqf199namedquery;\n                         aainqf199request.queryParameters = aainqf199queryparam;\n                               //\n                            // instanceFilters\n                            //\n                            Map aainqf199instancefiltermap = new HashMap();\n                               Map aainqf199instancefiltermapitem = new HashMap();\n                           aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \n                               aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\n                          aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\n                               aainqf199request.instanceFilters = aainqf199instancefilter;\n                           //\n                            // print aainqf199request for debug\n                           //\n                            System.out.println(\"AAI Request sent:\");\n                            System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\n                                //\n                            // Create AAINQF199RequestWrapper\n                             //\n                            AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\n                            //\n                            // insert aainqf199request into memory\n                                //\n                            insert(aainqf199RequestWrapper);\n                      }\n                     //\n            } catch (Exception e) {\n                e.printStackTrace();\n         }\nend\n\n/*\n*\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST\"\n when\n          $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n             $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n     then\n          System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\n            //\n            // send the request\n           //\n            AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\n                                                                                                        $aainqf199RequestWrapper.aainqf199request, $event.requestID);\n              //\n            // Check AAI response\n         //\n            if (aainqf199response == null) {\n                      System.err.println(\"Failed to get AAI response\");\n                   //\n                    // Fail and retract everything\n                        //\n                    retract($event);\n                      retract($manager);\n                    retract($aainqf199RequestWrapper);\n            } else {\n                      //\n                    // Create AAINQF199ResponseWrapper\n                    //\n                    AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\n                        //\n                    // insert aainqf199ResponseWrapper to memeory\n                 //\n                    insert(aainqf199ResponseWrapper);\n             }\nend\n\n/*\n*\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE\"\n       when \n         $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n             $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\n             $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\n   then\n          System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\n           //\n            // Extract related fields out of AAINQF199RESPONSE\n            //\n            String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \n                   vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\n                      serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\n                   vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \n                vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\n              try {\n                 //\n                    // vnfItem\n                    //\n                    vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\n                        vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\n                    vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\n                       vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\n                      vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\n                    vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n                  vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\n                     vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n                     //\n                    // serviceItem\n                        //\n                    serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\n                   serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\n                 serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\n                  serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\n                  serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\n                      serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\n                 //\n                    // Find the index for base vf module and non-base vf module\n                   //\n                    int baseIndex = -1;\n                   int nonBaseIndex = -1;\n                        List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;\n                     for (AAINQF199InventoryResponseItem m : inventoryItems) {\n                             if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {\n                                        baseIndex = inventoryItems.indexOf(m);\n                                } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {\n                                      nonBaseIndex = inventoryItems.indexOf(m);\n                             }\n                             //\n                            if (baseIndex != -1 && nonBaseIndex != -1) {\n                                  break;\n                                }\n                     }\n                     //\n                    // Report the error if either base vf module or non-base vf module is not found\n                       //\n                    if (baseIndex == -1 || nonBaseIndex == -1) {\n                          System.err.println(\"Either base or non-base vf module is not found from AAI response.\");\n                            retract($aainqf199RequestWrapper);\n                            retract($aainqf199ResponseWrapper);\n                           retract($manager);\n                            retract($event);\n                              return;\n                       }\n                     //\n                    // This comes from the base module\n                    //\n                    vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;\n                      vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\n                  //\n                    // vfModuleItem - NOT the base module\n                 //\n                    vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;\n                 vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;\n                    vfModuleItemModelName =                         $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;\n                      vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;\n                      //\n                    // tenantItem\n                 //\n                    tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\n                   //\n                    // cloudRegionItem\n                    //\n                    cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\n                   //\n            } catch (Exception e) {\n                       e.printStackTrace();\n                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                     notification.notification = ControlLoopNotificationType.REJECTED;\n                     notification.message = \"Exception occurred \" + e.getMessage();\n                      notification.policyName = drools.getRule().getName();\n                 notification.policyScope = \"com\";\n                   notification.policyVersion = \"1\";\n                   //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e1) {\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e1.printStackTrace();\n                 }\n                     //\n                    notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        notification.message = \"Invalid named-query response from AAI\";\n            //\n            try {\n                  System.out.println(Serialization.gsonPretty.toJson(notification));\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e1) {\n                System.out.println(\"Can\'t deliver notification: \" + notification);\n                e1.printStackTrace();\n            }\n                    //\n                    // Retract everything\n                 //\n                    retract($aainqf199RequestWrapper);\n                    retract($aainqf199ResponseWrapper);\n                   retract($manager);\n                    retract($event);\n                      return;\n               }       \n              //\n            // Extracted fields should not be null\n                //\n            if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\n                 (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\n              (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\n               (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\n                   (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\n                (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\n              (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\n                  (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\n                (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\n                 //\n                    System.err.println(\"some fields are missing from AAI response.\");\n                   //\n                    // Fail and retract everything\n                        //\n                    retract($aainqf199RequestWrapper);\n                    retract($aainqf199ResponseWrapper);\n                   retract($manager);\n                    retract($event);\n                      return;\n               }\n             //\n            // We don\'t need them any more\n               //\n            retract($aainqf199ResponseWrapper);\n           retract($aainqf199RequestWrapper);  \n          //\n            // check the actor of this closed loop\n                //\n            switch ($params.getActor()) {\n                 case \"APPC\":\n                        {\n                             //\n                            // Construct an APPC request\n                          //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"ModifyConfig\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // insert operationWrapper into memory\n                                //\n                            insert(operationWrapper);\n                             //\n                            Request request = new Request();\n                              request.CommonHeader = new CommonHeader();\n                            request.CommonHeader.RequestID = $event.requestID;\n                            request.Action = operation.operation;\n                         request.Payload = new HashMap<String, Object>();\n                              //\n                            // Fill in the payload\n                                // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\n                           //\n                            String genericVNF = \"zdfw1fwl01pgn02\";\n                              request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\n                              //\n                            PGRequest pgRequest = new PGRequest();\n                                pgRequest.pgStreams = new PGStreams();\n                                \n                              PGStream pgStream;\n                            for(int i = 0; i < 5; i++){\n                                   pgStream = new PGStream();\n                                    pgStream.streamId = \"fw_udp\"+(i+1);\n                                 pgStream.isEnabled = \"true\";\n                                        pgRequest.pgStreams.pgStream.add(pgStream);\n                           }\n                             request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\n                             \n                              if (request != null) {\n                                        //\n                                    // Insert request into memory\n                                 //\n                                    insert(request);\n                                      //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    // message and history ??\n                                     notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"com\";\n                                   notification.policyVersion = \"1\";\n                                   try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Now send the operation request\n                                     //\n                                    if (request instanceof Request) {\n                                             try {\n                                                 System.out.println(\"APPC request sent:\");\n                                                   System.out.println(Serialization.gsonPretty.toJson(request));\n                                                 PolicyEngine.manager.deliver($params.getAppcTopic(), request);\n                                                } catch (Exception e) {\n                                                       e.printStackTrace();\n                                                  System.out.println(\"Can\'t deliver request: \" + request);\n                                           }\n                                     }\n                             } else {\n                                      //\n                                    // what happens if it is null\n                                 //\n                            }\n                     }\n                     break;\n                        case \"MSO\":\n                 {\n                             //\n                            // Construct an operation\n                             //\n                            ControlLoopOperation operation = new ControlLoopOperation();\n                          operation.actor = $params.getActor();\n                         operation.operation = \"createModuleInstance\";\n                               operation.target = $event.target;\n                             //\n                            // Create operationWrapper\n                            //\n                            ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\n                          //\n                            // Construct an MSO request\n                           //\n                            MSORequest request = new MSORequest();\n                                request.requestDetails = new MSORequestDetails();\n                             request.requestDetails.modelInfo = new MSOModelInfo();\n                                request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\n                              request.requestDetails.requestInfo = new MSORequestInfo();\n                            request.requestDetails.requestParameters = new MSORequestParameters();\n                                request.requestDetails.requestParameters.userParams = null;\n                           //\n                            // cloudConfiguration\n                         //\n                            request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\n                            request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\n                              //\n                            // modelInfo\n                          //\n                            request.requestDetails.modelInfo.modelType = \"vfModule\";\n                            request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\n                               request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\n                         request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\n                           request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\n                              //\n                            // requestInfo\n                                //\n                            request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\n                           request.requestDetails.requestInfo.source = \"POLICY\";\n                               request.requestDetails.requestInfo.suppressRollback = false;\n                          //\n                            // relatedInstanceList\n                                //\n                            MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\n                              MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\n                              relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\n                               relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\n                               //\n                            relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\n                                relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\n                                relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\n                             relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\n                               relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\n                         //\n                            relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\n                                relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\n                            relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\n                               relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\n                             relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\n                                //      \n                              request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\n                          request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\n                          //\n                            // print MSO request for debug\n                                //\n                            System.out.println(\"MSO request sent:\");\n                            System.out.println(Serialization.gsonPretty.toJson(request));\n                         //\n                            //\n                            //\n                            if (request != null) {\n                                        //\n                                    // Tell interested parties we are performing this Operation\n                                   //\n                                    VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n                                     notification.notification = ControlLoopNotificationType.OPERATION;\n                                    notification.from = \"policy\";\n                                       notification.policyName = drools.getRule().getName();\n                                 notification.policyScope = \"com\";\n                                   notification.policyVersion = \"1\";\n                                   try {\n                                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                   } catch (Exception e) {\n                                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                                         e.printStackTrace();\n                                  }\n                                     //\n                                    // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\n                                        //\n                                    String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\n                                  //\n                                    // Call MSO\n                                   //\n                                    MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\n                                     //\n                                    if (response != null) {\n                                               //\n                                            // Assign requestId\n                                           //\n                                            request.requestId = $event.requestID.toString();                                                \n                                              response.request.requestId = $event.requestID.toString();\n                                             //\n                                            // Insert facts\n                                               //\n                                            insert(operationWrapper);\n                                             insert(request);\n                                              insert(response);\n                                     } else {\n                                              //\n                                            // MSO request not even accepted\n                                              //\n                                            notification.message = operationWrapper.operation.toMessage();\n                                                operationWrapper.operation.message = operationWrapper.operation.toMessage();\n                                          operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                                           $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n                                         notification.history.add(operationWrapper.operation);\n                                         notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                                            //\n                                            // Let interested parties know\n                                                //\n                                            try {\n                                                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                                                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                                           } catch (Exception e) {\n                                                       System.out.println(\"Can\'t deliver notification: \" + notification);\n                                                 e.printStackTrace();\n                                          }\n                         notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n                        try {\n                             System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                        } catch (Exception e) {\n                          System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                        }\n                                               //\n                                            // Retract everything\n                                         //\n                                            retract($event);\n                                              retract($manager);\n                                    }\n                             } else {\n                                      System.err.println(\"constructed MSO request is invalid.\");\n                          }\n                     }\n                     break; \n               } \nend\n               \n/*\n*\n* This rule responds to APPC Response Events\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.APPC.RESPONSE\"\n   when\n          $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n             $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n              $request : Request( getCommonHeader().RequestID == $event.requestID )\n         $response : Response( getCommonHeader().RequestID == $event.requestID ) \n      then\n          System.out.println(\"rule APPC.RESPONSE is triggered.\");\n             if ($response.Status == null) {\n                       $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                  $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n         } \n            //\n            // Get the Response Code\n              //\n            ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\n               if (code == null) {\n                   $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                  $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n         }\n             //\n            // Construct notification\n             //\n            VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n             notification.from = \"policy\";\n               notification.policyName = drools.getRule().getName();\n         notification.policyScope = \"com\";\n           notification.policyVersion = \"1\";\n           notification.message = $operationWrapper.operation.toMessage();\n               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n                //\n            // Ok, let\'s figure out what APP-C\'s response is\n            //\n            switch (code) {\n                       case ACCEPT:\n                          $operationWrapper.operation.outcome = \"PROCESSING\";\n                         break;\n                        case ERROR:\n                   case REJECT:\n                          $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\n                          $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\n                         break;\n                        case SUCCESS:\n                         $operationWrapper.operation.outcome = \"SUCCESS\";\n                            $manager.setControlLoopResult(\"SUCCESS\");\n                           break;\n                        case FAILURE:\n                         $operationWrapper.operation.outcome = \"FAILURE\";\n                            $manager.setControlLoopResult(\"FAILURE\");\n                           break;\n                }\n             if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\n                        notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            try {\n              System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n\n                 //\n                    // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            } else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\n                      retract($response);\n           } else {\n                      notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n                  System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n                   //\n                    // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            }\n             \nend           \n\n/*\n*\n* This rule is used to clean up APPC response\n*\n*/         \nrule \"BRMSParamvLBDemoPolicy.APPC.RESPONSE.CLEANUP\"\n       when\n          $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n        $response : Response($id : getCommonHeader().RequestID )\n           not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \n      then\n          System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\n             retract($response);\nend\n\n/*\n*\n* This rule responds to MSO Response Events\n*\n*/\nrule \"BRMSParamvLBDemoPolicy.MSO.RESPONSE\"\n   when\n          $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\n             $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\n                $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\n              $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\n              $request : MSORequest( requestId == $event.requestID.toString() )\n             $response : MSOResponse( request.requestId == $event.requestID.toString() )     \n      then\n          System.out.println(\"rule MSO.RESPONSE is triggered.\");\n              //\n            // Construct notification\n             //\n            VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\n             notification.from = \"policy\";\n               notification.policyName = drools.getRule().getName();\n         notification.policyScope = \"com\";\n           notification.policyVersion = \"1\";\n           notification.message = $operationWrapper.operation.toMessage();\n               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\n                //\n            // The operation can either be succeeded or failed\n            // \n           if($response.request.requestStatus.requestState.equals(\"COMPLETE\")) {\n                       $operationWrapper.operation.outcome = \"SUCCESS\";\n                    $manager.setControlLoopResult(\"SUCCESS\");\n                   notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n                     notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\n            //\n            // Let interested parties know\n            //\n            try {\n                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n            //\n                   // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            } else {\n                      $operationWrapper.operation.outcome = \"FAILURE\";\n                    $manager.setControlLoopResult(\"FAILURE\");\n                   notification.history.add($operationWrapper.operation);\n                        notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\n                    //\n                    // Let interested parties know\n                        //\n                    try {\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\n                            PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n                   } catch (Exception e) {\n                               System.out.println(\"Can\'t deliver notification: \" + notification);\n                         e.printStackTrace();\n                  }\n                     notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\n            //\n            // Let interested parties know\n            //\n            try {\n                 System.out.println(Serialization.gsonPretty.toJson(notification));\n                    PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\n            } catch (Exception e) {\n              System.out.println(\"Can\'t deliver notification: \" + notification);\n                 e.printStackTrace();\n            }\n            //\n                   // We are going to retract these objects from memory\n                  //\n                    System.out.println(\"Retracting everything\");\n                        retract($operationWrapper);\n                   retract($request);\n                    retract($response);\n                   retract($event);\n                      retract($manager);\n            }\n             \nend   \nrule \"com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.Params\" \n       salience 1000 \n        when\n  then\n          Params params = new Params();\n         params.setAaiPatternMatch(0);\n         params.setAppcTopic(\"APPC-CL\");\n             params.setAaiURL(\"https://aai.api.simpledemo.openecomp.org:8443\");\n          params.setMsoPassword(\"password1$\");\n                params.setClosedLoopControlName(\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\n             params.setAaiUsername(\"POLICY\");\n            params.setMsoURL(\"http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra\");\n            params.setActor(\"MSO\");\n             params.setMsoUsername(\"InfraPortalClient\");\n         params.setAaiNamedQueryUUID(\"f199cb88-5e69-4b1f-93e0-6f257877d066\");\n                params.setAaiPassword(\"POLICY\");\n            params.setNotificationTopic(\"POLICY-CL-MGT\");\n               insert(params);\nend\r\n','OTHER','com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt','doACPolicyPut','2017-03-14 20:00:56',0,'','doACPolicyPut','2017-03-14 20:00:56',1);
-
-INSERT INTO `policyentity` VALUES (3202,'doACPolicyPut','2017-03-14 19:58:19',0,'BRMSParam vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-14 19:58:19','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:256f4712-a965-4817-a851-a71bdeb9fb49\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>BRMSParam vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:8cdb88aa-448b-4ed1-bce5-6a037651e73c\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"BRMSPARAMID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"key:controller\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">vFW</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml',0,'com',1,NULL,3201),(3204,'doACPolicyPut','2017-03-14 20:00:56',0,'BRMSParam vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:','doACPolicyPut','2017-03-14 20:00:56','<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:ace93d23-7a21-450a-87b4-5ff11e01d4b1\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>BRMSParam vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"PolicyName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n            <AllOf>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ONAPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\" AttributeId=\"ConfigName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskType\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"RiskLevel\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"guard\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.onap.function.regex-match\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                    <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"TTLDate\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n            </AllOf>\n        </AnyOf>\n    </Target>\n    <Rule RuleId=\"urn:com:xacml:rule:id:9d472f3a-bab1-4bee-8bfc-0ee1b4e11ad6\" Effect=\"Permit\">\n        <Target>\n            <AnyOf>\n                <AllOf>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">ACCESS</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:action\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:action:action-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                    <Match MatchId=\"urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case\">\n                        <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Config</AttributeValue>\n                        <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                    </Match>\n                </AllOf>\n            </AnyOf>\n        </Target>\n        <AdviceExpressions>\n            <AdviceExpression AdviceId=\"BRMSPARAMID\" AppliesTo=\"Permit\">\n                <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">Configuration</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"URLID\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URL/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"PolicyName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"VersionNumber\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ONAPName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">DROOLS</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"matching:ConfigName\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">BRMS_PARAM_RULE</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"key:controller\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">vDNS</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskType\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">SampleRiskType</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"RiskLevel\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">1</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"guard\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">False</AttributeValue>\n                </AttributeAssignmentExpression>\n                <AttributeAssignmentExpression AttributeId=\"TTLDate\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" Issuer=\"\">\n                    <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">NA</AttributeValue>\n                </AttributeAssignmentExpression>\n            </AdviceExpression>\n        </AdviceExpressions>\n    </Rule>\n</Policy>\n','Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml',0,'com',1,NULL,3203);
-
-INSERT INTO `policyversion` VALUES (1,'com/Config_BRMS_Param_BRMSParamvFWDemoPolicy',1,1,'2017-03-03 17:16:37','demo','2017-03-03 17:16:37','demo'),(2,'com/Config_BRMS_Param_BRMSParamvLBDemoPolicy',1,1,'2017-03-03 17:20:03','demo','2017-03-03 17:20:03','demo');
-
-INSERT INTO `policyversion` VALUES (3,'com/Config_MS_vFirewall',1,1,'2017-03-03 17:26:26','demo','2017-03-03 17:26:26','demo'),(4,'com/Config_MS_vLoadBalancer',1,1,'2017-03-03 17:28:13','demo','2017-03-03 17:28:13','demo');
-
 insert into sequence (seq_name, seq_count) values ('SEQ_GEN', 3050); 
 
 set foreign_key_checks=1; 
index c6f6303..f1a3e90 100644 (file)
@@ -26,4 +26,6 @@ CREATE TABLE `onap_sdk`.`rainydaytreatments` (
   `workstep` varchar(250) DEFAULT NULL,
   `treatments` varchar(1024) DEFAULT NULL,
   PRIMARY KEY (`id`)
-);
\ No newline at end of file
+);
+
+INSERT INTO `onap_sdk`.`microservicemodels` (`id`, `modelName`, `DESCRIPTION`, `Dependency`, `imported_by`, `attributes`, `ref_attributes`, `sub_attributes`, `version`) VALUES ('3', 'policy_tosca_tca', 'Micro Service Policy Tosca model', '[]', 'API', 'policyVersion=string:defaultValue-:required-true:MANY-false,policyName=string:defaultValue-:required-true:MANY-false,controlLoopSchemaType=string:defaultValue-:required-true:MANY-false,policyScope=string:defaultValue-:required-true:MANY-false,eventName=string:defaultValue-:required-true:MANY-false,', 'threshholds=Threshold:MANY-true,', '{\"Threshold\":{\"severity\":\"string:defaultValue-null:required-true:MANY-false\",\"fieldPath\":\"string:defaultValue-null:required-true:MANY-false\",\"thresholdValue\":\"integer:defaultValue-null:required-true:MANY-false\",\"closedLoopEventStatus\":\"string:defaultValue-null:required-true:MANY-false\",\"version\":\"string:defaultValue-1.0.2:required-true:MANY-false\",\"closedLoopControlName\":\"string:defaultValue-null:required-true:MANY-false\",\"direction\":\"string:defaultValue-null:required-true:MANY-false\"}}', '1.0.0');
index 9e95ed7..f56e87c 100644 (file)
@@ -54,14 +54,12 @@ repositoryPassword = ${{repositoryPassword}}
 policyKeyID = controller
 
 ## GroupNames can be comma separated values. 
-groupNames = default, vFW , vDNS
+groupNames = default, amsterdam
 
 default.groupID = ${{groupID}}
 default.artifactID = ${{artifactID}}
-vFW.groupID= ${{VFW_GROUP_ID}}
-vFW.artifactID= ${{VFW_ARTIFACT_ID}}
-vDNS.groupID= ${{VDNS_GROUP_ID}}
-vDNS.artifactID= ${{VDNS_ARTIFACT_ID}}
+amsterdam.groupID= ${{AMSTERDAM_GROUP_ID}}
+amsterdam.artifactID= ${{AMSTERDAM_ARTIFACT_ID}}
 
 #Integrity Monitor values
 #database driver for Integrity Monitor
index 9c25c74..ffd368e 100644 (file)
                        "groupId": "org.onap.policy.drools-applications",
                        "artifactId": "trafficgenerator",
                        "version": "${{BRMS_DEPENDENCY_VERSION}}"
-               }]
-       }
+               }],
+        "amsterdam": [{
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "events",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "appclcm",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "vfc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "so",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "aai",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "sdc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "trafficgenerator",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "eventmanager",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "guard",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actorServiceProvider",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.appclcm",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.so",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "actor.vfc",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "org.onap.policy.drools-applications",
+            "artifactId": "policy-yaml",
+            "version": "${{BRMS_DEPENDENCY_VERSION}}"
+        }, {
+            "groupId": "com.att.research.xacml",
+            "artifactId": "xacml-pdp",
+            "version": "1.0.0"
+        }]
+    }
 }
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml
deleted file mode 100755 (executable)
index e57f8fa..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:256f4712-a965-4817-a851-a71bdeb9fb49" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>BRMSParam vFW Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:8cdb88aa-448b-4ed1-bce5-6a037651e73c" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="BRMSPARAMID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="key:controller" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vFW</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml
deleted file mode 100755 (executable)
index 7b60d8e..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:ace93d23-7a21-450a-87b4-5ff11e01d4b1" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>BRMSParam vLB Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:9d472f3a-bab1-4bee-8bfc-0ee1b4e11ad6" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="BRMSPARAMID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DROOLS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">BRMS_PARAM_RULE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="key:controller" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vDNS</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vFirewall.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vFirewall.1.xml
deleted file mode 100644 (file)
index 3b81613..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:34928b05-b0f6-4974-8458-f4d34a2a1764" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>Micro Service vFirewall Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vFirewall.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="service" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="uuid" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="location" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:063161de-0534-4989-bd01-42f784daf21e" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="MSID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_MS_vFirewall.1.json</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vFirewall.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:service" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:uuid" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:Location" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="Priority" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vLoadBalancer.1.xml b/packages/base/src/files/install/servers/console/bin/workspace/admin/repository/com/Config_MS_vLoadBalancer.1.xml
deleted file mode 100644 (file)
index d48bf9e..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="urn:com:xacml:policy:id:c220802a-70ee-4ca8-9f1e-f8a515650381" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
-    <Description>Micro Service vLoadBalancer Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>
-    <Target>
-        <AnyOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="PolicyName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-            <AllOf>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ONAPName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" AttributeId="ConfigName" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="service" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="uuid" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="location" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskType" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="RiskLevel" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">False</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="guard" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-                <Match MatchId="org.onap.function.regex-match">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                    <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="TTLDate" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                </Match>
-            </AllOf>
-        </AnyOf>
-    </Target>
-    <Rule RuleId="urn:com:xacml:rule:id:fca27dab-6c09-4541-8136-328abaec2656" Effect="Permit">
-        <Target>
-            <AnyOf>
-                <AllOf>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ACCESS</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                    <Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case">
-                        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Config</AttributeValue>
-                        <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
-                    </Match>
-                </AllOf>
-            </AnyOf>
-        </Target>
-        <AdviceExpressions>
-            <AdviceExpression AdviceId="MSID" AppliesTo="Permit">
-                <AttributeAssignmentExpression AttributeId="type" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Configuration</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="URLID" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">$URL/Config/com.Config_MS_vLoadBalancer.1.json</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="PolicyName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">com.Config_MS_vLoadBalancer.1.xml</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="VersionNumber" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ONAPName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DCAE</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:ConfigName" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleConfigName</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:service" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TcaMetrics-v1.0.0.5</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:uuid" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="matching:Location" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleServiceLocation</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="Priority" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskType" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">SampleRiskType</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="RiskLevel" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="guard" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1</AttributeValue>
-                </AttributeAssignmentExpression>
-                <AttributeAssignmentExpression AttributeId="TTLDate" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" Issuer="">
-                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">NA</AttributeValue>
-                </AttributeAssignmentExpression>
-            </AdviceExpression>
-        </AdviceExpressions>
-    </Rule>
-</Policy>
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.1.txt
deleted file mode 100755 (executable)
index 6ff244e..0000000
+++ /dev/null
@@ -1,1145 +0,0 @@
-/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. 
-        <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> 
- */ 
-
-
-/*-
- * ============LICENSE_START=======================================================
- * archetype-closed-loop-demo-rules
- * ================================================================================
- * Copyright (C) 2017 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.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.controlloop;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.UUID;
-
-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.template.demo.ControlLoopException;
-
-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.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.onap.policy.template.demo.EventManager;
-import org.onap.policy.vnf.trafficgenerator.PGRequest;
-import org.onap.policy.vnf.trafficgenerator.PGStream;
-import org.onap.policy.vnf.trafficgenerator.PGStreams;
-
-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.onap.policy.drools.system.PolicyEngine;
-
-//
-// These parameters are required to build the runtime policy
-//
-declare Params
-    closedLoopControlName : String
-    actor : String
-    aaiURL : String
-    aaiUsername : String
-    aaiPassword : String
-    msoURL : String
-    msoUsername : String
-    msoPassword : String
-    aaiNamedQueryUUID : String
-    aaiPatternMatch : int 
-    notificationTopic : String
-    appcTopic : String
-end
-
-/*
-*
-* Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)
-*
-*
-*rule "BRMSParamvFWDemoPolicy.SETUP"
-*      when
-*      then
-*              System.out.println("rule SETUP is triggered.");
-*              Params params = new Params();
-*              params.setClosedLoopControlName("CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-*              params.setActor("APPC");
-*              params.setAaiURL("null");
-*              params.setAaiUsername("null");
-*              params.setAaiPassword("null");
-*              params.setMsoURL("null");
-*              params.setMsoUsername("null");
-*              params.setMsoPassword("null");
-*              params.setAaiNamedQueryUUID("null");
-*              params.setAaiPatternMatch(1);
-*              params.setNotificationTopic("POLICY-CL-MGT");
-*              params.setAppcTopic("APPC-CL");
-*              //
-*              // This stays in memory as long as the rule is alive and running
-*              //
-*              insert(params);
-*end
-*/
-/*
-*
-* This rule responds to DCAE Events
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT"
-       when
-        $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
-       then
-               System.out.println("rule EVENT is triggered.");
-               try {
-                       // 
-                       // Check the requestID in the event to make sure it is not null before we create the EventManager. 
-                       // The EventManager will do extra syntax checking as well check if the closed loop is disabled/
-                       //
-                       if ($event.requestID == null) {
-                               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                               notification.notification = ControlLoopNotificationType.REJECTED;
-                               notification.from = "policy";
-                               notification.message = "Missing requestID from DCAE event";
-                               notification.policyName = drools.getRule().getName();
-                               notification.policyScope = "com";
-                               notification.policyVersion = "1";
-                               //
-                               // Let interested parties know
-                               //
-                               try {
-                                       System.out.println(Serialization.gsonPretty.toJson(notification));
-                                       PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                               } catch (Exception e) {
-                                       e.printStackTrace();
-                                       System.out.println("Can't deliver notification: " + notification);
-                               }
-                               //
-                               // Retract it from memory
-                               //
-                               retract($event);
-                               System.out.println("Event with requestID=null has been retracted.");
-                       } else {
-                               //
-                               // Create an EventManager
-                               //
-                               EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
-                               //
-                               // Determine if EventManager can actively process the event (i.e. syntax)
-                               //
-                               VirtualControlLoopNotification notification = manager.activate($event);
-                               notification.from = "policy"; 
-                               notification.policyName = drools.getRule().getName();
-                               notification.policyScope = "com";
-                               notification.policyVersion = "1";
-                               //
-                               // Are we actively pursuing this event?
-                               //
-                               if (notification.notification == ControlLoopNotificationType.ACTIVE) {
-                                       //
-                                       // Insert Event Manager into memory, this will now kick off processing.
-                                       //
-                                       insert(manager);
-                                       //
-                                       // Let interested parties know
-                                       //
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               e.printStackTrace();
-                                               System.out.println("Can't deliver notification: " + notification);
-                                       }               
-                               } else {
-                                       //
-                                       // Let interested parties know
-                                       //
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               e.printStackTrace();
-                                               System.out.println("Can't deliver notification: " + notification);
-                                       }
-                                       //
-                                       // Retract it from memory
-                                       //
-                                       retract($event);
-                               }
-                               //
-                               // Now that the manager is inserted into Drools working memory, we'll wait for
-                               // another rule to fire in order to continue processing. This way we can also
-                               // then screen for additional ONSET and ABATED events for this same RequestIDs 
-                               // and for different RequestIDs but with the same closedLoopControlName and target.
-                               //
-                       }
-               //
-               } catch (Exception e) {
-                       e.printStackTrace();
-                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                       notification.notification = ControlLoopNotificationType.REJECTED;
-                       notification.message = "Exception occurred " + e.getMessage();
-                       notification.policyName = drools.getRule().getName();
-                       notification.policyScope = "com";
-                       notification.policyVersion = "1";
-                       //
-                       //
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e1) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e1.printStackTrace();
-                       }
-                       //
-                       // Retract the event
-                       //
-                       retract($event);
-               }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager
-* is created. We can start the operations for this closed loop.
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT.MANAGER"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( 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);
-               //
-               // 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) {
-                       System.out.println("Retracting "+eventStatus+" Event.");
-                       retract($event);
-                       return;
-               }
-               //
-               // Now the event in memory is first onset event
-               //
-               try {
-                       //
-                       // Pull the known AAI field from the Event
-                       //
-                       // generic-vnf is needed for vFirewall case
-                       // vserver-name is needed for vLoadBalancer case
-                       //
-                       String genericVNF = $event.AAI.get("generic-vnf.vnf-id");
-                       String vserver = $event.AAI.get("vserver.vserver-name");
-                       //
-                       // Check if we are implementing a simple pattern match.
-                       //
-                       if ($params.getAaiPatternMatch() == 1) {
-                               //
-                               // Yes
-                               //
-                               //Basic naming characteristics:
-                               //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)
-                               //Example: 
-                               //VF Name (9 characters):    cscf0001v
-                               //VM Name(13 characters): cscf0001vm001
-                               //VFC name(19 characters): cscf0001vm001cfg001
-                               //
-                               // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  
-                               // replaced with
-                               // zdfw1fwl01pgn02 or zdfw1fwl01pgn01
-                               //
-                               int index = genericVNF.lastIndexOf("fwl");
-                               if (index == -1) {
-                                       System.err.println("The generic-vnf.vnf-id from DCAE Event is not valid.");
-                               } else {
-                                       genericVNF = genericVNF.substring(0, index) + "pgn" + genericVNF.substring(index+"fwl".length());
-                               }
-                               //
-                               // Construct an APPC request
-                               //
-                               ControlLoopOperation operation = new ControlLoopOperation();
-                               operation.actor = $params.getActor();
-                               operation.operation = "ModifyConfig";
-                               operation.target = $event.target;
-                               //
-                               // Create operationWrapper
-                               //
-                               ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-                               //
-                               // insert operationWrapper into memory
-                               //
-                               insert(operationWrapper);
-                               //
-                               Request request = new Request();
-                               request.CommonHeader = new CommonHeader();
-                               request.CommonHeader.RequestID = $event.requestID;
-                               request.Action = operation.operation;
-                               request.Payload = new HashMap<String, Object>();
-                               //
-                               // Fill in the payload
-                               //
-                               request.Payload.put("generic-vnf.vnf-id", genericVNF);
-                               //
-                               PGRequest pgRequest = new PGRequest();
-                               pgRequest.pgStreams = new PGStreams();
-                               
-                               PGStream pgStream;
-                               for(int i = 0; i < 5; i++){
-                                       pgStream = new PGStream();
-                                       pgStream.streamId = "fw_udp"+(i+1);
-                                       pgStream.isEnabled = "true";
-                                       pgRequest.pgStreams.pgStream.add(pgStream);
-                               }
-                               request.Payload.put("pg-streams", pgRequest.pgStreams);
-                               
-                               if (request != null) {
-                                       //
-                                       // Insert request into memory
-                                       //
-                                       insert(request);
-                                       //
-                                       // Tell interested parties we are performing this Operation
-                                       //
-                                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                                       notification.notification = ControlLoopNotificationType.OPERATION;
-                                       // message and history ??
-                                       notification.from = "policy";
-                                       notification.policyName = drools.getRule().getName();
-                                       notification.policyScope = "com";
-                                       notification.policyVersion = "1";
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               System.out.println("Can't deliver notification: " + notification);
-                                               e.printStackTrace();
-                                       }
-                                       //
-                                       // Now send the operation request
-                                       //
-                                       if (request instanceof Request) {
-                                               try {
-                                                       System.out.println("APPC request sent:");
-                                                       System.out.println(Serialization.gsonPretty.toJson(request));
-                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-                                               } catch (Exception e) {
-                                                       e.printStackTrace();
-                                                       System.out.println("Can't deliver request: " + request);
-                                               }
-                                       }
-                               } else {
-                                       //
-                                       // what happens if it is null
-                                       //
-                               }
-                               //
-                       } else {
-                               //
-                               // create AAI named-query request with UUID started with "F199"
-                               //
-                               AAINQF199Request aainqf199request = new AAINQF199Request();
-                               AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();
-                               AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();
-                               AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();
-                               //
-                               // queryParameters
-                               //
-                               aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); 
-                               aainqf199queryparam.namedQuery = aainqf199namedquery;
-                               aainqf199request.queryParameters = aainqf199queryparam;
-                               //
-                               // instanceFilters
-                               //
-                               Map aainqf199instancefiltermap = new HashMap();
-                               Map aainqf199instancefiltermapitem = new HashMap();
-                               aainqf199instancefiltermapitem.put("vserver-name", vserver); 
-                               aainqf199instancefiltermap.put("vserver", aainqf199instancefiltermapitem);
-                               aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);
-                               aainqf199request.instanceFilters = aainqf199instancefilter;
-                               //
-                               // print aainqf199request for debug
-                               //
-                               System.out.println("AAI Request sent:");
-                               System.out.println(Serialization.gsonPretty.toJson(aainqf199request));
-                               //
-                               // Create AAINQF199RequestWrapper
-                               //
-                               AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);
-                               //
-                               // insert aainqf199request into memory
-                               //
-                               insert(aainqf199RequestWrapper);
-                       }
-                       //
-               } catch (Exception e) {
-                e.printStackTrace();
-               }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager
-* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-       then
-               System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
-               //
-               // send the request
-               //
-               AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),
-                                                                                                          $aainqf199RequestWrapper.aainqf199request, $event.requestID);
-               //
-               // Check AAI response
-               //
-               if (aainqf199response == null) {
-                       System.err.println("Failed to get AAI response");
-                       //
-                       // Fail and retract everything
-                       //
-                       retract($event);
-                       retract($manager);
-                       retract($aainqf199RequestWrapper);
-               } else {
-                       //
-                       // Create AAINQF199ResponseWrapper
-                       //
-                       AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);
-                       //
-                       // insert aainqf199ResponseWrapper to memeory
-                       //
-                       insert(aainqf199ResponseWrapper);
-               }
-end
-
-/*
-*
-* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.
-*
-*/
-rule "BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE"
-       when 
-               $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-               $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
-       then
-               System.out.println("rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.");
-               //
-               // Extract related fields out of AAINQF199RESPONSE
-               //
-               String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, 
-                      vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
-                      serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
-                      vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, 
-                      vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;
-               try {
-                       //
-                       // vnfItem
-                       //
-                       vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
-                       vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
-                       vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
-                       vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
-                       vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
-                       vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-                       vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;
-                       vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-                       //
-                       // serviceItem
-                       //
-                       serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
-                       serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
-                       serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-                       serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;
-                       serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
-                       serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-                       //
-                       // Find the index for base vf module and non-base vf module
-                       //
-                       int baseIndex = -1;
-                       int nonBaseIndex = -1;
-                       List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
-                       for (AAINQF199InventoryResponseItem m : inventoryItems) {
-                               if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {
-                                       baseIndex = inventoryItems.indexOf(m);
-                               } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {
-                                       nonBaseIndex = inventoryItems.indexOf(m);
-                               }
-                               //
-                               if (baseIndex != -1 && nonBaseIndex != -1) {
-                                       break;
-                               }
-                       }
-                       //
-                       // Report the error if either base vf module or non-base vf module is not found
-                       //
-                       if (baseIndex == -1 || nonBaseIndex == -1) {
-                               System.err.println("Either base or non-base vf module is not found from AAI response.");
-                               retract($aainqf199RequestWrapper);
-                               retract($aainqf199ResponseWrapper);
-                               retract($manager);
-                               retract($event);
-                               return;
-                       }
-                       //
-                       // This comes from the base module
-                       //
-                       vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;
-                       vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
-                       //
-                       // vfModuleItem - NOT the base module
-                       //
-                       vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;
-                       vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;
-                       vfModuleItemModelName =                         $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;
-                       vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;
-                       //
-                       // tenantItem
-                       //
-                       tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
-                       //
-                       // cloudRegionItem
-                       //
-                       cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
-                       //
-               } catch (Exception e) {
-                       e.printStackTrace();
-                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                       notification.notification = ControlLoopNotificationType.REJECTED;
-                       notification.message = "Exception occurred " + e.getMessage();
-                       notification.policyName = drools.getRule().getName();
-                       notification.policyScope = "com";
-                       notification.policyVersion = "1";
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e1) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e1.printStackTrace();
-                       }
-                       //
-                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-                       notification.message = "Invalid named-query response from AAI";
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e1) {
-                System.out.println("Can't deliver notification: " + notification);
-                e1.printStackTrace();
-            }
-                       //
-                       // Retract everything
-                       //
-                       retract($aainqf199RequestWrapper);
-                       retract($aainqf199ResponseWrapper);
-                       retract($manager);
-                       retract($event);
-                       return;
-               }       
-               //
-               // Extracted fields should not be null
-               //
-               if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||
-                   (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||
-                   (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||
-                   (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||
-                   (serviceItemModelType == null) || (serviceItemModelVersion == null) ||
-                   (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||
-                   (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||
-                   (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||
-                   (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {
-                       //
-                       System.err.println("some fields are missing from AAI response.");
-                       //
-                       // Fail and retract everything
-                       //
-                       retract($aainqf199RequestWrapper);
-                       retract($aainqf199ResponseWrapper);
-                       retract($manager);
-                       retract($event);
-                       return;
-               }
-               //
-               // We don't need them any more
-               //
-               retract($aainqf199ResponseWrapper);
-               retract($aainqf199RequestWrapper);  
-               //
-               // check the actor of this closed loop
-               //
-               switch ($params.getActor()) {
-                       case "APPC":
-                       {
-                               //
-                               // Construct an APPC request
-                               //
-                               ControlLoopOperation operation = new ControlLoopOperation();
-                               operation.actor = $params.getActor();
-                               operation.operation = "ModifyConfig";
-                               operation.target = $event.target;
-                               //
-                               // Create operationWrapper
-                               //
-                               ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-                               //
-                               // insert operationWrapper into memory
-                               //
-                               insert(operationWrapper);
-                               //
-                               Request request = new Request();
-                               request.CommonHeader = new CommonHeader();
-                               request.CommonHeader.RequestID = $event.requestID;
-                               request.Action = operation.operation;
-                               request.Payload = new HashMap<String, Object>();
-                               //
-                               // Fill in the payload
-                               // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case
-                               //
-                               String genericVNF = "zdfw1fwl01pgn02";
-                               request.Payload.put("generic-vnf.vnf-id", genericVNF);
-                               //
-                               PGRequest pgRequest = new PGRequest();
-                               pgRequest.pgStreams = new PGStreams();
-                               
-                               PGStream pgStream;
-                               for(int i = 0; i < 5; i++){
-                                       pgStream = new PGStream();
-                                       pgStream.streamId = "fw_udp"+(i+1);
-                                       pgStream.isEnabled = "true";
-                                       pgRequest.pgStreams.pgStream.add(pgStream);
-                               }
-                               request.Payload.put("pg-streams", pgRequest.pgStreams);
-                               
-                               if (request != null) {
-                                       //
-                                       // Insert request into memory
-                                       //
-                                       insert(request);
-                                       //
-                                       // Tell interested parties we are performing this Operation
-                                       //
-                                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                                       notification.notification = ControlLoopNotificationType.OPERATION;
-                                       // message and history ??
-                                       notification.from = "policy";
-                                       notification.policyName = drools.getRule().getName();
-                                       notification.policyScope = "com";
-                                       notification.policyVersion = "1";
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               System.out.println("Can't deliver notification: " + notification);
-                                               e.printStackTrace();
-                                       }
-                                       //
-                                       // Now send the operation request
-                                       //
-                                       if (request instanceof Request) {
-                                               try {
-                                                       System.out.println("APPC request sent:");
-                                                       System.out.println(Serialization.gsonPretty.toJson(request));
-                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-                                               } catch (Exception e) {
-                                                       e.printStackTrace();
-                                                       System.out.println("Can't deliver request: " + request);
-                                               }
-                                       }
-                               } else {
-                                       //
-                                       // what happens if it is null
-                                       //
-                               }
-                       }
-                       break;
-                       case "MSO":
-                       {
-                               //
-                               // Construct an operation
-                               //
-                               ControlLoopOperation operation = new ControlLoopOperation();
-                               operation.actor = $params.getActor();
-                               operation.operation = "createModuleInstance";
-                               operation.target = $event.target;
-                               //
-                               // Create operationWrapper
-                               //
-                               ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-                               //
-                               // Construct an MSO request
-                               //
-                               MSORequest request = new MSORequest();
-                               request.requestDetails = new MSORequestDetails();
-                               request.requestDetails.modelInfo = new MSOModelInfo();
-                               request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();
-                               request.requestDetails.requestInfo = new MSORequestInfo();
-                               request.requestDetails.requestParameters = new MSORequestParameters();
-                               request.requestDetails.requestParameters.userParams = null;
-                               //
-                               // cloudConfiguration
-                               //
-                               request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
-                               request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
-                               //
-                               // modelInfo
-                               //
-                               request.requestDetails.modelInfo.modelType = "vfModule";
-                               request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
-                               request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
-                               request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
-                               request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
-                               //
-                               // requestInfo
-                               //
-                               request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
-                               request.requestDetails.requestInfo.source = "POLICY";
-                               request.requestDetails.requestInfo.suppressRollback = false;
-                               //
-                               // relatedInstanceList
-                               //
-                               MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();
-                               MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();
-                               relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();
-                               relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();
-                               //
-                               relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
-                               relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
-                               //
-                               relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
-                               relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
-                               //      
-                               request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
-                               request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
-                               //
-                               // print MSO request for debug
-                               //
-                               System.out.println("MSO request sent:");
-                               System.out.println(Serialization.gsonPretty.toJson(request));
-                               //
-                               //
-                               //
-                               if (request != null) {
-                                       //
-                                       // Tell interested parties we are performing this Operation
-                                       //
-                                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                                       notification.notification = ControlLoopNotificationType.OPERATION;
-                                       notification.from = "policy";
-                                       notification.policyName = drools.getRule().getName();
-                                       notification.policyScope = "com";
-                                       notification.policyVersion = "1";
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               System.out.println("Can't deliver notification: " + notification);
-                                               e.printStackTrace();
-                                       }
-                                       //
-                                       // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL
-                                       //
-                                       String MSOUrl = $params.getMsoURL() + "/serviceInstances/v2/" + serviceItemServiceInstanceId + "/vnfs/" + vnfItemVnfId + "/vfModules";
-                                       //
-                                       // Call MSO
-                                       //
-                                       MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);
-                                       //
-                                       if (response != null) {
-                                               //
-                                               // Assign requestId
-                                               //
-                                               request.requestId = $event.requestID.toString();                                                
-                                               response.request.requestId = $event.requestID.toString();
-                                               //
-                                               // Insert facts
-                                               //
-                                               insert(operationWrapper);
-                                               insert(request);
-                                               insert(response);
-                                       } else {
-                                               //
-                                               // MSO request not even accepted
-                                               //
-                                               notification.message = operationWrapper.operation.toMessage();
-                                               operationWrapper.operation.message = operationWrapper.operation.toMessage();
-                                               operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                                               $manager.setControlLoopResult("FAILURE_EXCEPTION");
-                                               notification.history.add(operationWrapper.operation);
-                                               notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-                                               //
-                                               // Let interested parties know
-                                               //
-                                               try {
-                                                       System.out.println(Serialization.gsonPretty.toJson(notification));
-                                                       PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                               } catch (Exception e) {
-                                                       System.out.println("Can't deliver notification: " + notification);
-                                                       e.printStackTrace();
-                                               }
-                           notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-                        try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                        } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                        }
-                                               //
-                                               // Retract everything
-                                               //
-                                               retract($event);
-                                               retract($manager);
-                                       }
-                               } else {
-                                       System.err.println("constructed MSO request is invalid.");
-                               }
-                       }
-                       break; 
-               } 
-end
-               
-/*
-*
-* This rule responds to APPC Response Events
-*
-*/
-rule "BRMSParamvFWDemoPolicy.APPC.RESPONSE"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-               $request : Request( getCommonHeader().RequestID == $event.requestID )
-               $response : Response( getCommonHeader().RequestID == $event.requestID ) 
-       then
-               System.out.println("rule APPC.RESPONSE is triggered.");
-               if ($response.Status == null) {
-                       $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                       $manager.setControlLoopResult("FAILURE_EXCEPTION");
-               } 
-               //
-               // Get the Response Code
-               //
-               ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);
-               if (code == null) {
-                       $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                       $manager.setControlLoopResult("FAILURE_EXCEPTION");
-               }
-               //
-               // Construct notification
-               //
-               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-               notification.from = "policy";
-               notification.policyName = drools.getRule().getName();
-               notification.policyScope = "com";
-               notification.policyVersion = "1";
-               notification.message = $operationWrapper.operation.toMessage();
-               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-               //
-               // Ok, let's figure out what APP-C's response is
-               //
-               switch (code) {
-                       case ACCEPT:
-                               $operationWrapper.operation.outcome = "PROCESSING";
-                               break;
-                       case ERROR:
-                       case REJECT:
-                               $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                               $manager.setControlLoopResult("FAILURE_EXCEPTION");
-                               break;
-                       case SUCCESS:
-                               $operationWrapper.operation.outcome = "SUCCESS";
-                               $manager.setControlLoopResult("SUCCESS");
-                               break;
-                       case FAILURE:
-                               $operationWrapper.operation.outcome = "FAILURE";
-                               $manager.setControlLoopResult("FAILURE");
-                               break;
-               }
-               if ($operationWrapper.operation.outcome.equals("SUCCESS")) {
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-
-                       //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               } else if ($operationWrapper.operation.outcome.equals("PROCESSING")) {
-                       retract($response);
-               } else {
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-                       //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               }
-               
-end            
-
-/*
-*
-* This rule is used to clean up APPC response
-*
-*/             
-rule "BRMSParamvFWDemoPolicy.APPC.RESPONSE.CLEANUP"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $response : Response($id : getCommonHeader().RequestID )
-               not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) 
-       then
-               System.out.println("rule APPC.RESPONSE.CLEANUP is triggered.");
-               retract($response);
-end
-
-/*
-*
-* This rule responds to MSO Response Events
-*
-*/
-rule "BRMSParamvFWDemoPolicy.MSO.RESPONSE"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-               $request : MSORequest( requestId == $event.requestID.toString() )
-               $response : MSOResponse( request.requestId == $event.requestID.toString() )     
-       then
-               System.out.println("rule MSO.RESPONSE is triggered.");
-               //
-               // Construct notification
-               //
-               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-               notification.from = "policy";
-               notification.policyName = drools.getRule().getName();
-               notification.policyScope = "com";
-               notification.policyVersion = "1";
-               notification.message = $operationWrapper.operation.toMessage();
-               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-               //
-               // The operation can either be succeeded or failed
-               // 
-               if($response.request.requestStatus.requestState.equals("COMPLETE")) {
-                       $operationWrapper.operation.outcome = "SUCCESS";
-                       $manager.setControlLoopResult("SUCCESS");
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-                       notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            //
-            // Let interested parties know
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-            //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               } else {
-                       $operationWrapper.operation.outcome = "FAILURE";
-                       $manager.setControlLoopResult("FAILURE");
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-            //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               }
-               
-end    
-rule "com.Config_BRMS_Param_BRMSParamvFWDemoPolicy.Params" 
-       salience 1000 
-       when
-       then
-               Params params = new Params();
-               params.setAaiPatternMatch(1);
-               params.setAppcTopic("APPC-CL");
-               params.setAaiURL("null");
-               params.setMsoPassword("null");
-               params.setClosedLoopControlName("CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-               params.setMsoURL("null");
-               params.setAaiUsername("null");
-               params.setActor("APPC");
-               params.setMsoUsername("null");
-               params.setAaiNamedQueryUUID("null");
-               params.setAaiPassword("null");
-               params.setNotificationTopic("POLICY-CL-MGT");
-               insert(params);
-end
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.1.txt
deleted file mode 100755 (executable)
index f9accdd..0000000
+++ /dev/null
@@ -1,1145 +0,0 @@
-/* Autogenerated Code Please Don't change/remove this comment section. This is for the UI purpose. 
-        <$%BRMSParamTemplate=ControlLoopDemo__closedLoopControlName%$> 
- */ 
-
-
-/*-
- * ============LICENSE_START=======================================================
- * archetype-closed-loop-demo-rules
- * ================================================================================
- * Copyright (C) 2017 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.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.controlloop;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.UUID;
-
-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.template.demo.ControlLoopException;
-
-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.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.onap.policy.template.demo.EventManager;
-import org.onap.policy.vnf.trafficgenerator.PGRequest;
-import org.onap.policy.vnf.trafficgenerator.PGStream;
-import org.onap.policy.vnf.trafficgenerator.PGStreams;
-
-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.onap.policy.drools.system.PolicyEngine;
-
-//
-// These parameters are required to build the runtime policy
-//
-declare Params
-    closedLoopControlName : String
-    actor : String
-    aaiURL : String
-    aaiUsername : String
-    aaiPassword : String
-    msoURL : String
-    msoUsername : String
-    msoPassword : String
-    aaiNamedQueryUUID : String
-    aaiPatternMatch : int 
-    notificationTopic : String
-    appcTopic : String
-end
-
-/*
-*
-* Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ONAP opensource release since policy BRMS_GW already puts a Params fact in there)
-*
-*
-*rule "BRMSParamvLBDemoPolicy.SETUP"
-*      when
-*      then
-*              System.out.println("rule SETUP is triggered.");
-*              Params params = new Params();
-*              params.setClosedLoopControlName("CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-*              params.setActor("MSO");
-*              params.setAaiURL("https://aai.api.simpledemo.openecomp.org:8443");
-*              params.setAaiUsername("POLICY");
-*              params.setAaiPassword("POLICY");
-*              params.setMsoURL("http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra");
-*              params.setMsoUsername("InfraPortalClient");
-*              params.setMsoPassword("password1$");
-*              params.setAaiNamedQueryUUID("f199cb88-5e69-4b1f-93e0-6f257877d066");
-*              params.setAaiPatternMatch(0);
-*              params.setNotificationTopic("POLICY-CL-MGT");
-*              params.setAppcTopic("APPC-CL");
-*              //
-*              // This stays in memory as long as the rule is alive and running
-*              //
-*              insert(params);
-*end
-*/
-/*
-*
-* This rule responds to DCAE Events
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT"
-       when
-        $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
-       then
-               System.out.println("rule EVENT is triggered.");
-               try {
-                       // 
-                       // Check the requestID in the event to make sure it is not null before we create the EventManager. 
-                       // The EventManager will do extra syntax checking as well check if the closed loop is disabled/
-                       //
-                       if ($event.requestID == null) {
-                               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                               notification.notification = ControlLoopNotificationType.REJECTED;
-                               notification.from = "policy";
-                               notification.message = "Missing requestID from DCAE event";
-                               notification.policyName = drools.getRule().getName();
-                               notification.policyScope = "com";
-                               notification.policyVersion = "1";
-                               //
-                               // Let interested parties know
-                               //
-                               try {
-                                       System.out.println(Serialization.gsonPretty.toJson(notification));
-                                       PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                               } catch (Exception e) {
-                                       e.printStackTrace();
-                                       System.out.println("Can't deliver notification: " + notification);
-                               }
-                               //
-                               // Retract it from memory
-                               //
-                               retract($event);
-                               System.out.println("Event with requestID=null has been retracted.");
-                       } else {
-                               //
-                               // Create an EventManager
-                               //
-                               EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
-                               //
-                               // Determine if EventManager can actively process the event (i.e. syntax)
-                               //
-                               VirtualControlLoopNotification notification = manager.activate($event);
-                               notification.from = "policy"; 
-                               notification.policyName = drools.getRule().getName();
-                               notification.policyScope = "com";
-                               notification.policyVersion = "1";
-                               //
-                               // Are we actively pursuing this event?
-                               //
-                               if (notification.notification == ControlLoopNotificationType.ACTIVE) {
-                                       //
-                                       // Insert Event Manager into memory, this will now kick off processing.
-                                       //
-                                       insert(manager);
-                                       //
-                                       // Let interested parties know
-                                       //
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               e.printStackTrace();
-                                               System.out.println("Can't deliver notification: " + notification);
-                                       }               
-                               } else {
-                                       //
-                                       // Let interested parties know
-                                       //
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               e.printStackTrace();
-                                               System.out.println("Can't deliver notification: " + notification);
-                                       }
-                                       //
-                                       // Retract it from memory
-                                       //
-                                       retract($event);
-                               }
-                               //
-                               // Now that the manager is inserted into Drools working memory, we'll wait for
-                               // another rule to fire in order to continue processing. This way we can also
-                               // then screen for additional ONSET and ABATED events for this same RequestIDs 
-                               // and for different RequestIDs but with the same closedLoopControlName and target.
-                               //
-                       }
-               //
-               } catch (Exception e) {
-                       e.printStackTrace();
-                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                       notification.notification = ControlLoopNotificationType.REJECTED;
-                       notification.message = "Exception occurred " + e.getMessage();
-                       notification.policyName = drools.getRule().getName();
-                       notification.policyScope = "com";
-                       notification.policyVersion = "1";
-                       //
-                       //
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e1) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e1.printStackTrace();
-                       }
-                       //
-                       // Retract the event
-                       //
-                       retract($event);
-               }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager
-* is created. We can start the operations for this closed loop.
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT.MANAGER"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( 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);
-               //
-               // 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) {
-                       System.out.println("Retracting "+eventStatus+" Event.");
-                       retract($event);
-                       return;
-               }
-               //
-               // Now the event in memory is first onset event
-               //
-               try {
-                       //
-                       // Pull the known AAI field from the Event
-                       //
-                       // generic-vnf is needed for vFirewall case
-                       // vserver-name is needed for vLoadBalancer case
-                       //
-                       String genericVNF = $event.AAI.get("generic-vnf.vnf-id");
-                       String vserver = $event.AAI.get("vserver.vserver-name");
-                       //
-                       // Check if we are implementing a simple pattern match.
-                       //
-                       if ($params.getAaiPatternMatch() == 1) {
-                               //
-                               // Yes
-                               //
-                               //Basic naming characteristics:
-                               //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)
-                               //Example: 
-                               //VF Name (9 characters):    cscf0001v
-                               //VM Name(13 characters): cscf0001vm001
-                               //VFC name(19 characters): cscf0001vm001cfg001
-                               //
-                               // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  
-                               // replaced with
-                               // zdfw1fwl01pgn02 or zdfw1fwl01pgn01
-                               //
-                               int index = genericVNF.lastIndexOf("fwl");
-                               if (index == -1) {
-                                       System.err.println("The generic-vnf.vnf-id from DCAE Event is not valid.");
-                               } else {
-                                       genericVNF = genericVNF.substring(0, index) + "pgn" + genericVNF.substring(index+"fwl".length());
-                               }
-                               //
-                               // Construct an APPC request
-                               //
-                               ControlLoopOperation operation = new ControlLoopOperation();
-                               operation.actor = $params.getActor();
-                               operation.operation = "ModifyConfig";
-                               operation.target = $event.target;
-                               //
-                               // Create operationWrapper
-                               //
-                               ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-                               //
-                               // insert operationWrapper into memory
-                               //
-                               insert(operationWrapper);
-                               //
-                               Request request = new Request();
-                               request.CommonHeader = new CommonHeader();
-                               request.CommonHeader.RequestID = $event.requestID;
-                               request.Action = operation.operation;
-                               request.Payload = new HashMap<String, Object>();
-                               //
-                               // Fill in the payload
-                               //
-                               request.Payload.put("generic-vnf.vnf-id", genericVNF);
-                               //
-                               PGRequest pgRequest = new PGRequest();
-                               pgRequest.pgStreams = new PGStreams();
-                               
-                               PGStream pgStream;
-                               for(int i = 0; i < 5; i++){
-                                       pgStream = new PGStream();
-                                       pgStream.streamId = "fw_udp"+(i+1);
-                                       pgStream.isEnabled = "true";
-                                       pgRequest.pgStreams.pgStream.add(pgStream);
-                               }
-                               request.Payload.put("pg-streams", pgRequest.pgStreams);
-                               
-                               if (request != null) {
-                                       //
-                                       // Insert request into memory
-                                       //
-                                       insert(request);
-                                       //
-                                       // Tell interested parties we are performing this Operation
-                                       //
-                                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                                       notification.notification = ControlLoopNotificationType.OPERATION;
-                                       // message and history ??
-                                       notification.from = "policy";
-                                       notification.policyName = drools.getRule().getName();
-                                       notification.policyScope = "com";
-                                       notification.policyVersion = "1";
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               System.out.println("Can't deliver notification: " + notification);
-                                               e.printStackTrace();
-                                       }
-                                       //
-                                       // Now send the operation request
-                                       //
-                                       if (request instanceof Request) {
-                                               try {
-                                                       System.out.println("APPC request sent:");
-                                                       System.out.println(Serialization.gsonPretty.toJson(request));
-                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-                                               } catch (Exception e) {
-                                                       e.printStackTrace();
-                                                       System.out.println("Can't deliver request: " + request);
-                                               }
-                                       }
-                               } else {
-                                       //
-                                       // what happens if it is null
-                                       //
-                               }
-                               //
-                       } else {
-                               //
-                               // create AAI named-query request with UUID started with "F199"
-                               //
-                               AAINQF199Request aainqf199request = new AAINQF199Request();
-                               AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();
-                               AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();
-                               AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();
-                               //
-                               // queryParameters
-                               //
-                               aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); 
-                               aainqf199queryparam.namedQuery = aainqf199namedquery;
-                               aainqf199request.queryParameters = aainqf199queryparam;
-                               //
-                               // instanceFilters
-                               //
-                               Map aainqf199instancefiltermap = new HashMap();
-                               Map aainqf199instancefiltermapitem = new HashMap();
-                               aainqf199instancefiltermapitem.put("vserver-name", vserver); 
-                               aainqf199instancefiltermap.put("vserver", aainqf199instancefiltermapitem);
-                               aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);
-                               aainqf199request.instanceFilters = aainqf199instancefilter;
-                               //
-                               // print aainqf199request for debug
-                               //
-                               System.out.println("AAI Request sent:");
-                               System.out.println(Serialization.gsonPretty.toJson(aainqf199request));
-                               //
-                               // Create AAINQF199RequestWrapper
-                               //
-                               AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);
-                               //
-                               // insert aainqf199request into memory
-                               //
-                               insert(aainqf199RequestWrapper);
-                       }
-                       //
-               } catch (Exception e) {
-                e.printStackTrace();
-               }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager
-* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-       then
-               System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
-               //
-               // send the request
-               //
-               AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),
-                                                                                                          $aainqf199RequestWrapper.aainqf199request, $event.requestID);
-               //
-               // Check AAI response
-               //
-               if (aainqf199response == null) {
-                       System.err.println("Failed to get AAI response");
-                       //
-                       // Fail and retract everything
-                       //
-                       retract($event);
-                       retract($manager);
-                       retract($aainqf199RequestWrapper);
-               } else {
-                       //
-                       // Create AAINQF199ResponseWrapper
-                       //
-                       AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);
-                       //
-                       // insert aainqf199ResponseWrapper to memeory
-                       //
-                       insert(aainqf199ResponseWrapper);
-               }
-end
-
-/*
-*
-* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.
-*
-*/
-rule "BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE"
-       when 
-               $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
-               $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
-       then
-               System.out.println("rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.");
-               //
-               // Extract related fields out of AAINQF199RESPONSE
-               //
-               String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, 
-                      vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
-                      serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
-                      vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, 
-                      vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;
-               try {
-                       //
-                       // vnfItem
-                       //
-                       vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
-                       vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
-                       vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
-                       vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
-                       vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
-                       vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-                       vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;
-                       vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-                       //
-                       // serviceItem
-                       //
-                       serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
-                       serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
-                       serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
-                       serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;
-                       serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
-                       serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
-                       //
-                       // Find the index for base vf module and non-base vf module
-                       //
-                       int baseIndex = -1;
-                       int nonBaseIndex = -1;
-                       List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
-                       for (AAINQF199InventoryResponseItem m : inventoryItems) {
-                               if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {
-                                       baseIndex = inventoryItems.indexOf(m);
-                               } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {
-                                       nonBaseIndex = inventoryItems.indexOf(m);
-                               }
-                               //
-                               if (baseIndex != -1 && nonBaseIndex != -1) {
-                                       break;
-                               }
-                       }
-                       //
-                       // Report the error if either base vf module or non-base vf module is not found
-                       //
-                       if (baseIndex == -1 || nonBaseIndex == -1) {
-                               System.err.println("Either base or non-base vf module is not found from AAI response.");
-                               retract($aainqf199RequestWrapper);
-                               retract($aainqf199ResponseWrapper);
-                               retract($manager);
-                               retract($event);
-                               return;
-                       }
-                       //
-                       // This comes from the base module
-                       //
-                       vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;
-                       vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
-                       //
-                       // vfModuleItem - NOT the base module
-                       //
-                       vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;
-                       vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;
-                       vfModuleItemModelName =                         $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;
-                       vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;
-                       //
-                       // tenantItem
-                       //
-                       tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
-                       //
-                       // cloudRegionItem
-                       //
-                       cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
-                       //
-               } catch (Exception e) {
-                       e.printStackTrace();
-                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                       notification.notification = ControlLoopNotificationType.REJECTED;
-                       notification.message = "Exception occurred " + e.getMessage();
-                       notification.policyName = drools.getRule().getName();
-                       notification.policyScope = "com";
-                       notification.policyVersion = "1";
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e1) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e1.printStackTrace();
-                       }
-                       //
-                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-                       notification.message = "Invalid named-query response from AAI";
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e1) {
-                System.out.println("Can't deliver notification: " + notification);
-                e1.printStackTrace();
-            }
-                       //
-                       // Retract everything
-                       //
-                       retract($aainqf199RequestWrapper);
-                       retract($aainqf199ResponseWrapper);
-                       retract($manager);
-                       retract($event);
-                       return;
-               }       
-               //
-               // Extracted fields should not be null
-               //
-               if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||
-                   (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||
-                   (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||
-                   (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||
-                   (serviceItemModelType == null) || (serviceItemModelVersion == null) ||
-                   (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||
-                   (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||
-                   (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||
-                   (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {
-                       //
-                       System.err.println("some fields are missing from AAI response.");
-                       //
-                       // Fail and retract everything
-                       //
-                       retract($aainqf199RequestWrapper);
-                       retract($aainqf199ResponseWrapper);
-                       retract($manager);
-                       retract($event);
-                       return;
-               }
-               //
-               // We don't need them any more
-               //
-               retract($aainqf199ResponseWrapper);
-               retract($aainqf199RequestWrapper);  
-               //
-               // check the actor of this closed loop
-               //
-               switch ($params.getActor()) {
-                       case "APPC":
-                       {
-                               //
-                               // Construct an APPC request
-                               //
-                               ControlLoopOperation operation = new ControlLoopOperation();
-                               operation.actor = $params.getActor();
-                               operation.operation = "ModifyConfig";
-                               operation.target = $event.target;
-                               //
-                               // Create operationWrapper
-                               //
-                               ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-                               //
-                               // insert operationWrapper into memory
-                               //
-                               insert(operationWrapper);
-                               //
-                               Request request = new Request();
-                               request.CommonHeader = new CommonHeader();
-                               request.CommonHeader.RequestID = $event.requestID;
-                               request.Action = operation.operation;
-                               request.Payload = new HashMap<String, Object>();
-                               //
-                               // Fill in the payload
-                               // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case
-                               //
-                               String genericVNF = "zdfw1fwl01pgn02";
-                               request.Payload.put("generic-vnf.vnf-id", genericVNF);
-                               //
-                               PGRequest pgRequest = new PGRequest();
-                               pgRequest.pgStreams = new PGStreams();
-                               
-                               PGStream pgStream;
-                               for(int i = 0; i < 5; i++){
-                                       pgStream = new PGStream();
-                                       pgStream.streamId = "fw_udp"+(i+1);
-                                       pgStream.isEnabled = "true";
-                                       pgRequest.pgStreams.pgStream.add(pgStream);
-                               }
-                               request.Payload.put("pg-streams", pgRequest.pgStreams);
-                               
-                               if (request != null) {
-                                       //
-                                       // Insert request into memory
-                                       //
-                                       insert(request);
-                                       //
-                                       // Tell interested parties we are performing this Operation
-                                       //
-                                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                                       notification.notification = ControlLoopNotificationType.OPERATION;
-                                       // message and history ??
-                                       notification.from = "policy";
-                                       notification.policyName = drools.getRule().getName();
-                                       notification.policyScope = "com";
-                                       notification.policyVersion = "1";
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               System.out.println("Can't deliver notification: " + notification);
-                                               e.printStackTrace();
-                                       }
-                                       //
-                                       // Now send the operation request
-                                       //
-                                       if (request instanceof Request) {
-                                               try {
-                                                       System.out.println("APPC request sent:");
-                                                       System.out.println(Serialization.gsonPretty.toJson(request));
-                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);
-                                               } catch (Exception e) {
-                                                       e.printStackTrace();
-                                                       System.out.println("Can't deliver request: " + request);
-                                               }
-                                       }
-                               } else {
-                                       //
-                                       // what happens if it is null
-                                       //
-                               }
-                       }
-                       break;
-                       case "MSO":
-                       {
-                               //
-                               // Construct an operation
-                               //
-                               ControlLoopOperation operation = new ControlLoopOperation();
-                               operation.actor = $params.getActor();
-                               operation.operation = "createModuleInstance";
-                               operation.target = $event.target;
-                               //
-                               // Create operationWrapper
-                               //
-                               ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
-                               //
-                               // Construct an MSO request
-                               //
-                               MSORequest request = new MSORequest();
-                               request.requestDetails = new MSORequestDetails();
-                               request.requestDetails.modelInfo = new MSOModelInfo();
-                               request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();
-                               request.requestDetails.requestInfo = new MSORequestInfo();
-                               request.requestDetails.requestParameters = new MSORequestParameters();
-                               request.requestDetails.requestParameters.userParams = null;
-                               //
-                               // cloudConfiguration
-                               //
-                               request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
-                               request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
-                               //
-                               // modelInfo
-                               //
-                               request.requestDetails.modelInfo.modelType = "vfModule";
-                               request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
-                               request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
-                               request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
-                               request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
-                               //
-                               // requestInfo
-                               //
-                               request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
-                               request.requestDetails.requestInfo.source = "POLICY";
-                               request.requestDetails.requestInfo.suppressRollback = false;
-                               //
-                               // relatedInstanceList
-                               //
-                               MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();
-                               MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();
-                               relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();
-                               relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();
-                               //
-                               relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
-                               relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
-                               relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
-                               //
-                               relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
-                               relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;
-                               relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
-                               //      
-                               request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
-                               request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
-                               //
-                               // print MSO request for debug
-                               //
-                               System.out.println("MSO request sent:");
-                               System.out.println(Serialization.gsonPretty.toJson(request));
-                               //
-                               //
-                               //
-                               if (request != null) {
-                                       //
-                                       // Tell interested parties we are performing this Operation
-                                       //
-                                       VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-                                       notification.notification = ControlLoopNotificationType.OPERATION;
-                                       notification.from = "policy";
-                                       notification.policyName = drools.getRule().getName();
-                                       notification.policyScope = "com";
-                                       notification.policyVersion = "1";
-                                       try {
-                                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                       } catch (Exception e) {
-                                               System.out.println("Can't deliver notification: " + notification);
-                                               e.printStackTrace();
-                                       }
-                                       //
-                                       // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL
-                                       //
-                                       String MSOUrl = $params.getMsoURL() + "/serviceInstances/v2/" + serviceItemServiceInstanceId + "/vnfs/" + vnfItemVnfId + "/vfModules";
-                                       //
-                                       // Call MSO
-                                       //
-                                       MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);
-                                       //
-                                       if (response != null) {
-                                               //
-                                               // Assign requestId
-                                               //
-                                               request.requestId = $event.requestID.toString();                                                
-                                               response.request.requestId = $event.requestID.toString();
-                                               //
-                                               // Insert facts
-                                               //
-                                               insert(operationWrapper);
-                                               insert(request);
-                                               insert(response);
-                                       } else {
-                                               //
-                                               // MSO request not even accepted
-                                               //
-                                               notification.message = operationWrapper.operation.toMessage();
-                                               operationWrapper.operation.message = operationWrapper.operation.toMessage();
-                                               operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                                               $manager.setControlLoopResult("FAILURE_EXCEPTION");
-                                               notification.history.add(operationWrapper.operation);
-                                               notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-                                               //
-                                               // Let interested parties know
-                                               //
-                                               try {
-                                                       System.out.println(Serialization.gsonPretty.toJson(notification));
-                                                       PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                                               } catch (Exception e) {
-                                                       System.out.println("Can't deliver notification: " + notification);
-                                                       e.printStackTrace();
-                                               }
-                           notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-                        try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                        } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                        }
-                                               //
-                                               // Retract everything
-                                               //
-                                               retract($event);
-                                               retract($manager);
-                                       }
-                               } else {
-                                       System.err.println("constructed MSO request is invalid.");
-                               }
-                       }
-                       break; 
-               } 
-end
-               
-/*
-*
-* This rule responds to APPC Response Events
-*
-*/
-rule "BRMSParamvLBDemoPolicy.APPC.RESPONSE"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-               $request : Request( getCommonHeader().RequestID == $event.requestID )
-               $response : Response( getCommonHeader().RequestID == $event.requestID ) 
-       then
-               System.out.println("rule APPC.RESPONSE is triggered.");
-               if ($response.Status == null) {
-                       $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                       $manager.setControlLoopResult("FAILURE_EXCEPTION");
-               } 
-               //
-               // Get the Response Code
-               //
-               ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);
-               if (code == null) {
-                       $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                       $manager.setControlLoopResult("FAILURE_EXCEPTION");
-               }
-               //
-               // Construct notification
-               //
-               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-               notification.from = "policy";
-               notification.policyName = drools.getRule().getName();
-               notification.policyScope = "com";
-               notification.policyVersion = "1";
-               notification.message = $operationWrapper.operation.toMessage();
-               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-               //
-               // Ok, let's figure out what APP-C's response is
-               //
-               switch (code) {
-                       case ACCEPT:
-                               $operationWrapper.operation.outcome = "PROCESSING";
-                               break;
-                       case ERROR:
-                       case REJECT:
-                               $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
-                               $manager.setControlLoopResult("FAILURE_EXCEPTION");
-                               break;
-                       case SUCCESS:
-                               $operationWrapper.operation.outcome = "SUCCESS";
-                               $manager.setControlLoopResult("SUCCESS");
-                               break;
-                       case FAILURE:
-                               $operationWrapper.operation.outcome = "FAILURE";
-                               $manager.setControlLoopResult("FAILURE");
-                               break;
-               }
-               if ($operationWrapper.operation.outcome.equals("SUCCESS")) {
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-
-                       //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               } else if ($operationWrapper.operation.outcome.equals("PROCESSING")) {
-                       retract($response);
-               } else {
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-                       //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               }
-               
-end            
-
-/*
-*
-* This rule is used to clean up APPC response
-*
-*/             
-rule "BRMSParamvLBDemoPolicy.APPC.RESPONSE.CLEANUP"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-        $response : Response($id : getCommonHeader().RequestID )
-               not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) 
-       then
-               System.out.println("rule APPC.RESPONSE.CLEANUP is triggered.");
-               retract($response);
-end
-
-/*
-*
-* This rule responds to MSO Response Events
-*
-*/
-rule "BRMSParamvLBDemoPolicy.MSO.RESPONSE"
-       when
-               $params : Params( getClosedLoopControlName() == "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" )
-               $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
-               $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
-               $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
-               $request : MSORequest( requestId == $event.requestID.toString() )
-               $response : MSOResponse( request.requestId == $event.requestID.toString() )     
-       then
-               System.out.println("rule MSO.RESPONSE is triggered.");
-               //
-               // Construct notification
-               //
-               VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
-               notification.from = "policy";
-               notification.policyName = drools.getRule().getName();
-               notification.policyScope = "com";
-               notification.policyVersion = "1";
-               notification.message = $operationWrapper.operation.toMessage();
-               $operationWrapper.operation.message = $operationWrapper.operation.toMessage();
-               //
-               // The operation can either be succeeded or failed
-               // 
-               if($response.request.requestStatus.requestState.equals("COMPLETE")) {
-                       $operationWrapper.operation.outcome = "SUCCESS";
-                       $manager.setControlLoopResult("SUCCESS");
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-                       notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
-            //
-            // Let interested parties know
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-            //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               } else {
-                       $operationWrapper.operation.outcome = "FAILURE";
-                       $manager.setControlLoopResult("FAILURE");
-                       notification.history.add($operationWrapper.operation);
-                       notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
-                       //
-                       // Let interested parties know
-                       //
-                       try {
-                               System.out.println(Serialization.gsonPretty.toJson(notification));
-                               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-                       } catch (Exception e) {
-                               System.out.println("Can't deliver notification: " + notification);
-                               e.printStackTrace();
-                       }
-                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
-            //
-            // Let interested parties know
-            //
-            try {
-               System.out.println(Serialization.gsonPretty.toJson(notification));
-               PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
-            } catch (Exception e) {
-               System.out.println("Can't deliver notification: " + notification);
-               e.printStackTrace();
-            }
-            //
-                       // We are going to retract these objects from memory
-                       //
-                       System.out.println("Retracting everything");
-                       retract($operationWrapper);
-                       retract($request);
-                       retract($response);
-                       retract($event);
-                       retract($manager);
-               }
-               
-end    
-rule "com.Config_BRMS_Param_BRMSParamvLBDemoPolicy.Params" 
-       salience 1000 
-       when
-       then
-               Params params = new Params();
-               params.setAaiPatternMatch(0);
-               params.setAppcTopic("APPC-CL");
-               params.setAaiURL("https://aai.api.simpledemo.openecomp.org:8443");
-               params.setMsoPassword("password1$");
-               params.setClosedLoopControlName("CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8");
-               params.setAaiUsername("POLICY");
-               params.setMsoURL("http://vm1.mso.simpledemo.openecomp.org:8080/onap/mso/infra");
-               params.setActor("MSO");
-               params.setMsoUsername("InfraPortalClient");
-               params.setAaiNamedQueryUUID("f199cb88-5e69-4b1f-93e0-6f257877d066");
-               params.setAaiPassword("POLICY");
-               params.setNotificationTopic("POLICY-CL-MGT");
-               insert(params);
-end
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vFirewall.1.json b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vFirewall.1.json
deleted file mode 100644 (file)
index 6b128f1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"service":"TcaMetrics","location":"SampleServiceLocation","uuid":"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall","policyName":"vFirewall","description":"Micro Service vFirewall Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:","configName":"SampleConfigName","templateVersion":"OpenSource.version.1","version":"1.0.0.5","priority":"1","policyScope":"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop","content":{"thresholds":[{"severity":"MAJOR","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn","thresholdValue":"300","closedLoopControlName":"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8","version":"1.0.2","direction":"LESS_OR_EQUAL"},{"severity":"CRITICAL","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn","thresholdValue":"700","closedLoopControlName":"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8","version":"1.0.2","direction":"GREATER_OR_EQUAL"}],"functionalRole":"vFirewall","name":"0"}}
\ No newline at end of file
diff --git a/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vLoadBalancer.1.json b/packages/base/src/files/install/servers/pap/webapps/Config/com.Config_MS_vLoadBalancer.1.json
deleted file mode 100644 (file)
index e4fe39e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"service":"TcaMetrics","location":"SampleServiceLocation","uuid":"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer","policyName":"vLoadBalancer","description":"Micro Service vLoadBalancer Demo Policy@CreatedBy:@CreatedBy:@ModifiedBy:@ModifiedBy:","configName":"SampleConfigName","templateVersion":"OpenSource.version.1","version":"1.0.0.5","priority":"1","policyScope":"resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop","content":{"thresholds":[{"severity":"MAJOR","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn","thresholdValue":"200","closedLoopControlName":"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8","version":"1.0.2","direction":"GREATER_OR_EQUAL"}],"functionalRole":"vLoadBalancer","name":"0"}}
\ No newline at end of file
index 36cf414..2c91ff4 100644 (file)
@@ -28,10 +28,8 @@ UEB_API_SECRET=
 
 groupID=org.onap.policy-engine
 artifactID=drlPDPGroup
-VFW_GROUP_ID=org.onap.policy-engine.drools.vFW
-VFW_ARTIFACT_ID=policy-vFW-rules
-VDNS_GROUP_ID=org.onap.policy-engine.drools.vDNS
-VDNS_ARTIFACT_ID=policy-vDNS-rules
+AMSTERDAM_GROUP_ID=org.onap.policy-engine.drools.amsterdam
+AMSTERDAM_ARTIFACT_ID=policy-amsterdam-rules
 
 # the java property is RESOURCE_NAME (uppercase), but the conf parameter is lowercase
 resource_name=brmsgw_1