Unit/SONAR/Checkstyle in ONAP-REST
[policy/engine.git] / packages / base / src / files / install / mysql / data / 161000_upgrade_script.sql
old mode 100644 (file)
new mode 100755 (executable)
index 94e3716..b3589b0
@@ -1,24 +1,23 @@
-/*-
-* ============LICENSE_START=======================================================
-* ECOMP Policy Engine
-* ================================================================================
-* 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=========================================================
-*/
+-- ============LICENSE_START=======================================================
+-- ONAP Policy Engine
+-- ================================================================================
+-- 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=========================================================
+
 -- ---------------------------------------------------------------------------------------------------------------
--- This is for the 1610 Version of SDK database called ecomp_sdk for Open Source
+-- This is for the 1610 Version of SDK database called onap_sdk for Open Source
 
 -- Note to : Database Admin,  set the MySQL system variable called lower_case_table_names
 
 -- All versions newer or older than these DO NOT necessarily mean they are compatible.
 -- ------------------------------------------------------------------------------------------------------------------
 
-CREATE DATABASE IF NOT EXISTS `ecomp_sdk`;
+CREATE DATABASE IF NOT EXISTS `onap_sdk`;
 
-USE `ecomp_sdk`;
+USE `onap_sdk`;
 set foreign_key_checks=0;
 
+--
+-- Increasing the Database variable timeouts
+--
+
+set wait_timeout=2147483;   
+set interactive_timeout=2147483;
+
 --
 -- Table structure for table `actionbodyentity`
 --
@@ -774,20 +780,20 @@ primary key (`id`)
 );
 
 --
--- Table structure for table `ecompname`
+-- Table structure for table `onapname`
 --
 
-drop table if exists `ecompname`;
-create table `ecompname` (
+drop table if exists `onapname`;
+create table `onapname` (
 `id` int(11) not null auto_increment,
 `created_by` varchar(255) not null,
 `created_date` timestamp not null default current_timestamp,
 `description` varchar(2048) default null,
-`ecomp_name` varchar(767) not null,
+`onap_name` varchar(767) not null,
 `modified_by` varchar(255) not null,
 `modified_date` timestamp not null default '0000-00-00 00:00:00',
 primary key (`id`),
-unique key `ecomp_name` (`ecomp_name`)
+unique key `onap_name` (`onap_name`)
 );
 
 --
@@ -1675,87 +1681,9 @@ create table `globalrolesettings` (
 primary key (`role`)
 );
 
---
--- Table structure for table `goceventalarm`
---
 
-drop table if exists `goceventalarm`;
-create table `goceventalarm` (
-`id` int(11) not null auto_increment,
-`event` varchar(1024) not null,
-`description` varchar(1024) default null,
-`alarm` varchar(1024) not null,
-`created_date` timestamp not null default current_timestamp,
-`created_by` varchar(45) not null,
-`modified_date` timestamp not null default '0000-00-00 00:00:00',
-`modified_by` varchar(45) not null,
-primary key (`id`)
-);
 
---
--- Table structure for table `gocrcalarm`
---
 
-drop table if exists `gocrcalarm`;
-create table `gocrcalarm` (
-`id` int(11) not null auto_increment,
-`alarmname` varchar(1024) not null,
-`description` varchar(1024) default null,
-`created_date` timestamp not null default current_timestamp,
-`created_by` varchar(45) not null,
-`modified_date` timestamp not null default '0000-00-00 00:00:00',
-`modified_by` varchar(45) not null,
-primary key (`id`)
-);
-
---
--- Table structure for table `gocserverscope`
---
-
-drop table if exists `gocserverscope`;
-create table `gocserverscope` (
-`id` int(11) not null auto_increment,
-`serverscopename` varchar(1024) not null,
-`description` varchar(1024) default null,
-`serverscopeentry` varchar(1024) not null,
-`created_date` timestamp not null default current_timestamp on update current_timestamp,
-`created_by` varchar(45) not null,
-`modified_date` timestamp not null default '0000-00-00 00:00:00',
-`modified_by` varchar(45) not null,
-primary key (`id`)
-);
-
---
--- Table structure for table `goctraversal`
---
-
-drop table if exists `goctraversal`;
-create table `goctraversal` (
-`id` int(11) not null auto_increment,
-`traversal` varchar(1024) not null,
-`description` varchar(1024) default null,
-`created_date` timestamp not null default current_timestamp,
-`created_by` varchar(45) not null,
-`modified_date` timestamp not null default '0000-00-00 00:00:00',
-`modified_by` varchar(45) not null,
-primary key (`id`)
-);
-
---
--- Table structure for table `gocvnftype`
---
-
-drop table if exists `gocvnftype`;
-create table `gocvnftype` (
-`id` int(11) not null auto_increment,
-`vnfname` varchar(1024) not null,
-`description` varchar(1024) default null,
-`created_date` timestamp not null default current_timestamp,
-`created_by` varchar(45) not null,
-`modified_date` timestamp not null default '0000-00-00 00:00:00',
-`modified_by` varchar(45) not null,
-primary key (`id`)
-);
 
 --
 -- Table structure for table `groupentity`
@@ -1874,7 +1802,7 @@ drop view  if exists `match_functions`;
 create table `match_functions` (
 `id` tinyint not null,
 `shortname` tinyint not null,
-`ecomp_sdkid` tinyint not null,
+`onap_sdkid` tinyint not null,
 `return_datatype` tinyint not null,
 `is_bag_return` tinyint not null,
 `arg_lb` tinyint not null,
@@ -2116,7 +2044,7 @@ create table `policy_management` (
 `config_name` varchar(1024) not null,
 `create_date_time` timestamp not null default current_timestamp on update current_timestamp,
 `creted_by` varchar(45) not null,
-`ecomp_name` varchar(1024) not null,
+`onap_name` varchar(1024) not null,
 `policy_name` varchar(1024) not null,
 `scope` varchar(1024) not null,
 `update_date_time` timestamp not null default '0000-00-00 00:00:00',
@@ -2135,7 +2063,7 @@ create table `policy_manangement` (
 `config_name` varchar(1024) not null,
 `create_date_time` timestamp not null default current_timestamp on update current_timestamp,
 `created_by` varchar(45) not null,
-`ecomp_name` varchar(1024) not null,
+`onap_name` varchar(1024) not null,
 `policy_name` varchar(1024) not null,
 `scope` varchar(1024) not null,
 `update_date_time` timestamp not null default '0000-00-00 00:00:00',
@@ -2697,10 +2625,10 @@ primary key (`id`)
 );
 
 --
--- Current Database: `ecomp_sdk`
+-- Current Database: `onap_sdk`
 --
 
-use `ecomp_sdk`;
+use `onap_sdk`;
 
 --
 -- Final view structure for view `function_flattener`
@@ -2724,7 +2652,7 @@ create view `higherorder_bag_functions` as select `function_flattener`.`id` as `
 
 drop table if exists `match_functions`;
 drop view if exists `match_functions`;
-create view `match_functions` as select `d`.`id` as `id`,`d`.`short_name` as `shortname`,`d`.`xacml_id` as `ecomp_sdkid`,`d`.`return_datatype` as `return_datatype`,`d`.`is_bag_return` as `is_bag_return`,`d`.`arg_lb` as `arg_lb`,`d`.`arg_ub` as `arg_ub`,`a1`.`is_bag` as `arg1_isbag`,`a1`.`datatype_id` as `arg1_datatype`,`a2`.`is_bag` as `arg2_isbag`,`a2`.`datatype_id` as `arg2_datatype` from ((`functiondefinition` `d` left join `functionarguments` `a1` on(((`a1`.`function_id` = `d`.`id`) and (`a1`.`arg_index` = 1)))) left join `functionarguments` `a2` on(((`a2`.`function_id` = `d`.`id`) and (`a2`.`arg_index` = 2)))) where ((`d`.`arg_lb` = 2) and (`d`.`arg_ub` = 2) and (`d`.`return_datatype` = 18) and (`a1`.`is_bag` = 0)) order by `d`.`short_name`;
+create view `match_functions` as select `d`.`id` as `id`,`d`.`short_name` as `shortname`,`d`.`xacml_id` as `onap_sdkid`,`d`.`return_datatype` as `return_datatype`,`d`.`is_bag_return` as `is_bag_return`,`d`.`arg_lb` as `arg_lb`,`d`.`arg_ub` as `arg_ub`,`a1`.`is_bag` as `arg1_isbag`,`a1`.`datatype_id` as `arg1_datatype`,`a2`.`is_bag` as `arg2_isbag`,`a2`.`datatype_id` as `arg2_datatype` from ((`functiondefinition` `d` left join `functionarguments` `a1` on(((`a1`.`function_id` = `d`.`id`) and (`a1`.`arg_index` = 1)))) left join `functionarguments` `a2` on(((`a2`.`function_id` = `d`.`id`) and (`a2`.`arg_index` = 2)))) where ((`d`.`arg_lb` = 2) and (`d`.`arg_ub` = 2) and (`d`.`return_datatype` = 18) and (`a1`.`is_bag` = 0)) order by `d`.`short_name`;
 
 --
 -- Final view structure for view `v_url_access`
@@ -2755,10 +2683,10 @@ primary key (`id`)
 );
 
 -- 
--- This is for the default data for 1610 Version of SDK database for Open Source called ecomp_sdk
+-- This is for the default data for 1610 Version of SDK database for Open Source called onap_sdk
 --
 
-USE ecomp_sdk;
+USE onap_sdk;
 
 -- fn_function
 Insert into fn_function (FUNCTION_CD,FUNCTION_NAME) values ('menu_process','Process List');
@@ -2866,14 +2794,14 @@ INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD,
 INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (121, 'Collaboration', 5000, 100, 'collaborate_list.htm', 'menu_sample', 'N', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/bubble.png');
 INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (930, 'Search', 9, 15, 'userProfile', 'menu_admin', 'N', NULL, NULL, NULL, NULL, 'APP', 'N', '/static/fusion/images/search_profile.png');
 INSERT INTO fn_menu (MENU_ID, LABEL, PARENT_ID, SORT_ORDER, ACTION, FUNCTION_CD, ACTIVE_YN, SERVLET, QUERY_STRING, EXTERNAL_URL, TARGET, MENU_SET_CD, SEPARATOR_YN, IMAGE_SRC) VALUES (150038,'Notebook',5000,135,'notebook.htm','menu_sample','N',NULL,NULL,NULL,NULL,'APP','N',NULL);
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150004', 'Policy', '1', '1000', 'menu_policy', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150005', 'Editor', '150004', '1000', 'policy#/Editor', 'policy_editor', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150006', 'Dictionary', '150004', '1000', 'policy#/Dictionary', 'policy_dictionary', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150007', 'PDP', '150004', '1000', 'policy#/Pdp', 'policy_pdp', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150008', 'Push', '150004', '1000', 'policy#/Push', 'policy_push', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150009', 'Roles', '150004', '1000', 'policy#/Roles', 'policy_roles', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150010', 'Admin', '150004', '1000', 'policy#/Admin', 'policy_admin', 'Y', 'APP', 'N');
-INSERT INTO `ecomp_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150011', 'Dashboard', '150004', '1000', 'policy#/Dashboard', 'policy_dashboard', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150004', 'Policy', '1', '1000', 'menu_policy', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150005', 'Editor', '150004', '1000', 'policy#/Editor', 'policy_editor', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150006', 'Dictionary', '150004', '1000', 'policy#/Dictionary', 'policy_dictionary', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150007', 'PDP', '150004', '1000', 'policy#/Pdp', 'policy_pdp', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150008', 'Push', '150004', '1000', 'policy#/Push', 'policy_push', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150009', 'Roles', '150004', '1000', 'policy#/Roles', 'policy_roles', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150010', 'Admin', '150004', '1000', 'policy#/Admin', 'policy_admin', 'Y', 'APP', 'N');
+INSERT INTO `onap_sdk`.`fn_menu` (`menu_id`, `label`, `parent_id`, `sort_order`, `action`, `function_cd`, `active_yn`, `menu_set_cd`, `separator_yn`) VALUES ('150011', 'Dashboard', '150004', '1000', 'policy#/Dashboard', 'policy_dashboard', 'Y', 'APP', 'N');
 
 -- fn_restricted_url
 INSERT INTO fn_restricted_url (restricted_url, function_cd) VALUES ('attachment.htm','menu_admin');
@@ -3010,7 +2938,7 @@ Insert into cr_raptor_action_img (IMAGE_ID, IMAGE_LOC) Values ('DELETE', '/stati
 Insert into cr_raptor_action_img (IMAGE_ID, IMAGE_LOC) Values ('CALENDAR', '/static/fusion/raptor/img/Calendar-16x16.png');
 
 -- fn_app
-Insert into fn_app (APP_ID,APP_NAME,APP_IMAGE_URL,APP_DESCRIPTION,APP_NOTES,APP_URL,APP_ALTERNATE_URL,APP_REST_ENDPOINT,ML_APP_NAME,ML_APP_ADMIN_ID,MOTS_ID,APP_PASSWORD,OPEN,ENABLED,THUMBNAIL,APP_USERNAME,UEB_KEY,UEB_SECRET,UEB_TOPIC_NAME) VALUES (1,'Default',null,'Some Default Description','Some Default Note',null,null,null,'ECPP','?','1','okYTaDrhzibcbGVq5mjkVQ==','N','N',null,'Default',null,null,'ECOMP-PORTAL-INBOX');
+Insert into fn_app (APP_ID,APP_NAME,APP_IMAGE_URL,APP_DESCRIPTION,APP_NOTES,APP_URL,APP_ALTERNATE_URL,APP_REST_ENDPOINT,ML_APP_NAME,ML_APP_ADMIN_ID,MOTS_ID,APP_PASSWORD,OPEN,ENABLED,THUMBNAIL,APP_USERNAME,UEB_KEY,UEB_SECRET,UEB_TOPIC_NAME) VALUES (1,'Default',null,'Some Default Description','Some Default Note',null,null,null,'ECPP','?','1','okYTaDrhzibcbGVq5mjkVQ==','N','N',null,'Default',null,null,'ONAP-PORTAL-INBOX');
 
 -- fn_user_role
 Insert into fn_user_role (USER_ID,ROLE_ID,PRIORITY,APP_ID) values (1,1,null,1);
@@ -6392,24 +6320,24 @@ INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id)
 INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (452,0,254,2,28);
 INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (453,0,92,3,16);
 
-INSERT INTO PIPType VALUES (500,'SQL'), (501,'LDAP'), (502,'CSV'), (503,'Hyper-CSV'), (504,'Custom');
+INSERT INTO PipType VALUES (500,'SQL'), (501,'LDAP'), (502,'CSV'), (503,'Hyper-CSV'), (504,'Custom');
 
 INSERT INTO GlobalRoleSettings (role, lockdown) values ('super-admin', '0');
 
-INSERT INTO `ecomp_sdk`.`roles` (`id`, `loginid`, `role`) VALUES ('2', 'API', 'super-admin');
-INSERT INTO `ecomp_sdk`.`roles` (`id`, `loginid`, `role`) VALUES ('3', 'demo', 'super-admin');
+INSERT INTO `onap_sdk`.`roles` (`id`, `loginid`, `role`) VALUES ('2', 'API', 'super-admin');
+INSERT INTO `onap_sdk`.`roles` (`id`, `loginid`, `role`) VALUES ('3', 'demo', 'super-admin');
 
-INSERT INTO `ecomp_sdk`.`USERINFO` (`loginid`, `NAME`) VALUES ('API', 'API');
-INSERT INTO `ecomp_sdk`.`USERINFO` (`loginid`, `NAME`) VALUES ('demo', 'Demo');
+INSERT INTO `onap_sdk`.`USERINFO` (`loginid`, `NAME`) VALUES ('API', 'API');
+INSERT INTO `onap_sdk`.`USERINFO` (`loginid`, `NAME`) VALUES ('demo', 'Demo');
 
-INSERT INTO `ecomp_sdk`.`dcaeuuid` (`ID`, `name`, `description`) VALUES ('2', '/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer', 'vLoadBalancer');
-INSERT INTO `ecomp_sdk`.`dcaeuuid` (`ID`, `name`, `description`) VALUES ('3', '/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall', 'vFirewall');
+INSERT INTO `onap_sdk`.`dcaeuuid` (`ID`, `name`, `description`) VALUES ('2', '/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer', 'vLoadBalancer');
+INSERT INTO `onap_sdk`.`dcaeuuid` (`ID`, `name`, `description`) VALUES ('3', '/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall', 'vFirewall');
 
-INSERT INTO `ecomp_sdk`.`microservicemodels` (`id`, `modelname`, `description`, `dependency`, `imported_by`, `attributes`, `ref_attributes`, `sub_attributes`, `version`) VALUES ('1', 'TcaMetrics', 'TCA Metrics test', '[NamedEntity,  DcaePolicyEntity]', 'API', 'functionalRole=java.lang.String:defaultValue-NA:required-false:MANY-false, name=java.lang.String:defaultValue-NA:required-false:MANY-false', 'thresholds=TcaThreshold:MANY-true', '{\"TcaThreshold\":{\"severity\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"fieldPath\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"thresholdValue\":\"java.lang.Integer:defaultValue-NA:required-false:MANY-false\",\"closedLoopControlName\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"version\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"direction\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\"}}', '1.0.0.5');
-INSERT INTO `ecomp_sdk`.`microservicemodels` (`id`, `modelname`, `description`, `dependency`, `imported_by`, `ref_attributes`, `sub_attributes`, `version`) VALUES ('2', 'StringMatchingConfiguration', 'StringMatchingConfiguration', '[CdapServiceInstanceConfiguration]', 'API', 'serviceConfigurations=StringMatchingServiceConfiguration:MANY-true', '{\"StringMatchingServiceConfiguration\":{\"ageLimit\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"timeWindow\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"createClosedLoopEventId\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"aaiSendFields\":\"java.lang.String:defaultValue-NA:required-false:MANY-true\",\"stringSet\":\"java.lang.String:defaultValue-NA:required-false:MANY-true\",\"outputEventName\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"aaiMatchingFields\":\"java.lang.String:defaultValue-NA:required-false:MANY-true\"}}', '1.0.0.3');
+INSERT INTO `onap_sdk`.`microservicemodels` (`id`, `modelname`, `description`, `dependency`, `imported_by`, `attributes`, `ref_attributes`, `sub_attributes`, `version`) VALUES ('1', 'TcaMetrics', 'TCA Metrics test', '[NamedEntity,  DcaePolicyEntity]', 'API', 'functionalRole=java.lang.String:defaultValue-NA:required-false:MANY-false, name=java.lang.String:defaultValue-NA:required-false:MANY-false', 'thresholds=TcaThreshold:MANY-true', '{\"TcaThreshold\":{\"severity\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"fieldPath\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"thresholdValue\":\"java.lang.Integer:defaultValue-NA:required-false:MANY-false\",\"closedLoopControlName\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"version\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"direction\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\"}}', '1.0.0.5');
+INSERT INTO `onap_sdk`.`microservicemodels` (`id`, `modelname`, `description`, `dependency`, `imported_by`, `ref_attributes`, `sub_attributes`, `version`) VALUES ('2', 'StringMatchingConfiguration', 'StringMatchingConfiguration', '[CdapServiceInstanceConfiguration]', 'API', 'serviceConfigurations=StringMatchingServiceConfiguration:MANY-true', '{\"StringMatchingServiceConfiguration\":{\"ageLimit\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"timeWindow\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"createClosedLoopEventId\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"aaiSendFields\":\"java.lang.String:defaultValue-NA:required-false:MANY-true\",\"stringSet\":\"java.lang.String:defaultValue-NA:required-false:MANY-true\",\"outputEventName\":\"java.lang.String:defaultValue-NA:required-false:MANY-false\",\"aaiMatchingFields\":\"java.lang.String:defaultValue-NA:required-false:MANY-true\"}}', '1.0.0.3');
 
-INSERT INTO `ecompname` VALUES (1,'demo','2016-12-28 14:23:31','DCAE','DCAE','demo','2016-12-28 14:23:31');
-INSERT INTO `ecompname` VALUES (2,'demo','2016-12-28 14:23:31','test','SampleDemo','demo','2016-12-28 14:23:31');
+INSERT INTO `onapname` VALUES (1,'demo','2016-12-28 14:23:31','DCAE','DCAE','demo','2016-12-28 14:23:31');
+INSERT INTO `onapname` VALUES (2,'demo','2016-12-28 14:23:31','test','SampleDemo','demo','2016-12-28 14:23:31');
 
 INSERT INTO `safepolicywarning` VALUES (1,'demo','SampleRiskType','SampleSafePolicyWarning');
 
@@ -6429,14 +6357,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 `policyentity` VALUES (3153,'doACPolicyPut','2017-02-09 17:13:37',0,'vFW Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:','doACPolicyPut','2017-02-09 17:13:37','<?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:708de148-2cfb-4211-930a-44b446c2d781\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>vFW Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.openecomp.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.openecomp.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=\"ECOMPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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:817128cd-2880-4e85-997b-1abff0eae822\" 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:ECOMPName\" 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,3152),(3155,'doACPolicyPut','2017-02-09 17:16:17',0,'vLB Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:','doACPolicyPut','2017-02-09 17:16:17','<?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:95afb43f-13f2-475c-9501-7e022d15b8a7\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>vLB Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.openecomp.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.openecomp.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=\"ECOMPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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:69f687f8-1f6e-485f-a4e8-5cb9beb28ba4\" 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:ECOMPName\" 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,3154),(3157,'doACPolicyPut','2017-02-09 17:19:38',0,'Micro Service vFirewall Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:','doACPolicyPut','2017-02-09 17:19:38','<?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:a1c91d9b-b5d2-4b04-b3a9-afcac74a8161\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>Micro Service vFirewall Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.openecomp.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.openecomp.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=\"ECOMPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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:2af7b2a1-6427-4765-ac5f-0d5e3c7d059f\" 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:ECOMPName\" 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,3156),(3159,'doACPolicyPut','2017-02-09 17:21:15',0,'Micro Service vLoadBalancer Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:','doACPolicyPut','2017-02-09 17:21:15','<?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:4fd0d4bd-729b-42dd-9c39-d63fea7c9655\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n    <Description>Micro Service vLoadBalancer Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:</Description>\n    <Target>\n        <AnyOf>\n            <AllOf>\n                <Match MatchId=\"org.openecomp.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.openecomp.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=\"ECOMPName\" DataType=\"http://www.w3.org/2001/XMLSchema#string\" MustBePresent=\"false\"/>\n                </Match>\n                <Match MatchId=\"org.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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.openecomp.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:69d31737-09d4-429f-9e1d-6bcf39da90a1\" 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:ECOMPName\" 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,3158);
-
-INSERT INTO `configurationdataentity` VALUES (3152,'/* 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/*-\r\n * ============LICENSE_START=======================================================\r\n * archetype-closed-loop-demo-rules\r\n * ================================================================================\r\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r\n * ================================================================================\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n * \r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n * \r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n * ============LICENSE_END=========================================================\r\n */\r\n\r\npackage org.openecomp.policy.controlloop;\r\n\r\nimport java.util.LinkedList;\r\nimport java.util.Map;\r\nimport java.util.HashMap;\r\nimport java.util.UUID;\r\n\r\nimport org.openecomp.policy.controlloop.VirtualControlLoopEvent;\r\nimport org.openecomp.policy.controlloop.ControlLoopEventStatus;\r\nimport org.openecomp.policy.controlloop.VirtualControlLoopNotification;\r\nimport org.openecomp.policy.controlloop.ControlLoopNotificationType;\r\nimport org.openecomp.policy.controlloop.ControlLoopOperation;\r\nimport org.openecomp.policy.controlloop.ControlLoopOperationWrapper;\r\nimport org.openecomp.policy.template.demo.ControlLoopException;\r\n\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199CloudRegion;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperties;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperty;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199GenericVNF;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InstanceFilters;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Manager;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199NamedQuery;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199QueryParameters;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Request;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199RequestWrapper;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Response;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ServiceInstance;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Tenant;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199VfModule;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199VServer;\r\nimport org.openecomp.policy.aai.util.Serialization;\r\n\r\nimport org.openecomp.policy.appc.CommonHeader;\r\nimport org.openecomp.policy.appc.Request;\r\nimport org.openecomp.policy.appc.Response;\r\nimport org.openecomp.policy.appc.ResponseCode;\r\nimport org.openecomp.policy.appc.ResponseStatus;\r\nimport org.openecomp.policy.appc.ResponseValue;\r\n\r\nimport org.openecomp.policy.template.demo.EventManager;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGRequest;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGStream;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGStreams;\r\n\r\nimport org.openecomp.policy.mso.MSOManager;\r\nimport org.openecomp.policy.mso.MSORequest;\r\nimport org.openecomp.policy.mso.MSORequestStatus;\r\nimport org.openecomp.policy.mso.MSORequestDetails;\r\nimport org.openecomp.policy.mso.MSOModelInfo;\r\nimport org.openecomp.policy.mso.MSOCloudConfiguration;\r\nimport org.openecomp.policy.mso.MSORequestInfo;\r\nimport org.openecomp.policy.mso.MSORequestParameters;\r\nimport org.openecomp.policy.mso.MSORelatedInstanceListElement;\r\nimport org.openecomp.policy.mso.MSORelatedInstance;\r\nimport org.openecomp.policy.mso.MSOResponse;\r\n\r\nimport org.openecomp.policy.drools.system.PolicyEngine;\r\n\r\n//\r\n// These parameters are required to build the runtime policy\r\n//\r\ndeclare Params\r\n    closedLoopControlName : String\r\n    actor : String\r\n    aaiURL : String\r\n    aaiUsername : String\r\n    aaiPassword : String\r\n    msoURL : String\r\n    msoUsername : String\r\n    msoPassword : String\r\n    aaiNamedQueryUUID : String\r\n    aaiPatternMatch : int \r\n    notificationTopic : String\r\n    appcTopic : String\r\nend\r\n\r\n/*\r\n*\r\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\r\n* (Comment SETUP rule out for the first ECOMP opensource release since policy BRMS_GW already puts a Params fact in there)\r\n*\r\n*\r\n*rule \"BRMSParamvFWDemoPolicy.SETUP\"\r\n*  when\r\n*       then\r\n*               System.out.println(\"rule SETUP is triggered.\");\r\n*          Params params = new Params();\r\n*              params.setClosedLoopControlName(\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\r\n*         params.setActor(\"APPC\");\r\n*         params.setAaiURL(\"null\");\r\n*                params.setAaiUsername(\"null\");\r\n*           params.setAaiPassword(\"null\");\r\n*           params.setMsoURL(\"null\");\r\n*                params.setMsoUsername(\"null\");\r\n*           params.setMsoPassword(\"null\");\r\n*           params.setAaiNamedQueryUUID(\"null\");\r\n*             params.setAaiPatternMatch(1);\r\n*              params.setNotificationTopic(\"POLICY-CL-MGT\");\r\n*            params.setAppcTopic(\"APPC-CL\");\r\n*          //\r\n*         // This stays in memory as long as the rule is alive and running\r\n*           //\r\n*         insert(params);\r\n*end\r\n*/\r\n/*\r\n*\r\n* This rule responds to DCAE Events\r\n*\r\n*/\r\nrule \"BRMSParamvFWDemoPolicy.EVENT\"\r\n when\r\n        $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\r\n        then\r\n                System.out.println(\"rule EVENT is triggered.\");\r\n           try {\r\n                       // \r\n                 // Check the requestID in the event to make sure it is not null before we create the EventManager. \r\n                 // The EventManager will do extra syntax checking as well check if the closed loop is disabled/\r\n                     //\r\n                  if ($event.requestID == null) {\r\n                             VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                           notification.notification = ControlLoopNotificationType.REJECTED;\r\n                           notification.from = \"policy\";\r\n                             notification.message = \"Missing requestID from DCAE event\";\r\n                               notification.policyName = drools.getRule().getName();\r\n                               notification.policyScope = \"com\";\r\n                         notification.policyVersion = \"1\";\r\n                         //\r\n                          // Let interested parties know\r\n                              //\r\n                          try {\r\n                                       System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                         } catch (Exception e) {\r\n                                     e.printStackTrace();\r\n                                        System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               }\r\n                           //\r\n                          // Retract it from memory\r\n                           //\r\n                          retract($event);\r\n                            System.out.println(\"Event with requestID=null has been retracted.\");\r\n                      } else {\r\n                            //\r\n                          // Create an EventManager\r\n                           //\r\n                          EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\r\n                               //\r\n                          // Determine if EventManager can actively process the event (i.e. syntax)\r\n                           //\r\n                          VirtualControlLoopNotification notification = manager.activate($event);\r\n                             notification.from = \"policy\"; \r\n                            notification.policyName = drools.getRule().getName();\r\n                               notification.policyScope = \"com\";\r\n                         notification.policyVersion = \"1\";\r\n                         //\r\n                          // Are we actively pursuing this event?\r\n                             //\r\n                          if (notification.notification == ControlLoopNotificationType.ACTIVE) {\r\n                                      //\r\n                                  // Insert Event Manager into memory, this will now kick off processing.\r\n                                     //\r\n                                  insert(manager);\r\n                                    //\r\n                                  // Let interested parties know\r\n                                      //\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             e.printStackTrace();\r\n                                                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                       }               \r\n                            } else {\r\n                                    //\r\n                                  // Let interested parties know\r\n                                      //\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             e.printStackTrace();\r\n                                                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                       }\r\n                                   //\r\n                                  // Retract it from memory\r\n                                   //\r\n                                  retract($event);\r\n                            }\r\n                           //\r\n                          // Now that the manager is inserted into Drools working memory, we\'ll wait for\r\n                             // another rule to fire in order to continue processing. This way we can also\r\n                               // then screen for additional ONSET and ABATED events for this same RequestIDs \r\n                             // and for different RequestIDs but with the same closedLoopControlName and target.\r\n                         //\r\n                  }\r\n           //\r\n          } catch (Exception e) {\r\n                     e.printStackTrace();\r\n                        VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                   notification.notification = ControlLoopNotificationType.REJECTED;\r\n                   notification.message = \"Exception occurred \" + e.getMessage();\r\n                    notification.policyName = drools.getRule().getName();\r\n                       notification.policyScope = \"com\";\r\n                 notification.policyVersion = \"1\";\r\n                 //\r\n                  //\r\n                  //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e1) {\r\n                            System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e1.printStackTrace();\r\n                       }\r\n                   //\r\n                  // Retract the event\r\n                        //\r\n                  retract($event);\r\n            }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\r\n* is created. We can start the operations for this closed loop.\r\n*\r\n*/\r\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER\"\r\n        when\r\n                $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n          $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\r\n  then\r\n                System.out.println(\"rule EVENT.MANAGER is triggered.\");\r\n           //\r\n          // Check which event this is.\r\n               //\r\n          EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\r\n            //\r\n          // We only want the initial ONSET event in memory,\r\n          // all the other events need to be retracted to support\r\n             // cleanup and avoid the other rules being fired for this event.\r\n            //\r\n          if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\r\n                     System.out.println(\"Retracting \"+eventStatus+\" Event.\");\r\n                        retract($event);\r\n                    return;\r\n             }\r\n           //\r\n          // Now the event in memory is first onset event\r\n             //\r\n          try {\r\n                       //\r\n                  // Pull the known AAI field from the Event\r\n                  //\r\n                  // generic-vnf is needed for vFirewall case\r\n                 // vserver-name is needed for vLoadBalancer case\r\n                    //\r\n                  String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\r\n                 String vserver = $event.AAI.get(\"vserver.vserver-name\");\r\n                  //\r\n                  // Check if we are implementing a simple pattern match.\r\n                     //\r\n                  if ($params.getAaiPatternMatch() == 1) {\r\n                            //\r\n                          // Yes\r\n                              //\r\n                          //Basic naming characteristics:\r\n                             //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\r\n                              //Example: \r\n                         //VF Name (9 characters):    cscf0001v\r\n                              //VM Name(13 characters): cscf0001vm001\r\n                             //VFC name(19 characters): cscf0001vm001cfg001\r\n                              //\r\n                          // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \r\n                             // replaced with\r\n                            // zdfw1fwl01pgn02 or zdfw1fwl01pgn01\r\n                               //\r\n                          int index = genericVNF.lastIndexOf(\"fwl\");\r\n                                if (index == -1) {\r\n                                  System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\r\n                               } else {\r\n                                    genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\r\n                               }\r\n                           //\r\n                          // Construct an APPC request\r\n                                //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"ModifyConfig\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // insert operationWrapper into memory\r\n                              //\r\n                          insert(operationWrapper);\r\n                           //\r\n                          Request request = new Request();\r\n                            request.CommonHeader = new CommonHeader();\r\n                          request.CommonHeader.RequestID = $event.requestID;\r\n                          request.Action = operation.operation;\r\n                               request.Payload = new HashMap<String, Object>();\r\n                            //\r\n                          // Fill in the payload\r\n                              //\r\n                          request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\r\n                            //\r\n                          PGRequest pgRequest = new PGRequest();\r\n                              pgRequest.pgStreams = new PGStreams();\r\n                              \r\n                            PGStream pgStream;\r\n                          for(int i = 0; i < 5; i++){\r\n                                 pgStream = new PGStream();\r\n                                  pgStream.streamId = \"fw_udp\"+(i+1);\r\n                                       pgStream.isEnabled = \"true\";\r\n                                      pgRequest.pgStreams.pgStream.add(pgStream);\r\n                         }\r\n                           request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\r\n                           \r\n                            if (request != null) {\r\n                                      //\r\n                                  // Insert request into memory\r\n                                       //\r\n                                  insert(request);\r\n                                    //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  // message and history ??\r\n                                   notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"com\";\r\n                                 notification.policyVersion = \"1\";\r\n                                 try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Now send the operation request\r\n                                   //\r\n                                  if (request instanceof Request) {\r\n                                           try {\r\n                                                       System.out.println(\"APPC request sent:\");\r\n                                                 System.out.println(Serialization.gsonPretty.toJson(request));\r\n                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);\r\n                                              } catch (Exception e) {\r\n                                                     e.printStackTrace();\r\n                                                        System.out.println(\"Can\'t deliver request: \" + request);\r\n                                         }\r\n                                   }\r\n                           } else {\r\n                                    //\r\n                                  // what happens if it is null\r\n                                       //\r\n                          }\r\n                           //\r\n                  } else {\r\n                            //\r\n                          // create AAI named-query request with UUID started with \"F199\"\r\n                           //\r\n                          AAINQF199Request aainqf199request = new AAINQF199Request();\r\n                         AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\r\n                              AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\r\n                                AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\r\n                          //\r\n                          // queryParameters\r\n                          //\r\n                          aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \r\n                              aainqf199queryparam.namedQuery = aainqf199namedquery;\r\n                               aainqf199request.queryParameters = aainqf199queryparam;\r\n                             //\r\n                          // instanceFilters\r\n                          //\r\n                          Map aainqf199instancefiltermap = new HashMap();\r\n                             Map aainqf199instancefiltermapitem = new HashMap();\r\n                         aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \r\n                             aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\r\n                                aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\r\n                             aainqf199request.instanceFilters = aainqf199instancefilter;\r\n                         //\r\n                          // print aainqf199request for debug\r\n                         //\r\n                          System.out.println(\"AAI Request sent:\");\r\n                          System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\r\n                              //\r\n                          // Create AAINQF199RequestWrapper\r\n                           //\r\n                          AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\r\n                          //\r\n                          // insert aainqf199request into memory\r\n                              //\r\n                          insert(aainqf199RequestWrapper);\r\n                    }\r\n                   //\r\n          } catch (Exception e) {\r\n              e.printStackTrace();\r\n               }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\r\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\r\n*\r\n*/\r\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST\"\r\n     when\r\n                $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n          $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\r\n   then\r\n                System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\r\n          //\r\n          // send the request\r\n         //\r\n          AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\r\n                                                                                                      $aainqf199RequestWrapper.aainqf199request, $event.requestID);\r\n            //\r\n          // Check AAI response\r\n               //\r\n          if (aainqf199response == null) {\r\n                    System.err.println(\"Failed to get AAI response\");\r\n                 //\r\n                  // Fail and retract everything\r\n                      //\r\n                  retract($event);\r\n                    retract($manager);\r\n                  retract($aainqf199RequestWrapper);\r\n          } else {\r\n                    //\r\n                  // Create AAINQF199ResponseWrapper\r\n                  //\r\n                  AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\r\n                      //\r\n                  // insert aainqf199ResponseWrapper to memeory\r\n                       //\r\n                  insert(aainqf199ResponseWrapper);\r\n           }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\r\n*\r\n*/\r\nrule \"BRMSParamvFWDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE\"\r\n     when \r\n               $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n          $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\r\n           $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\r\n then\r\n                System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\r\n         //\r\n          // Extract related fields out of AAINQF199RESPONSE\r\n          //\r\n          String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \r\n                 vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\r\n                    serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\r\n                 vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \r\n                      vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\r\n            try {\r\n                       //\r\n                  // vnfItem\r\n                  //\r\n                  vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\r\n                      vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\r\n                  vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\r\n                     vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\r\n                    vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\r\n                  vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\r\n                        vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\r\n                   vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\r\n                   //\r\n                  // serviceItem\r\n                      //\r\n                  serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\r\n                 serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\r\n                       serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\r\n                        serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\r\n                        serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\r\n                    serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\r\n                       //\r\n                  // This comes from the base module\r\n                  //\r\n                  vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).vfModule.vfModuleName;\r\n                    vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\r\n                        //\r\n                  // vfModuleItem - NOT the base module\r\n                       //\r\n                  vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelId;\r\n                  vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelVersion;\r\n                     vfModuleItemModelName =                                 $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(0).propertyValue;\r\n                       vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(4).propertyValue;\r\n                       //\r\n                  // tenantItem\r\n                       //\r\n                  tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\r\n                 //\r\n                  // cloudRegionItem\r\n                  //\r\n                  cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\r\n                 //\r\n          } catch (Exception e) {\r\n                     e.printStackTrace();\r\n                        VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                   notification.notification = ControlLoopNotificationType.REJECTED;\r\n                   notification.message = \"Exception occurred \" + e.getMessage();\r\n                    notification.policyName = drools.getRule().getName();\r\n                       notification.policyScope = \"com\";\r\n                 notification.policyVersion = \"1\";\r\n                 //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e1) {\r\n                            System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e1.printStackTrace();\r\n                       }\r\n                   //\r\n                  notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n                      notification.message = \"Invalid named-query response from AAI\";\r\n            //\r\n            try {\r\n                    System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e1) {\r\n                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                e1.printStackTrace();\r\n            }\r\n                        //\r\n                  // Retract everything\r\n                       //\r\n                  retract($aainqf199RequestWrapper);\r\n                  retract($aainqf199ResponseWrapper);\r\n                 retract($manager);\r\n                  retract($event);\r\n                    return;\r\n             }       \r\n            //\r\n          // Extracted fields should not be null\r\n              //\r\n          if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\r\n               (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\r\n                    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\r\n             (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\r\n                 (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\r\n              (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\r\n                    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\r\n                (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\r\n              (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\r\n                       //\r\n                  System.err.println(\"some fields are missing from AAI response.\");\r\n                 //\r\n                  // Fail and retract everything\r\n                      //\r\n                  retract($aainqf199RequestWrapper);\r\n                  retract($aainqf199ResponseWrapper);\r\n                 retract($manager);\r\n                  retract($event);\r\n                    return;\r\n             }\r\n           //\r\n          // We don\'t need them any more\r\n             //\r\n          retract($aainqf199ResponseWrapper);\r\n         retract($aainqf199RequestWrapper);  \r\n                //\r\n          // check the actor of this closed loop\r\n              //\r\n          switch ($params.getActor()) {\r\n                       case \"APPC\":\r\n                      {\r\n                           //\r\n                          // Construct an APPC request\r\n                                //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"ModifyConfig\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // insert operationWrapper into memory\r\n                              //\r\n                          insert(operationWrapper);\r\n                           //\r\n                          Request request = new Request();\r\n                            request.CommonHeader = new CommonHeader();\r\n                          request.CommonHeader.RequestID = $event.requestID;\r\n                          request.Action = operation.operation;\r\n                               request.Payload = new HashMap<String, Object>();\r\n                            //\r\n                          // Fill in the payload\r\n                              // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\r\n                         //\r\n                          String genericVNF = \"zdfw1fwl01pgn02\";\r\n                            request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\r\n                            //\r\n                          PGRequest pgRequest = new PGRequest();\r\n                              pgRequest.pgStreams = new PGStreams();\r\n                              \r\n                            PGStream pgStream;\r\n                          for(int i = 0; i < 5; i++){\r\n                                 pgStream = new PGStream();\r\n                                  pgStream.streamId = \"fw_udp\"+(i+1);\r\n                                       pgStream.isEnabled = \"true\";\r\n                                      pgRequest.pgStreams.pgStream.add(pgStream);\r\n                         }\r\n                           request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\r\n                           \r\n                            if (request != null) {\r\n                                      //\r\n                                  // Insert request into memory\r\n                                       //\r\n                                  insert(request);\r\n                                    //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  // message and history ??\r\n                                   notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"com\";\r\n                                 notification.policyVersion = \"1\";\r\n                                 try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Now send the operation request\r\n                                   //\r\n                                  if (request instanceof Request) {\r\n                                           try {\r\n                                                       System.out.println(\"APPC request sent:\");\r\n                                                 System.out.println(Serialization.gsonPretty.toJson(request));\r\n                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);\r\n                                              } catch (Exception e) {\r\n                                                     e.printStackTrace();\r\n                                                        System.out.println(\"Can\'t deliver request: \" + request);\r\n                                         }\r\n                                   }\r\n                           } else {\r\n                                    //\r\n                                  // what happens if it is null\r\n                                       //\r\n                          }\r\n                   }\r\n                   break;\r\n                      case \"MSO\":\r\n                       {\r\n                           //\r\n                          // Construct an operation\r\n                           //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"createModuleInstance\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // Construct an MSO request\r\n                         //\r\n                          MSORequest request = new MSORequest();\r\n                              request.requestDetails = new MSORequestDetails();\r\n                           request.requestDetails.modelInfo = new MSOModelInfo();\r\n                              request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\r\n                            request.requestDetails.requestInfo = new MSORequestInfo();\r\n                          request.requestDetails.requestParameters = new MSORequestParameters();\r\n                              request.requestDetails.requestParameters.userParams = null;\r\n                         //\r\n                          // cloudConfiguration\r\n                               //\r\n                          request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\r\n                          request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\r\n                            //\r\n                          // modelInfo\r\n                                //\r\n                          request.requestDetails.modelInfo.modelType = \"vfModule\";\r\n                          request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\r\n                             request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\r\n                               request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\r\n                         request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\r\n                            //\r\n                          // requestInfo\r\n                              //\r\n                          request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\r\n                         request.requestDetails.requestInfo.source = \"POLICY\";\r\n                             request.requestDetails.requestInfo.suppressRollback = false;\r\n                                //\r\n                          // relatedInstanceList\r\n                              //\r\n                          MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\r\n                            MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\r\n                            relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\r\n                             relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\r\n                             //\r\n                          relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\r\n                              relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\r\n                         relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\r\n                              relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\r\n                         relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\r\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\r\n                             relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\r\n                               //\r\n                          relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\r\n                              relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\r\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\r\n                          relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\r\n                             relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\r\n                               relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\r\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\r\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\r\n                              //      \r\n                            request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\r\n                                request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\r\n                                //\r\n                          // print MSO request for debug\r\n                              //\r\n                          System.out.println(\"MSO request sent:\");\r\n                          System.out.println(Serialization.gsonPretty.toJson(request));\r\n                               //\r\n                          //\r\n                          //\r\n                          if (request != null) {\r\n                                      //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"com\";\r\n                                 notification.policyVersion = \"1\";\r\n                                 try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\r\n                                      //\r\n                                  String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\r\n                                        //\r\n                                  // Call MSO\r\n                                 //\r\n                                  MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\r\n                                   //\r\n                                  if (response != null) {\r\n                                             //\r\n                                          // Assign requestId\r\n                                         //\r\n                                          request.requestId = $event.requestID.toString();                                                \r\n                                            response.request.requestId = $event.requestID.toString();\r\n                                           //\r\n                                          // Insert facts\r\n                                             //\r\n                                          insert(operationWrapper);\r\n                                           insert(request);\r\n                                            insert(response);\r\n                                   } else {\r\n                                            //\r\n                                          // MSO request not even accepted\r\n                                            //\r\n                                          notification.message = operationWrapper.operation.toMessage();\r\n                                              operationWrapper.operation.message = operationWrapper.operation.toMessage();\r\n                                                operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                                         $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n                                               notification.history.add(operationWrapper.operation);\r\n                                               notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                                          //\r\n                                          // Let interested parties know\r\n                                              //\r\n                                          try {\r\n                                                       System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                         } catch (Exception e) {\r\n                                                     System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                                       e.printStackTrace();\r\n                                                }\r\n                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n                        try {\r\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                        } catch (Exception e) {\r\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                                           //\r\n                                          // Retract everything\r\n                                               //\r\n                                          retract($event);\r\n                                            retract($manager);\r\n                                  }\r\n                           } else {\r\n                                    System.err.println(\"constructed MSO request is invalid.\");\r\n                                }\r\n                   }\r\n                   break; \r\n             } \r\nend\r\n           \r\n/*\r\n*\r\n* This rule responds to APPC Response Events\r\n*\r\n*/\r\nrule \"BRMSParamvFWDemoPolicy.APPC.RESPONSE\"\r\n     when\r\n                $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n          $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\r\n            $request : Request( getCommonHeader().RequestID == $event.requestID )\r\n               $response : Response( getCommonHeader().RequestID == $event.requestID ) \r\n    then\r\n                System.out.println(\"rule APPC.RESPONSE is triggered.\");\r\n           if ($response.Status == null) {\r\n                     $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                        $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n               } \r\n          //\r\n          // Get the Response Code\r\n            //\r\n          ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\r\n             if (code == null) {\r\n                 $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                        $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n               }\r\n           //\r\n          // Construct notification\r\n           //\r\n          VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n           notification.from = \"policy\";\r\n             notification.policyName = drools.getRule().getName();\r\n               notification.policyScope = \"com\";\r\n         notification.policyVersion = \"1\";\r\n         notification.message = $operationWrapper.operation.toMessage();\r\n             $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\r\n              //\r\n          // Ok, let\'s figure out what APP-C\'s response is\r\n          //\r\n          switch (code) {\r\n                     case ACCEPT:\r\n                                $operationWrapper.operation.outcome = \"PROCESSING\";\r\n                               break;\r\n                      case ERROR:\r\n                 case REJECT:\r\n                                $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                                $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n                               break;\r\n                      case SUCCESS:\r\n                               $operationWrapper.operation.outcome = \"SUCCESS\";\r\n                          $manager.setControlLoopResult(\"SUCCESS\");\r\n                         break;\r\n                      case FAILURE:\r\n                               $operationWrapper.operation.outcome = \"FAILURE\";\r\n                          $manager.setControlLoopResult(\"FAILURE\");\r\n                         break;\r\n              }\r\n           if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\r\n                      notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\r\n            try {\r\n                System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n\r\n                   //\r\n                  // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          } else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\r\n                    retract($response);\r\n         } else {\r\n                    notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n              System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n                       //\r\n                  // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          }\r\n           \r\nend         \r\n\r\n/*\r\n*\r\n* This rule is used to clean up APPC response\r\n*\r\n*/             \r\nrule \"BRMSParamvFWDemoPolicy.APPC.RESPONSE.CLEANUP\"\r\n   when\r\n                $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n        $response : Response($id : getCommonHeader().RequestID )\r\n              not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \r\n    then\r\n                System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\r\n           retract($response);\r\nend\r\n\r\n/*\r\n*\r\n* This rule responds to MSO Response Events\r\n*\r\n*/\r\nrule \"BRMSParamvFWDemoPolicy.MSO.RESPONSE\"\r\n when\r\n                $params : Params( getClosedLoopControlName() == \"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n          $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\r\n            $request : MSORequest( requestId == $event.requestID.toString() )\r\n           $response : MSOResponse( request.requestId == $event.requestID.toString() )     \r\n    then\r\n                System.out.println(\"rule MSO.RESPONSE is triggered.\");\r\n            //\r\n          // Construct notification\r\n           //\r\n          VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n           notification.from = \"policy\";\r\n             notification.policyName = drools.getRule().getName();\r\n               notification.policyScope = \"com\";\r\n         notification.policyVersion = \"1\";\r\n         notification.message = $operationWrapper.operation.toMessage();\r\n             $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\r\n              //\r\n          // The operation can either be succeeded or failed\r\n          // \r\n         if($response.request.requestStatus.requestState.equals(\"Completed\")) {\r\n                    $operationWrapper.operation.outcome = \"SUCCESS\";\r\n                  $manager.setControlLoopResult(\"SUCCESS\");\r\n                 notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                   notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n            //\r\n                     // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          } else {\r\n                    $operationWrapper.operation.outcome = \"FAILURE\";\r\n                  $manager.setControlLoopResult(\"FAILURE\");\r\n                 notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                   notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n            //\r\n                     // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          }\r\n           \r\nend \nrule \"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.setAaiUsername(\"null\");\n              params.setMsoURL(\"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-02-09 17:13:37',0,'','doACPolicyPut','2017-02-09 17:13:37',1),(3154,'/* 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/*-\r\n * ============LICENSE_START=======================================================\r\n * archetype-closed-loop-demo-rules\r\n * ================================================================================\r\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r\n * ================================================================================\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n * \r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n * \r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n * ============LICENSE_END=========================================================\r\n */\r\n\r\npackage org.openecomp.policy.controlloop;\r\n\r\nimport java.util.LinkedList;\r\nimport java.util.Map;\r\nimport java.util.HashMap;\r\nimport java.util.UUID;\r\n\r\nimport org.openecomp.policy.controlloop.VirtualControlLoopEvent;\r\nimport org.openecomp.policy.controlloop.ControlLoopEventStatus;\r\nimport org.openecomp.policy.controlloop.VirtualControlLoopNotification;\r\nimport org.openecomp.policy.controlloop.ControlLoopNotificationType;\r\nimport org.openecomp.policy.controlloop.ControlLoopOperation;\r\nimport org.openecomp.policy.controlloop.ControlLoopOperationWrapper;\r\nimport org.openecomp.policy.template.demo.ControlLoopException;\r\n\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199CloudRegion;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperties;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperty;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199GenericVNF;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InstanceFilters;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Manager;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199NamedQuery;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199QueryParameters;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Request;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199RequestWrapper;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Response;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ServiceInstance;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Tenant;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199VfModule;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199VServer;\r\nimport org.openecomp.policy.aai.util.Serialization;\r\n\r\nimport org.openecomp.policy.appc.CommonHeader;\r\nimport org.openecomp.policy.appc.Request;\r\nimport org.openecomp.policy.appc.Response;\r\nimport org.openecomp.policy.appc.ResponseCode;\r\nimport org.openecomp.policy.appc.ResponseStatus;\r\nimport org.openecomp.policy.appc.ResponseValue;\r\n\r\nimport org.openecomp.policy.template.demo.EventManager;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGRequest;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGStream;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGStreams;\r\n\r\nimport org.openecomp.policy.mso.MSOManager;\r\nimport org.openecomp.policy.mso.MSORequest;\r\nimport org.openecomp.policy.mso.MSORequestStatus;\r\nimport org.openecomp.policy.mso.MSORequestDetails;\r\nimport org.openecomp.policy.mso.MSOModelInfo;\r\nimport org.openecomp.policy.mso.MSOCloudConfiguration;\r\nimport org.openecomp.policy.mso.MSORequestInfo;\r\nimport org.openecomp.policy.mso.MSORequestParameters;\r\nimport org.openecomp.policy.mso.MSORelatedInstanceListElement;\r\nimport org.openecomp.policy.mso.MSORelatedInstance;\r\nimport org.openecomp.policy.mso.MSOResponse;\r\n\r\nimport org.openecomp.policy.drools.system.PolicyEngine;\r\n\r\n//\r\n// These parameters are required to build the runtime policy\r\n//\r\ndeclare Params\r\n    closedLoopControlName : String\r\n    actor : String\r\n    aaiURL : String\r\n    aaiUsername : String\r\n    aaiPassword : String\r\n    msoURL : String\r\n    msoUsername : String\r\n    msoPassword : String\r\n    aaiNamedQueryUUID : String\r\n    aaiPatternMatch : int \r\n    notificationTopic : String\r\n    appcTopic : String\r\nend\r\n\r\n/*\r\n*\r\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\r\n* (Comment SETUP rule out for the first ECOMP opensource release since policy BRMS_GW already puts a Params fact in there)\r\n*\r\n*\r\n*rule \"BRMSParamvLBDemoPolicy.SETUP\"\r\n*  when\r\n*       then\r\n*               System.out.println(\"rule SETUP is triggered.\");\r\n*          Params params = new Params();\r\n*              params.setClosedLoopControlName(\"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\");\r\n*          params.setActor(\"MSO\");\r\n*          params.setAaiURL(\"https://aai.api.simpledemo.openecomp.org:8443\");\r\n*               params.setAaiUsername(\"POLICY\");\r\n*         params.setAaiPassword(\"POLICY\");\r\n*         params.setMsoURL(\"http://vm1.mso.simpledemo.openecomp.org:8080/ecomp/mso/infra\");\r\n*                params.setMsoUsername(\"InfraPortalClient\");\r\n*              params.setMsoPassword(\"password1$\");\r\n*             params.setAaiNamedQueryUUID(\"f199cb88-5e69-4b1f-93e0-6f257877d066\");\r\n*             params.setAaiPatternMatch(0);\r\n*              params.setNotificationTopic(\"POLICY-CL-MGT\");\r\n*            params.setAppcTopic(\"APPC-CL\");\r\n*          //\r\n*         // This stays in memory as long as the rule is alive and running\r\n*           //\r\n*         insert(params);\r\n*end\r\n*/\r\n/*\r\n*\r\n* This rule responds to DCAE Events\r\n*\r\n*/\r\nrule \"BRMSParamvLBDemoPolicy.EVENT\"\r\n when\r\n        $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\r\n then\r\n                System.out.println(\"rule EVENT is triggered.\");\r\n           try {\r\n                       // \r\n                 // Check the requestID in the event to make sure it is not null before we create the EventManager. \r\n                 // The EventManager will do extra syntax checking as well check if the closed loop is disabled/\r\n                     //\r\n                  if ($event.requestID == null) {\r\n                             VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                           notification.notification = ControlLoopNotificationType.REJECTED;\r\n                           notification.from = \"policy\";\r\n                             notification.message = \"Missing requestID from DCAE event\";\r\n                               notification.policyName = drools.getRule().getName();\r\n                               notification.policyScope = \"com\";\r\n                         notification.policyVersion = \"1\";\r\n                         //\r\n                          // Let interested parties know\r\n                              //\r\n                          try {\r\n                                       System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                         } catch (Exception e) {\r\n                                     e.printStackTrace();\r\n                                        System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               }\r\n                           //\r\n                          // Retract it from memory\r\n                           //\r\n                          retract($event);\r\n                            System.out.println(\"Event with requestID=null has been retracted.\");\r\n                      } else {\r\n                            //\r\n                          // Create an EventManager\r\n                           //\r\n                          EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\r\n                               //\r\n                          // Determine if EventManager can actively process the event (i.e. syntax)\r\n                           //\r\n                          VirtualControlLoopNotification notification = manager.activate($event);\r\n                             notification.from = \"policy\"; \r\n                            notification.policyName = drools.getRule().getName();\r\n                               notification.policyScope = \"com\";\r\n                         notification.policyVersion = \"1\";\r\n                         //\r\n                          // Are we actively pursuing this event?\r\n                             //\r\n                          if (notification.notification == ControlLoopNotificationType.ACTIVE) {\r\n                                      //\r\n                                  // Insert Event Manager into memory, this will now kick off processing.\r\n                                     //\r\n                                  insert(manager);\r\n                                    //\r\n                                  // Let interested parties know\r\n                                      //\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             e.printStackTrace();\r\n                                                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                       }               \r\n                            } else {\r\n                                    //\r\n                                  // Let interested parties know\r\n                                      //\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             e.printStackTrace();\r\n                                                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                       }\r\n                                   //\r\n                                  // Retract it from memory\r\n                                   //\r\n                                  retract($event);\r\n                            }\r\n                           //\r\n                          // Now that the manager is inserted into Drools working memory, we\'ll wait for\r\n                             // another rule to fire in order to continue processing. This way we can also\r\n                               // then screen for additional ONSET and ABATED events for this same RequestIDs \r\n                             // and for different RequestIDs but with the same closedLoopControlName and target.\r\n                         //\r\n                  }\r\n           //\r\n          } catch (Exception e) {\r\n                     e.printStackTrace();\r\n                        VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                   notification.notification = ControlLoopNotificationType.REJECTED;\r\n                   notification.message = \"Exception occurred \" + e.getMessage();\r\n                    notification.policyName = drools.getRule().getName();\r\n                       notification.policyScope = \"com\";\r\n                 notification.policyVersion = \"1\";\r\n                 //\r\n                  //\r\n                  //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e1) {\r\n                            System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e1.printStackTrace();\r\n                       }\r\n                   //\r\n                  // Retract the event\r\n                        //\r\n                  retract($event);\r\n            }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\r\n* is created. We can start the operations for this closed loop.\r\n*\r\n*/\r\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER\"\r\n        when\r\n                $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n           $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\r\n  then\r\n                System.out.println(\"rule EVENT.MANAGER is triggered.\");\r\n           //\r\n          // Check which event this is.\r\n               //\r\n          EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\r\n            //\r\n          // We only want the initial ONSET event in memory,\r\n          // all the other events need to be retracted to support\r\n             // cleanup and avoid the other rules being fired for this event.\r\n            //\r\n          if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\r\n                     System.out.println(\"Retracting \"+eventStatus+\" Event.\");\r\n                        retract($event);\r\n                    return;\r\n             }\r\n           //\r\n          // Now the event in memory is first onset event\r\n             //\r\n          try {\r\n                       //\r\n                  // Pull the known AAI field from the Event\r\n                  //\r\n                  // generic-vnf is needed for vFirewall case\r\n                 // vserver-name is needed for vLoadBalancer case\r\n                    //\r\n                  String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\r\n                 String vserver = $event.AAI.get(\"vserver.vserver-name\");\r\n                  //\r\n                  // Check if we are implementing a simple pattern match.\r\n                     //\r\n                  if ($params.getAaiPatternMatch() == 1) {\r\n                            //\r\n                          // Yes\r\n                              //\r\n                          //Basic naming characteristics:\r\n                             //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\r\n                              //Example: \r\n                         //VF Name (9 characters):    cscf0001v\r\n                              //VM Name(13 characters): cscf0001vm001\r\n                             //VFC name(19 characters): cscf0001vm001cfg001\r\n                              //\r\n                          // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \r\n                             // replaced with\r\n                            // zdfw1fwl01pgn02 or zdfw1fwl01pgn01\r\n                               //\r\n                          int index = genericVNF.lastIndexOf(\"fwl\");\r\n                                if (index == -1) {\r\n                                  System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\r\n                               } else {\r\n                                    genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\r\n                               }\r\n                           //\r\n                          // Construct an APPC request\r\n                                //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"ModifyConfig\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // insert operationWrapper into memory\r\n                              //\r\n                          insert(operationWrapper);\r\n                           //\r\n                          Request request = new Request();\r\n                            request.CommonHeader = new CommonHeader();\r\n                          request.CommonHeader.RequestID = $event.requestID;\r\n                          request.Action = operation.operation;\r\n                               request.Payload = new HashMap<String, Object>();\r\n                            //\r\n                          // Fill in the payload\r\n                              //\r\n                          request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\r\n                            //\r\n                          PGRequest pgRequest = new PGRequest();\r\n                              pgRequest.pgStreams = new PGStreams();\r\n                              \r\n                            PGStream pgStream;\r\n                          for(int i = 0; i < 5; i++){\r\n                                 pgStream = new PGStream();\r\n                                  pgStream.streamId = \"fw_udp\"+(i+1);\r\n                                       pgStream.isEnabled = \"true\";\r\n                                      pgRequest.pgStreams.pgStream.add(pgStream);\r\n                         }\r\n                           request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\r\n                           \r\n                            if (request != null) {\r\n                                      //\r\n                                  // Insert request into memory\r\n                                       //\r\n                                  insert(request);\r\n                                    //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  // message and history ??\r\n                                   notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"com\";\r\n                                 notification.policyVersion = \"1\";\r\n                                 try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Now send the operation request\r\n                                   //\r\n                                  if (request instanceof Request) {\r\n                                           try {\r\n                                                       System.out.println(\"APPC request sent:\");\r\n                                                 System.out.println(Serialization.gsonPretty.toJson(request));\r\n                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);\r\n                                              } catch (Exception e) {\r\n                                                     e.printStackTrace();\r\n                                                        System.out.println(\"Can\'t deliver request: \" + request);\r\n                                         }\r\n                                   }\r\n                           } else {\r\n                                    //\r\n                                  // what happens if it is null\r\n                                       //\r\n                          }\r\n                           //\r\n                  } else {\r\n                            //\r\n                          // create AAI named-query request with UUID started with \"F199\"\r\n                           //\r\n                          AAINQF199Request aainqf199request = new AAINQF199Request();\r\n                         AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\r\n                              AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\r\n                                AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\r\n                          //\r\n                          // queryParameters\r\n                          //\r\n                          aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \r\n                              aainqf199queryparam.namedQuery = aainqf199namedquery;\r\n                               aainqf199request.queryParameters = aainqf199queryparam;\r\n                             //\r\n                          // instanceFilters\r\n                          //\r\n                          Map aainqf199instancefiltermap = new HashMap();\r\n                             Map aainqf199instancefiltermapitem = new HashMap();\r\n                         aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \r\n                             aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\r\n                                aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\r\n                             aainqf199request.instanceFilters = aainqf199instancefilter;\r\n                         //\r\n                          // print aainqf199request for debug\r\n                         //\r\n                          System.out.println(\"AAI Request sent:\");\r\n                          System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\r\n                              //\r\n                          // Create AAINQF199RequestWrapper\r\n                           //\r\n                          AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\r\n                          //\r\n                          // insert aainqf199request into memory\r\n                              //\r\n                          insert(aainqf199RequestWrapper);\r\n                    }\r\n                   //\r\n          } catch (Exception e) {\r\n              e.printStackTrace();\r\n               }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\r\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\r\n*\r\n*/\r\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199REQUEST\"\r\n     when\r\n                $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n           $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\r\n   then\r\n                System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\r\n          //\r\n          // send the request\r\n         //\r\n          AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\r\n                                                                                                      $aainqf199RequestWrapper.aainqf199request, $event.requestID);\r\n            //\r\n          // Check AAI response\r\n               //\r\n          if (aainqf199response == null) {\r\n                    System.err.println(\"Failed to get AAI response\");\r\n                 //\r\n                  // Fail and retract everything\r\n                      //\r\n                  retract($event);\r\n                    retract($manager);\r\n                  retract($aainqf199RequestWrapper);\r\n          } else {\r\n                    //\r\n                  // Create AAINQF199ResponseWrapper\r\n                  //\r\n                  AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\r\n                      //\r\n                  // insert aainqf199ResponseWrapper to memeory\r\n                       //\r\n                  insert(aainqf199ResponseWrapper);\r\n           }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\r\n*\r\n*/\r\nrule \"BRMSParamvLBDemoPolicy.EVENT.MANAGER.AAINQF199RESPONSE\"\r\n     when \r\n               $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n           $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\r\n           $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\r\n then\r\n                System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\r\n         //\r\n          // Extract related fields out of AAINQF199RESPONSE\r\n          //\r\n          String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \r\n                 vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\r\n                    serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\r\n                 vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \r\n                      vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\r\n            try {\r\n                       //\r\n                  // vnfItem\r\n                  //\r\n                  vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\r\n                      vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\r\n                  vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\r\n                     vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\r\n                    vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\r\n                  vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\r\n                        vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\r\n                   vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\r\n                   //\r\n                  // serviceItem\r\n                      //\r\n                  serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\r\n                 serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\r\n                       serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\r\n                        serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\r\n                        serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\r\n                    serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\r\n                       //\r\n                  // This comes from the base module\r\n                  //\r\n                  vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).vfModule.vfModuleName;\r\n                    vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\r\n                        //\r\n                  // vfModuleItem - NOT the base module\r\n                       //\r\n                  vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelId;\r\n                  vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelVersion;\r\n                     vfModuleItemModelName =                                 $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(0).propertyValue;\r\n                       vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(4).propertyValue;\r\n                       //\r\n                  // tenantItem\r\n                       //\r\n                  tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\r\n                 //\r\n                  // cloudRegionItem\r\n                  //\r\n                  cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\r\n                 //\r\n          } catch (Exception e) {\r\n                     e.printStackTrace();\r\n                        VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                   notification.notification = ControlLoopNotificationType.REJECTED;\r\n                   notification.message = \"Exception occurred \" + e.getMessage();\r\n                    notification.policyName = drools.getRule().getName();\r\n                       notification.policyScope = \"com\";\r\n                 notification.policyVersion = \"1\";\r\n                 //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e1) {\r\n                            System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e1.printStackTrace();\r\n                       }\r\n                   //\r\n                  notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n                      notification.message = \"Invalid named-query response from AAI\";\r\n            //\r\n            try {\r\n                    System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e1) {\r\n                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                e1.printStackTrace();\r\n            }\r\n                        //\r\n                  // Retract everything\r\n                       //\r\n                  retract($aainqf199RequestWrapper);\r\n                  retract($aainqf199ResponseWrapper);\r\n                 retract($manager);\r\n                  retract($event);\r\n                    return;\r\n             }       \r\n            //\r\n          // Extracted fields should not be null\r\n              //\r\n          if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\r\n               (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\r\n                    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\r\n             (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\r\n                 (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\r\n              (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\r\n                    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\r\n                (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\r\n              (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\r\n                       //\r\n                  System.err.println(\"some fields are missing from AAI response.\");\r\n                 //\r\n                  // Fail and retract everything\r\n                      //\r\n                  retract($aainqf199RequestWrapper);\r\n                  retract($aainqf199ResponseWrapper);\r\n                 retract($manager);\r\n                  retract($event);\r\n                    return;\r\n             }\r\n           //\r\n          // We don\'t need them any more\r\n             //\r\n          retract($aainqf199ResponseWrapper);\r\n         retract($aainqf199RequestWrapper);  \r\n                //\r\n          // check the actor of this closed loop\r\n              //\r\n          switch ($params.getActor()) {\r\n                       case \"APPC\":\r\n                      {\r\n                           //\r\n                          // Construct an APPC request\r\n                                //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"ModifyConfig\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // insert operationWrapper into memory\r\n                              //\r\n                          insert(operationWrapper);\r\n                           //\r\n                          Request request = new Request();\r\n                            request.CommonHeader = new CommonHeader();\r\n                          request.CommonHeader.RequestID = $event.requestID;\r\n                          request.Action = operation.operation;\r\n                               request.Payload = new HashMap<String, Object>();\r\n                            //\r\n                          // Fill in the payload\r\n                              // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\r\n                         //\r\n                          String genericVNF = \"zdfw1fwl01pgn02\";\r\n                            request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\r\n                            //\r\n                          PGRequest pgRequest = new PGRequest();\r\n                              pgRequest.pgStreams = new PGStreams();\r\n                              \r\n                            PGStream pgStream;\r\n                          for(int i = 0; i < 5; i++){\r\n                                 pgStream = new PGStream();\r\n                                  pgStream.streamId = \"fw_udp\"+(i+1);\r\n                                       pgStream.isEnabled = \"true\";\r\n                                      pgRequest.pgStreams.pgStream.add(pgStream);\r\n                         }\r\n                           request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\r\n                           \r\n                            if (request != null) {\r\n                                      //\r\n                                  // Insert request into memory\r\n                                       //\r\n                                  insert(request);\r\n                                    //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  // message and history ??\r\n                                   notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"com\";\r\n                                 notification.policyVersion = \"1\";\r\n                                 try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Now send the operation request\r\n                                   //\r\n                                  if (request instanceof Request) {\r\n                                           try {\r\n                                                       System.out.println(\"APPC request sent:\");\r\n                                                 System.out.println(Serialization.gsonPretty.toJson(request));\r\n                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);\r\n                                              } catch (Exception e) {\r\n                                                     e.printStackTrace();\r\n                                                        System.out.println(\"Can\'t deliver request: \" + request);\r\n                                         }\r\n                                   }\r\n                           } else {\r\n                                    //\r\n                                  // what happens if it is null\r\n                                       //\r\n                          }\r\n                   }\r\n                   break;\r\n                      case \"MSO\":\r\n                       {\r\n                           //\r\n                          // Construct an operation\r\n                           //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"createModuleInstance\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // Construct an MSO request\r\n                         //\r\n                          MSORequest request = new MSORequest();\r\n                              request.requestDetails = new MSORequestDetails();\r\n                           request.requestDetails.modelInfo = new MSOModelInfo();\r\n                              request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\r\n                            request.requestDetails.requestInfo = new MSORequestInfo();\r\n                          request.requestDetails.requestParameters = new MSORequestParameters();\r\n                              request.requestDetails.requestParameters.userParams = null;\r\n                         //\r\n                          // cloudConfiguration\r\n                               //\r\n                          request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\r\n                          request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\r\n                            //\r\n                          // modelInfo\r\n                                //\r\n                          request.requestDetails.modelInfo.modelType = \"vfModule\";\r\n                          request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\r\n                             request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\r\n                               request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\r\n                         request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\r\n                            //\r\n                          // requestInfo\r\n                              //\r\n                          request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\r\n                         request.requestDetails.requestInfo.source = \"POLICY\";\r\n                             request.requestDetails.requestInfo.suppressRollback = false;\r\n                                //\r\n                          // relatedInstanceList\r\n                              //\r\n                          MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\r\n                            MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\r\n                            relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\r\n                             relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\r\n                             //\r\n                          relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\r\n                              relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\r\n                         relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\r\n                              relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\r\n                         relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\r\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\r\n                             relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\r\n                               //\r\n                          relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\r\n                              relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\r\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\r\n                          relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\r\n                             relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\r\n                               relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\r\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\r\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\r\n                              //      \r\n                            request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\r\n                                request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\r\n                                //\r\n                          // print MSO request for debug\r\n                              //\r\n                          System.out.println(\"MSO request sent:\");\r\n                          System.out.println(Serialization.gsonPretty.toJson(request));\r\n                               //\r\n                          //\r\n                          //\r\n                          if (request != null) {\r\n                                      //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"com\";\r\n                                 notification.policyVersion = \"1\";\r\n                                 try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\r\n                                      //\r\n                                  String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\r\n                                        //\r\n                                  // Call MSO\r\n                                 //\r\n                                  MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\r\n                                   //\r\n                                  if (response != null) {\r\n                                             //\r\n                                          // Assign requestId\r\n                                         //\r\n                                          request.requestId = $event.requestID.toString();                                                \r\n                                            response.request.requestId = $event.requestID.toString();\r\n                                           //\r\n                                          // Insert facts\r\n                                             //\r\n                                          insert(operationWrapper);\r\n                                           insert(request);\r\n                                            insert(response);\r\n                                   } else {\r\n                                            //\r\n                                          // MSO request not even accepted\r\n                                            //\r\n                                          notification.message = operationWrapper.operation.toMessage();\r\n                                              operationWrapper.operation.message = operationWrapper.operation.toMessage();\r\n                                                operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                                         $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n                                               notification.history.add(operationWrapper.operation);\r\n                                               notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                                          //\r\n                                          // Let interested parties know\r\n                                              //\r\n                                          try {\r\n                                                       System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                         } catch (Exception e) {\r\n                                                     System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                                       e.printStackTrace();\r\n                                                }\r\n                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n                        try {\r\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                        } catch (Exception e) {\r\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                                           //\r\n                                          // Retract everything\r\n                                               //\r\n                                          retract($event);\r\n                                            retract($manager);\r\n                                  }\r\n                           } else {\r\n                                    System.err.println(\"constructed MSO request is invalid.\");\r\n                                }\r\n                   }\r\n                   break; \r\n             } \r\nend\r\n           \r\n/*\r\n*\r\n* This rule responds to APPC Response Events\r\n*\r\n*/\r\nrule \"BRMSParamvLBDemoPolicy.APPC.RESPONSE\"\r\n     when\r\n                $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n           $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\r\n            $request : Request( getCommonHeader().RequestID == $event.requestID )\r\n               $response : Response( getCommonHeader().RequestID == $event.requestID ) \r\n    then\r\n                System.out.println(\"rule APPC.RESPONSE is triggered.\");\r\n           if ($response.Status == null) {\r\n                     $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                        $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n               } \r\n          //\r\n          // Get the Response Code\r\n            //\r\n          ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\r\n             if (code == null) {\r\n                 $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                        $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n               }\r\n           //\r\n          // Construct notification\r\n           //\r\n          VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n           notification.from = \"policy\";\r\n             notification.policyName = drools.getRule().getName();\r\n               notification.policyScope = \"com\";\r\n         notification.policyVersion = \"1\";\r\n         notification.message = $operationWrapper.operation.toMessage();\r\n             $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\r\n              //\r\n          // Ok, let\'s figure out what APP-C\'s response is\r\n          //\r\n          switch (code) {\r\n                     case ACCEPT:\r\n                                $operationWrapper.operation.outcome = \"PROCESSING\";\r\n                               break;\r\n                      case ERROR:\r\n                 case REJECT:\r\n                                $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                                $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n                               break;\r\n                      case SUCCESS:\r\n                               $operationWrapper.operation.outcome = \"SUCCESS\";\r\n                          $manager.setControlLoopResult(\"SUCCESS\");\r\n                         break;\r\n                      case FAILURE:\r\n                               $operationWrapper.operation.outcome = \"FAILURE\";\r\n                          $manager.setControlLoopResult(\"FAILURE\");\r\n                         break;\r\n              }\r\n           if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\r\n                      notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\r\n            try {\r\n                System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n\r\n                   //\r\n                  // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          } else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\r\n                    retract($response);\r\n         } else {\r\n                    notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n              System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n                       //\r\n                  // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          }\r\n           \r\nend         \r\n\r\n/*\r\n*\r\n* This rule is used to clean up APPC response\r\n*\r\n*/             \r\nrule \"BRMSParamvLBDemoPolicy.APPC.RESPONSE.CLEANUP\"\r\n   when\r\n                $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n        $response : Response($id : getCommonHeader().RequestID )\r\n               not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \r\n    then\r\n                System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\r\n           retract($response);\r\nend\r\n\r\n/*\r\n*\r\n* This rule responds to MSO Response Events\r\n*\r\n*/\r\nrule \"BRMSParamvLBDemoPolicy.MSO.RESPONSE\"\r\n when\r\n                $params : Params( getClosedLoopControlName() == \"CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\" )\r\n           $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\r\n            $request : MSORequest( requestId == $event.requestID.toString() )\r\n           $response : MSOResponse( request.requestId == $event.requestID.toString() )     \r\n    then\r\n                System.out.println(\"rule MSO.RESPONSE is triggered.\");\r\n            //\r\n          // Construct notification\r\n           //\r\n          VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n           notification.from = \"policy\";\r\n             notification.policyName = drools.getRule().getName();\r\n               notification.policyScope = \"com\";\r\n         notification.policyVersion = \"1\";\r\n         notification.message = $operationWrapper.operation.toMessage();\r\n             $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\r\n              //\r\n          // The operation can either be succeeded or failed\r\n          // \r\n         if($response.request.requestStatus.requestState.equals(\"Completed\")) {\r\n                    $operationWrapper.operation.outcome = \"SUCCESS\";\r\n                  $manager.setControlLoopResult(\"SUCCESS\");\r\n                 notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                   notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n            //\r\n                     // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          } else {\r\n                    $operationWrapper.operation.outcome = \"FAILURE\";\r\n                  $manager.setControlLoopResult(\"FAILURE\");\r\n                 notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                   notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n            //\r\n                     // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          }\r\n           \r\nend \nrule \"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/ecomp/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-02-09 17:16:17',0,'','doACPolicyPut','2017-02-09 17:16:17',1),(3156,'{\"service\":\"TcaMetrics\",\"location\":\"SampleServiceLocation\",\"uuid\":\"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFirewall\",\"policyName\":\"vFirewall\",\"description\":\"Micro Service vFirewall Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@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-02-09 17:19:38',0,'','doACPolicyPut','2017-02-09 17:19:38',1),(3158,'{\"service\":\"TcaMetrics\",\"location\":\"SampleServiceLocation\",\"uuid\":\"/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vLoadBalancer\",\"policyName\":\"vLoadBalancer\",\"description\":\"Micro Service vLoadBalancer Demo Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@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-02-09 17:21:15',0,'','doACPolicyPut','2017-02-09 17:21:15',1);
-
-INSERT INTO `policyversion` VALUES (1,'com/Config_BRMS_Param_BRMSParamvFWDemoPolicy',1,1,'2017-02-09 17:13:43','demo','2017-02-09 17:13:43','demo'),(2,'com/Config_BRMS_Param_BRMSParamvLBDemoPolicy',1,1,'2017-02-09 17:16:19','demo','2017-02-09 17:16:19','demo'),(3,'com/Config_MS_vFirewall',1,1,'2017-02-09 17:19:40','demo','2017-02-09 17:19:40','demo'),(4,'com/Config_MS_vLoadBalancer',1,1,'2017-02-09 17:21:17','demo','2017-02-09 17:21:17','demo');
-
-INSERT INTO `brmsparamtemplate` VALUES (5,'ControlLoopDemo__closedLoopControlName','ControlLoopDemo__closedLoopControlName','\r\n\r\n/*-\r\n * ============LICENSE_START=======================================================\r\n * archetype-closed-loop-demo-rules\r\n * ================================================================================\r\n * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r\n * ================================================================================\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n * \r\n *      http://www.apache.org/licenses/LICENSE-2.0\r\n * \r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n * ============LICENSE_END=========================================================\r\n */\r\n\r\npackage org.openecomp.policy.controlloop;\r\n\r\nimport java.util.LinkedList;\r\nimport java.util.Map;\r\nimport java.util.HashMap;\r\nimport java.util.UUID;\r\n\r\nimport org.openecomp.policy.controlloop.VirtualControlLoopEvent;\r\nimport org.openecomp.policy.controlloop.ControlLoopEventStatus;\r\nimport org.openecomp.policy.controlloop.VirtualControlLoopNotification;\r\nimport org.openecomp.policy.controlloop.ControlLoopNotificationType;\r\nimport org.openecomp.policy.controlloop.ControlLoopOperation;\r\nimport org.openecomp.policy.controlloop.ControlLoopOperationWrapper;\r\nimport org.openecomp.policy.template.demo.ControlLoopException;\r\n\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199CloudRegion;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperties;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperty;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199GenericVNF;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InstanceFilters;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Manager;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199NamedQuery;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199QueryParameters;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Request;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199RequestWrapper;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Response;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199ServiceInstance;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199Tenant;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199VfModule;\r\nimport org.openecomp.policy.aai.AAINQF199.AAINQF199VServer;\r\nimport org.openecomp.policy.aai.util.Serialization;\r\n\r\nimport org.openecomp.policy.appc.CommonHeader;\r\nimport org.openecomp.policy.appc.Request;\r\nimport org.openecomp.policy.appc.Response;\r\nimport org.openecomp.policy.appc.ResponseCode;\r\nimport org.openecomp.policy.appc.ResponseStatus;\r\nimport org.openecomp.policy.appc.ResponseValue;\r\n\r\nimport org.openecomp.policy.template.demo.EventManager;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGRequest;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGStream;\r\nimport org.openecomp.policy.vnf.trafficgenerator.PGStreams;\r\n\r\nimport org.openecomp.policy.mso.MSOManager;\r\nimport org.openecomp.policy.mso.MSORequest;\r\nimport org.openecomp.policy.mso.MSORequestStatus;\r\nimport org.openecomp.policy.mso.MSORequestDetails;\r\nimport org.openecomp.policy.mso.MSOModelInfo;\r\nimport org.openecomp.policy.mso.MSOCloudConfiguration;\r\nimport org.openecomp.policy.mso.MSORequestInfo;\r\nimport org.openecomp.policy.mso.MSORequestParameters;\r\nimport org.openecomp.policy.mso.MSORelatedInstanceListElement;\r\nimport org.openecomp.policy.mso.MSORelatedInstance;\r\nimport org.openecomp.policy.mso.MSOResponse;\r\n\r\nimport org.openecomp.policy.drools.system.PolicyEngine;\r\n\r\n//\r\n// These parameters are required to build the runtime policy\r\n//\r\ndeclare Params\r\n    closedLoopControlName : String\r\n    actor : String\r\n    aaiURL : String\r\n    aaiUsername : String\r\n    aaiPassword : String\r\n    msoURL : String\r\n    msoUsername : String\r\n    msoPassword : String\r\n    aaiNamedQueryUUID : String\r\n    aaiPatternMatch : int \r\n    notificationTopic : String\r\n    appcTopic : String\r\nend\r\n\r\n/*\r\n*\r\n* Called once and only once to insert the parameters into working memory for this Closed Loop policy.\r\n* (Comment SETUP rule out for the first ECOMP opensource release since policy BRMS_GW already puts a Params fact in there)\r\n*\r\n*\r\n*rule \"${policyName}.SETUP\"\r\n*     when\r\n*       then\r\n*               System.out.println(\"rule SETUP is triggered.\");\r\n*          Params params = new Params();\r\n*              params.setClosedLoopControlName(\"${closedLoopControlName}\");\r\n*             params.setActor(\"${actor}\");\r\n*             params.setAaiURL(\"${aaiURL}\");\r\n*           params.setAaiUsername(\"${aaiUsername}\");\r\n*         params.setAaiPassword(\"${aaiPassword}\");\r\n*         params.setMsoURL(\"${msoURL}\");\r\n*           params.setMsoUsername(\"${msoUsername}\");\r\n*         params.setMsoPassword(\"${msoPassword}\");\r\n*         params.setAaiNamedQueryUUID(\"${aaiNamedQueryUUID}\");\r\n*             params.setAaiPatternMatch(${aaiPatternMatch});\r\n*             params.setNotificationTopic(\"${notificationTopic}\");\r\n*             params.setAppcTopic(\"${appcTopic}\");\r\n*             //\r\n*         // This stays in memory as long as the rule is alive and running\r\n*           //\r\n*         insert(params);\r\n*end\r\n*/\r\n/*\r\n*\r\n* This rule responds to DCAE Events\r\n*\r\n*/\r\nrule \"${policyName}.EVENT\"\r\n  when\r\n        $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n        $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n        not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))\r\n    then\r\n                System.out.println(\"rule EVENT is triggered.\");\r\n           try {\r\n                       // \r\n                 // Check the requestID in the event to make sure it is not null before we create the EventManager. \r\n                 // The EventManager will do extra syntax checking as well check if the closed loop is disabled/\r\n                     //\r\n                  if ($event.requestID == null) {\r\n                             VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                           notification.notification = ControlLoopNotificationType.REJECTED;\r\n                           notification.from = \"policy\";\r\n                             notification.message = \"Missing requestID from DCAE event\";\r\n                               notification.policyName = drools.getRule().getName();\r\n                               notification.policyScope = \"${policyScope}\";\r\n                              notification.policyVersion = \"${policyVersion}\";\r\n                          //\r\n                          // Let interested parties know\r\n                              //\r\n                          try {\r\n                                       System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                         } catch (Exception e) {\r\n                                     e.printStackTrace();\r\n                                        System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               }\r\n                           //\r\n                          // Retract it from memory\r\n                           //\r\n                          retract($event);\r\n                            System.out.println(\"Event with requestID=null has been retracted.\");\r\n                      } else {\r\n                            //\r\n                          // Create an EventManager\r\n                           //\r\n                          EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);\r\n                               //\r\n                          // Determine if EventManager can actively process the event (i.e. syntax)\r\n                           //\r\n                          VirtualControlLoopNotification notification = manager.activate($event);\r\n                             notification.from = \"policy\"; \r\n                            notification.policyName = drools.getRule().getName();\r\n                               notification.policyScope = \"${policyScope}\";\r\n                              notification.policyVersion = \"${policyVersion}\";\r\n                          //\r\n                          // Are we actively pursuing this event?\r\n                             //\r\n                          if (notification.notification == ControlLoopNotificationType.ACTIVE) {\r\n                                      //\r\n                                  // Insert Event Manager into memory, this will now kick off processing.\r\n                                     //\r\n                                  insert(manager);\r\n                                    //\r\n                                  // Let interested parties know\r\n                                      //\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             e.printStackTrace();\r\n                                                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                       }               \r\n                            } else {\r\n                                    //\r\n                                  // Let interested parties know\r\n                                      //\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             e.printStackTrace();\r\n                                                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                       }\r\n                                   //\r\n                                  // Retract it from memory\r\n                                   //\r\n                                  retract($event);\r\n                            }\r\n                           //\r\n                          // Now that the manager is inserted into Drools working memory, we\'ll wait for\r\n                             // another rule to fire in order to continue processing. This way we can also\r\n                               // then screen for additional ONSET and ABATED events for this same RequestIDs \r\n                             // and for different RequestIDs but with the same closedLoopControlName and target.\r\n                         //\r\n                  }\r\n           //\r\n          } catch (Exception e) {\r\n                     e.printStackTrace();\r\n                        VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                   notification.notification = ControlLoopNotificationType.REJECTED;\r\n                   notification.message = \"Exception occurred \" + e.getMessage();\r\n                    notification.policyName = drools.getRule().getName();\r\n                       notification.policyScope = \"${policyScope}\";\r\n                      notification.policyVersion = \"${policyVersion}\";\r\n                  //\r\n                  //\r\n                  //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e1) {\r\n                            System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e1.printStackTrace();\r\n                       }\r\n                   //\r\n                  // Retract the event\r\n                        //\r\n                  retract($event);\r\n            }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager\r\n* is created. We can start the operations for this closed loop.\r\n*\r\n*/\r\nrule \"${policyName}.EVENT.MANAGER\"\r\n when\r\n                $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n              $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)\r\n  then\r\n                System.out.println(\"rule EVENT.MANAGER is triggered.\");\r\n           //\r\n          // Check which event this is.\r\n               //\r\n          EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);\r\n            //\r\n          // We only want the initial ONSET event in memory,\r\n          // all the other events need to be retracted to support\r\n             // cleanup and avoid the other rules being fired for this event.\r\n            //\r\n          if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {\r\n                     System.out.println(\"Retracting \"+eventStatus+\" Event.\");\r\n                        retract($event);\r\n                    return;\r\n             }\r\n           //\r\n          // Now the event in memory is first onset event\r\n             //\r\n          try {\r\n                       //\r\n                  // Pull the known AAI field from the Event\r\n                  //\r\n                  // generic-vnf is needed for vFirewall case\r\n                 // vserver-name is needed for vLoadBalancer case\r\n                    //\r\n                  String genericVNF = $event.AAI.get(\"generic-vnf.vnf-id\");\r\n                 String vserver = $event.AAI.get(\"vserver.vserver-name\");\r\n                  //\r\n                  // Check if we are implementing a simple pattern match.\r\n                     //\r\n                  if ($params.getAaiPatternMatch() == 1) {\r\n                            //\r\n                          // Yes\r\n                              //\r\n                          //Basic naming characteristics:\r\n                             //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)\r\n                              //Example: \r\n                         //VF Name (9 characters):    cscf0001v\r\n                              //VM Name(13 characters): cscf0001vm001\r\n                             //VFC name(19 characters): cscf0001vm001cfg001\r\n                              //\r\n                          // zdfw1fwl01fwl02 or zdfw1fwl01fwl01  \r\n                             // replaced with\r\n                            // zdfw1fwl01pgn02 or zdfw1fwl01pgn01\r\n                               //\r\n                          int index = genericVNF.lastIndexOf(\"fwl\");\r\n                                if (index == -1) {\r\n                                  System.err.println(\"The generic-vnf.vnf-id from DCAE Event is not valid.\");\r\n                               } else {\r\n                                    genericVNF = genericVNF.substring(0, index) + \"pgn\" + genericVNF.substring(index+\"fwl\".length());\r\n                               }\r\n                           //\r\n                          // Construct an APPC request\r\n                                //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"ModifyConfig\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // insert operationWrapper into memory\r\n                              //\r\n                          insert(operationWrapper);\r\n                           //\r\n                          Request request = new Request();\r\n                            request.CommonHeader = new CommonHeader();\r\n                          request.CommonHeader.RequestID = $event.requestID;\r\n                          request.Action = operation.operation;\r\n                               request.Payload = new HashMap<String, Object>();\r\n                            //\r\n                          // Fill in the payload\r\n                              //\r\n                          request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\r\n                            //\r\n                          PGRequest pgRequest = new PGRequest();\r\n                              pgRequest.pgStreams = new PGStreams();\r\n                              \r\n                            PGStream pgStream;\r\n                          for(int i = 0; i < 5; i++){\r\n                                 pgStream = new PGStream();\r\n                                  pgStream.streamId = \"fw_udp\"+(i+1);\r\n                                       pgStream.isEnabled = \"true\";\r\n                                      pgRequest.pgStreams.pgStream.add(pgStream);\r\n                         }\r\n                           request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\r\n                           \r\n                            if (request != null) {\r\n                                      //\r\n                                  // Insert request into memory\r\n                                       //\r\n                                  insert(request);\r\n                                    //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  // message and history ??\r\n                                   notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"${policyScope}\";\r\n                                      notification.policyVersion = \"${policyVersion}\";\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Now send the operation request\r\n                                   //\r\n                                  if (request instanceof Request) {\r\n                                           try {\r\n                                                       System.out.println(\"APPC request sent:\");\r\n                                                 System.out.println(Serialization.gsonPretty.toJson(request));\r\n                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);\r\n                                              } catch (Exception e) {\r\n                                                     e.printStackTrace();\r\n                                                        System.out.println(\"Can\'t deliver request: \" + request);\r\n                                         }\r\n                                   }\r\n                           } else {\r\n                                    //\r\n                                  // what happens if it is null\r\n                                       //\r\n                          }\r\n                           //\r\n                  } else {\r\n                            //\r\n                          // create AAI named-query request with UUID started with \"F199\"\r\n                           //\r\n                          AAINQF199Request aainqf199request = new AAINQF199Request();\r\n                         AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();\r\n                              AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();\r\n                                AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();\r\n                          //\r\n                          // queryParameters\r\n                          //\r\n                          aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID()); \r\n                              aainqf199queryparam.namedQuery = aainqf199namedquery;\r\n                               aainqf199request.queryParameters = aainqf199queryparam;\r\n                             //\r\n                          // instanceFilters\r\n                          //\r\n                          Map aainqf199instancefiltermap = new HashMap();\r\n                             Map aainqf199instancefiltermapitem = new HashMap();\r\n                         aainqf199instancefiltermapitem.put(\"vserver-name\", vserver); \r\n                             aainqf199instancefiltermap.put(\"vserver\", aainqf199instancefiltermapitem);\r\n                                aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);\r\n                             aainqf199request.instanceFilters = aainqf199instancefilter;\r\n                         //\r\n                          // print aainqf199request for debug\r\n                         //\r\n                          System.out.println(\"AAI Request sent:\");\r\n                          System.out.println(Serialization.gsonPretty.toJson(aainqf199request));\r\n                              //\r\n                          // Create AAINQF199RequestWrapper\r\n                           //\r\n                          AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);\r\n                          //\r\n                          // insert aainqf199request into memory\r\n                              //\r\n                          insert(aainqf199RequestWrapper);\r\n                    }\r\n                   //\r\n          } catch (Exception e) {\r\n              e.printStackTrace();\r\n               }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager\r\n* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.\r\n*\r\n*/\r\nrule \"${policyName}.EVENT.MANAGER.AAINQF199REQUEST\"\r\n      when\r\n                $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n              $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\r\n   then\r\n                System.out.println(\"rule EVENT.MANAGER.AAINQF199REQUEST is triggered.\");\r\n          //\r\n          // send the request\r\n         //\r\n          AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),\r\n                                                                                                      $aainqf199RequestWrapper.aainqf199request, $event.requestID);\r\n            //\r\n          // Check AAI response\r\n               //\r\n          if (aainqf199response == null) {\r\n                    System.err.println(\"Failed to get AAI response\");\r\n                 //\r\n                  // Fail and retract everything\r\n                      //\r\n                  retract($event);\r\n                    retract($manager);\r\n                  retract($aainqf199RequestWrapper);\r\n          } else {\r\n                    //\r\n                  // Create AAINQF199ResponseWrapper\r\n                  //\r\n                  AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);\r\n                      //\r\n                  // insert aainqf199ResponseWrapper to memeory\r\n                       //\r\n                  insert(aainqf199ResponseWrapper);\r\n           }\r\nend\r\n\r\n/*\r\n*\r\n* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.\r\n*\r\n*/\r\nrule \"${policyName}.EVENT.MANAGER.AAINQF199RESPONSE\"\r\n      when \r\n               $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n              $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)\r\n           $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)\r\n then\r\n                System.out.println(\"rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.\");\r\n         //\r\n          // Extract related fields out of AAINQF199RESPONSE\r\n          //\r\n          String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName, \r\n                 vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,\r\n                    serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,\r\n                 vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName, \r\n                      vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;\r\n            try {\r\n                       //\r\n                  // vnfItem\r\n                  //\r\n                  vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;\r\n                      vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;\r\n                  vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf(\"/\")+1);\r\n                     vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;\r\n                    vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;\r\n                  vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\r\n                        vnfItemModelVersion =           $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;\r\n                   vnfItemModelNameVersionId =     $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\r\n                   //\r\n                  // serviceItem\r\n                      //\r\n                  serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;\r\n                 serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;\r\n                       serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;\r\n                        serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;\r\n                        serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;\r\n                    serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;\r\n                       //\r\n                  // This comes from the base module\r\n                  //\r\n                  vfModuleItemVfModuleName =                      $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).vfModule.vfModuleName;\r\n                    vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace(\"Vfmodule\", \"vDNS\");\r\n                        //\r\n                  // vfModuleItem - NOT the base module\r\n                       //\r\n                  vfModuleItemPersonaModelId =            $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelId;\r\n                  vfModuleItemPersonaModelVersion =       $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelVersion;\r\n                     vfModuleItemModelName =                                 $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(0).propertyValue;\r\n                       vfModuleItemModelNameVersionId =        $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(4).propertyValue;\r\n                       //\r\n                  // tenantItem\r\n                       //\r\n                  tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;\r\n                 //\r\n                  // cloudRegionItem\r\n                  //\r\n                  cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;\r\n                 //\r\n          } catch (Exception e) {\r\n                     e.printStackTrace();\r\n                        VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                   notification.notification = ControlLoopNotificationType.REJECTED;\r\n                   notification.message = \"Exception occurred \" + e.getMessage();\r\n                    notification.policyName = drools.getRule().getName();\r\n                       notification.policyScope = \"${policyScope}\";\r\n                      notification.policyVersion = \"${policyVersion}\";\r\n                  //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e1) {\r\n                            System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e1.printStackTrace();\r\n                       }\r\n                   //\r\n                  notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n                      notification.message = \"Invalid named-query response from AAI\";\r\n            //\r\n            try {\r\n                    System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e1) {\r\n                System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                e1.printStackTrace();\r\n            }\r\n                        //\r\n                  // Retract everything\r\n                       //\r\n                  retract($aainqf199RequestWrapper);\r\n                  retract($aainqf199ResponseWrapper);\r\n                 retract($manager);\r\n                  retract($event);\r\n                    return;\r\n             }       \r\n            //\r\n          // Extracted fields should not be null\r\n              //\r\n          if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||\r\n               (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||\r\n                    (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||\r\n             (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||\r\n                 (serviceItemModelType == null) || (serviceItemModelVersion == null) ||\r\n              (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||\r\n                    (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||\r\n                (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||\r\n              (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {\r\n                       //\r\n                  System.err.println(\"some fields are missing from AAI response.\");\r\n                 //\r\n                  // Fail and retract everything\r\n                      //\r\n                  retract($aainqf199RequestWrapper);\r\n                  retract($aainqf199ResponseWrapper);\r\n                 retract($manager);\r\n                  retract($event);\r\n                    return;\r\n             }\r\n           //\r\n          // We don\'t need them any more\r\n             //\r\n          retract($aainqf199ResponseWrapper);\r\n         retract($aainqf199RequestWrapper);  \r\n                //\r\n          // check the actor of this closed loop\r\n              //\r\n          switch ($params.getActor()) {\r\n                       case \"APPC\":\r\n                      {\r\n                           //\r\n                          // Construct an APPC request\r\n                                //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"ModifyConfig\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // insert operationWrapper into memory\r\n                              //\r\n                          insert(operationWrapper);\r\n                           //\r\n                          Request request = new Request();\r\n                            request.CommonHeader = new CommonHeader();\r\n                          request.CommonHeader.RequestID = $event.requestID;\r\n                          request.Action = operation.operation;\r\n                               request.Payload = new HashMap<String, Object>();\r\n                            //\r\n                          // Fill in the payload\r\n                              // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case\r\n                         //\r\n                          String genericVNF = \"zdfw1fwl01pgn02\";\r\n                            request.Payload.put(\"generic-vnf.vnf-id\", genericVNF);\r\n                            //\r\n                          PGRequest pgRequest = new PGRequest();\r\n                              pgRequest.pgStreams = new PGStreams();\r\n                              \r\n                            PGStream pgStream;\r\n                          for(int i = 0; i < 5; i++){\r\n                                 pgStream = new PGStream();\r\n                                  pgStream.streamId = \"fw_udp\"+(i+1);\r\n                                       pgStream.isEnabled = \"true\";\r\n                                      pgRequest.pgStreams.pgStream.add(pgStream);\r\n                         }\r\n                           request.Payload.put(\"pg-streams\", pgRequest.pgStreams);\r\n                           \r\n                            if (request != null) {\r\n                                      //\r\n                                  // Insert request into memory\r\n                                       //\r\n                                  insert(request);\r\n                                    //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  // message and history ??\r\n                                   notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"${policyScope}\";\r\n                                      notification.policyVersion = \"${policyVersion}\";\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Now send the operation request\r\n                                   //\r\n                                  if (request instanceof Request) {\r\n                                           try {\r\n                                                       System.out.println(\"APPC request sent:\");\r\n                                                 System.out.println(Serialization.gsonPretty.toJson(request));\r\n                                                       PolicyEngine.manager.deliver($params.getAppcTopic(), request);\r\n                                              } catch (Exception e) {\r\n                                                     e.printStackTrace();\r\n                                                        System.out.println(\"Can\'t deliver request: \" + request);\r\n                                         }\r\n                                   }\r\n                           } else {\r\n                                    //\r\n                                  // what happens if it is null\r\n                                       //\r\n                          }\r\n                   }\r\n                   break;\r\n                      case \"MSO\":\r\n                       {\r\n                           //\r\n                          // Construct an operation\r\n                           //\r\n                          ControlLoopOperation operation = new ControlLoopOperation();\r\n                                operation.actor = $params.getActor();\r\n                               operation.operation = \"createModuleInstance\";\r\n                             operation.target = $event.target;\r\n                           //\r\n                          // Create operationWrapper\r\n                          //\r\n                          ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);\r\n                                //\r\n                          // Construct an MSO request\r\n                         //\r\n                          MSORequest request = new MSORequest();\r\n                              request.requestDetails = new MSORequestDetails();\r\n                           request.requestDetails.modelInfo = new MSOModelInfo();\r\n                              request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();\r\n                            request.requestDetails.requestInfo = new MSORequestInfo();\r\n                          request.requestDetails.requestParameters = new MSORequestParameters();\r\n                              request.requestDetails.requestParameters.userParams = null;\r\n                         //\r\n                          // cloudConfiguration\r\n                               //\r\n                          request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;\r\n                          request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;\r\n                            //\r\n                          // modelInfo\r\n                                //\r\n                          request.requestDetails.modelInfo.modelType = \"vfModule\";\r\n                          request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;\r\n                             request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;\r\n                               request.requestDetails.modelInfo.modelName = vfModuleItemModelName;\r\n                         request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;\r\n                            //\r\n                          // requestInfo\r\n                              //\r\n                          request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;\r\n                         request.requestDetails.requestInfo.source = \"POLICY\";\r\n                             request.requestDetails.requestInfo.suppressRollback = false;\r\n                                //\r\n                          // relatedInstanceList\r\n                              //\r\n                          MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();\r\n                            MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();\r\n                            relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();\r\n                             relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();\r\n                             //\r\n                          relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;\r\n                              relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();\r\n                         relatedInstanceListElement1.relatedInstance.modelInfo.modelType = \"service\";\r\n                              relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;\r\n                         relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;\r\n                           relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;\r\n                             relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;\r\n                               //\r\n                          relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;\r\n                              relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();\r\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelType = \"vnf\";\r\n                          relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;\r\n                             relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;\r\n                               relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;\r\n                         relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemModelVersion;\r\n                           relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;\r\n                              //      \r\n                            request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);\r\n                                request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);\r\n                                //\r\n                          // print MSO request for debug\r\n                              //\r\n                          System.out.println(\"MSO request sent:\");\r\n                          System.out.println(Serialization.gsonPretty.toJson(request));\r\n                               //\r\n                          //\r\n                          //\r\n                          if (request != null) {\r\n                                      //\r\n                                  // Tell interested parties we are performing this Operation\r\n                                 //\r\n                                  VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n                                   notification.notification = ControlLoopNotificationType.OPERATION;\r\n                                  notification.from = \"policy\";\r\n                                     notification.policyName = drools.getRule().getName();\r\n                                       notification.policyScope = \"${policyScope}\";\r\n                                      notification.policyVersion = \"${policyVersion}\";\r\n                                  try {\r\n                                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                 } catch (Exception e) {\r\n                                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                               e.printStackTrace();\r\n                                        }\r\n                                   //\r\n                                  // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL\r\n                                      //\r\n                                  String MSOUrl = $params.getMsoURL() + \"/serviceInstances/v2/\" + serviceItemServiceInstanceId + \"/vnfs/\" + vnfItemVnfId + \"/vfModules\";\r\n                                        //\r\n                                  // Call MSO\r\n                                 //\r\n                                  MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);\r\n                                   //\r\n                                  if (response != null) {\r\n                                             //\r\n                                          // Assign requestId\r\n                                         //\r\n                                          request.requestId = $event.requestID.toString();                                                \r\n                                            response.request.requestId = $event.requestID.toString();\r\n                                           //\r\n                                          // Insert facts\r\n                                             //\r\n                                          insert(operationWrapper);\r\n                                           insert(request);\r\n                                            insert(response);\r\n                                   } else {\r\n                                            //\r\n                                          // MSO request not even accepted\r\n                                            //\r\n                                          notification.message = operationWrapper.operation.toMessage();\r\n                                              operationWrapper.operation.message = operationWrapper.operation.toMessage();\r\n                                                operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                                         $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n                                               notification.history.add(operationWrapper.operation);\r\n                                               notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                                          //\r\n                                          // Let interested parties know\r\n                                              //\r\n                                          try {\r\n                                                       System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                                                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                                         } catch (Exception e) {\r\n                                                     System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                                                       e.printStackTrace();\r\n                                                }\r\n                       notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n                        try {\r\n                         System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                        } catch (Exception e) {\r\n                              System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                                           //\r\n                                          // Retract everything\r\n                                               //\r\n                                          retract($event);\r\n                                            retract($manager);\r\n                                  }\r\n                           } else {\r\n                                    System.err.println(\"constructed MSO request is invalid.\");\r\n                                }\r\n                   }\r\n                   break; \r\n             } \r\nend\r\n           \r\n/*\r\n*\r\n* This rule responds to APPC Response Events\r\n*\r\n*/\r\nrule \"${policyName}.APPC.RESPONSE\"\r\n      when\r\n                $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n              $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\r\n            $request : Request( getCommonHeader().RequestID == $event.requestID )\r\n               $response : Response( getCommonHeader().RequestID == $event.requestID ) \r\n    then\r\n                System.out.println(\"rule APPC.RESPONSE is triggered.\");\r\n           if ($response.Status == null) {\r\n                     $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                        $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n               } \r\n          //\r\n          // Get the Response Code\r\n            //\r\n          ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);\r\n             if (code == null) {\r\n                 $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                        $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n               }\r\n           //\r\n          // Construct notification\r\n           //\r\n          VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n           notification.from = \"policy\";\r\n             notification.policyName = drools.getRule().getName();\r\n               notification.policyScope = \"${policyScope}\";\r\n              notification.policyVersion = \"${policyVersion}\";\r\n          notification.message = $operationWrapper.operation.toMessage();\r\n             $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\r\n              //\r\n          // Ok, let\'s figure out what APP-C\'s response is\r\n          //\r\n          switch (code) {\r\n                     case ACCEPT:\r\n                                $operationWrapper.operation.outcome = \"PROCESSING\";\r\n                               break;\r\n                      case ERROR:\r\n                 case REJECT:\r\n                                $operationWrapper.operation.outcome = \"FAILURE_EXCEPTION\";\r\n                                $manager.setControlLoopResult(\"FAILURE_EXCEPTION\");\r\n                               break;\r\n                      case SUCCESS:\r\n                               $operationWrapper.operation.outcome = \"SUCCESS\";\r\n                          $manager.setControlLoopResult(\"SUCCESS\");\r\n                         break;\r\n                      case FAILURE:\r\n                               $operationWrapper.operation.outcome = \"FAILURE\";\r\n                          $manager.setControlLoopResult(\"FAILURE\");\r\n                         break;\r\n              }\r\n           if ($operationWrapper.operation.outcome.equals(\"SUCCESS\")) {\r\n                      notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n            notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\r\n            try {\r\n                System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n\r\n                   //\r\n                  // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          } else if ($operationWrapper.operation.outcome.equals(\"PROCESSING\")) {\r\n                    retract($response);\r\n         } else {\r\n                    notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n            notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n              System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n                       //\r\n                  // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          }\r\n           \r\nend         \r\n\r\n/*\r\n*\r\n* This rule is used to clean up APPC response\r\n*\r\n*/             \r\nrule \"${policyName}.APPC.RESPONSE.CLEANUP\"\r\n    when\r\n                $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n        $response : Response($id : getCommonHeader().RequestID )\r\n          not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) \r\n    then\r\n                System.out.println(\"rule APPC.RESPONSE.CLEANUP is triggered.\");\r\n           retract($response);\r\nend\r\n\r\n/*\r\n*\r\n* This rule responds to MSO Response Events\r\n*\r\n*/\r\nrule \"${policyName}.MSO.RESPONSE\"\r\n  when\r\n                $params : Params( getClosedLoopControlName() == \"${closedLoopControlName}\" )\r\n              $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )\r\n              $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )\r\n            $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )\r\n            $request : MSORequest( requestId == $event.requestID.toString() )\r\n           $response : MSOResponse( request.requestId == $event.requestID.toString() )     \r\n    then\r\n                System.out.println(\"rule MSO.RESPONSE is triggered.\");\r\n            //\r\n          // Construct notification\r\n           //\r\n          VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);\r\n           notification.from = \"policy\";\r\n             notification.policyName = drools.getRule().getName();\r\n               notification.policyScope = \"${policyScope}\";\r\n              notification.policyVersion = \"${policyVersion}\";\r\n          notification.message = $operationWrapper.operation.toMessage();\r\n             $operationWrapper.operation.message = $operationWrapper.operation.toMessage();\r\n              //\r\n          // The operation can either be succeeded or failed\r\n          // \r\n         if($response.request.requestStatus.requestState.equals(\"Completed\")) {\r\n                    $operationWrapper.operation.outcome = \"SUCCESS\";\r\n                  $manager.setControlLoopResult(\"SUCCESS\");\r\n                 notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                   notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n            //\r\n                     // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          } else {\r\n                    $operationWrapper.operation.outcome = \"FAILURE\";\r\n                  $manager.setControlLoopResult(\"FAILURE\");\r\n                 notification.history.add($operationWrapper.operation);\r\n                      notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;\r\n                  //\r\n                  // Let interested parties know\r\n                      //\r\n                  try {\r\n                               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                          PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n                 } catch (Exception e) {\r\n                             System.out.println(\"Can\'t deliver notification: \" + notification);\r\n                               e.printStackTrace();\r\n                        }\r\n                   notification.notification = ControlLoopNotificationType.FINAL_FAILURE;\r\n            //\r\n            // Let interested parties know\r\n            //\r\n            try {\r\n               System.out.println(Serialization.gsonPretty.toJson(notification));\r\n                  PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);\r\n            } catch (Exception e) {\r\n                  System.out.println(\"Can\'t deliver notification: \" + notification);\r\n               e.printStackTrace();\r\n            }\r\n            //\r\n                     // We are going to retract these objects from memory\r\n                        //\r\n                  System.out.println(\"Retracting everything\");\r\n                      retract($operationWrapper);\r\n                 retract($request);\r\n                  retract($response);\r\n                 retract($event);\r\n                    retract($manager);\r\n          }\r\n           \r\nend ','2017-02-09 17:11:42','demo');
-
 insert into sequence (seq_name, seq_count) values ('SEQ_GEN', 3050); 
 
 set foreign_key_checks=1;