aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/templates
diff options
context:
space:
mode:
authorPeyton Puckett <peyton.puckett@att.com>2020-03-11 11:09:56 -0500
committerPeyton Puckett <peyton.puckett@att.com>2020-03-12 13:31:21 -0500
commit268ef0de1095a30c74a0ff8144cb49b157253658 (patch)
tree2aea2e288ebcf63ffcb21e4a65f79b52b1292af8 /controlloop/templates
parent0e658768fc0573bf6acf7f849a49c9da98c8e47f (diff)
Delete template.demo submodule, amsterdam controller
Issue-ID: POLICY-2421 Change-Id: I0e61e7b3272f5c7babceb41e4e249716af4529cf Signed-off-by: Peyton Puckett <peyton.puckett@att.com>
Diffstat (limited to 'controlloop/templates')
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/pom.xml55
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/META-INF/maven/archetype-metadata.xml79
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml154
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPN.yaml36
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPNBW.yaml36
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml37
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties92
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json52
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json22
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json18
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.bw.onset.json25
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.onset.json21
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json17
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json16
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json16
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json16
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json19
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/so.success.json15
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vCPE.yaml36
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml39
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vFW.yaml39
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.pcims.onset.json18
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.sdnr.success.json23
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.yaml38
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.onset18
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.sdnr.success23
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.yml38
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml29
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl1833
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/test/resources/projects/basic/archetype.properties43
-rw-r--r--controlloop/templates/pom.xml39
-rw-r--r--controlloop/templates/template.demo/README.md6
-rw-r--r--controlloop/templates/template.demo/pom.xml239
-rw-r--r--controlloop/templates/template.demo/src/main/resources/blacklist_template.xml117
-rw-r--r--controlloop/templates/template.demo/src/main/resources/frequency_limiter_template.xml127
-rw-r--r--controlloop/templates/template.demo/src/main/resources/frequency_limiter_template_old.xml101
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnBwControlLoopTest.java234
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnControlLoopTest.java231
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopBase.java236
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopEventCleanupTest.java377
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopFailureTest.java279
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopParamsCleanupTest.java257
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/SupportUtil.java460
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VcpeControlLoopTest.java287
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopCqTest.java258
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopTest.java290
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfcControlLoopTest.java247
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopCdsTest.java273
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopTest.java317
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VpciControlLoopTest.java284
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VsonhControlLoopTest.java291
-rw-r--r--controlloop/templates/template.demo/src/test/resources/META-INF/persistence.xml43
-rw-r--r--controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard.properties72
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN.yaml37
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN_BW.yaml37
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test-B.yaml41
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test.yaml41
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test2.yaml45
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test-B.yaml35
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test.yaml35
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test2.yaml39
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO-test.yaml47
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO_Cq-test.yaml47
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_Service123.yaml75
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_VFC.yaml37
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vCPE.yaml36
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW.yaml41
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW_CDS.yaml46
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vPCI.yaml38
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vSONH.yaml38
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_migrate.yaml39
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_modifyconfig.yaml39
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild.yaml39
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild_1.yaml39
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart.yaml40
-rw-r--r--controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart_blacklist.yaml40
76 files changed, 0 insertions, 8919 deletions
diff --git a/controlloop/templates/archetype-cl-amsterdam/pom.xml b/controlloop/templates/archetype-cl-amsterdam/pom.xml
deleted file mode 100644
index 2539ef1c0..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/pom.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- ONAP
- ================================================================================
- 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=========================================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <packaging>maven-archetype</packaging>
-
- <parent>
- <groupId>org.onap.policy.drools-applications.controlloop.templates</groupId>
- <artifactId>templates</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>archetype-cl-amsterdam</artifactId>
-
- <name>${project.artifactId}</name>
- <description>Archetype to generate a yaml based control loop for ONAP Amsterdam release</description>
-
- <build>
- <extensions>
- <extension>
- <groupId>org.apache.maven.archetype</groupId>
- <artifactId>archetype-packaging</artifactId>
- <version>3.0.1</version>
- </extension>
- </extensions>
-
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-archetype-plugin</artifactId>
- <version>3.0.1</version>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-</project>
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/META-INF/maven/archetype-metadata.xml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/META-INF/maven/archetype-metadata.xml
deleted file mode 100644
index 2c4b2cee2..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- ONAP
- ================================================================================
- Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
- Modifications Copyright (C) 2019 Nordix Foundation.
- ================================================================================
- 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=========================================================
- -->
-
-<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
- name="closed-loop-rules"
- xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
- <requiredProperties>
- <requiredProperty key="closedLoopControlName">
- <defaultValue>ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e</defaultValue>
- </requiredProperty>
- <requiredProperty key="controlLoopYaml">
- <defaultValue>controlLoop%3A%0A++version%3A+2.0.0%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0A++trigger_policy%3A+unique-policy-id-1-restart%0A++timeout%3A+3600%0A+%0Apolicies%3A%0A+%0A++-+id%3A+unique-policy-id-1-restart%0A++++name%3A+Restart+the+VM%0A++++description%3A%0A++++actor%3A+APPC%0A++++recipe%3A+Restart%0A++++target%3A%0A++++++type%3A+VM%0A++++retry%3A+3%0A++++timeout%3A+1200%0A++++success%3A+final_success%0A++++failure%3A+final_failure%0A++++failure_timeout%3A+final_failure_timeout%0A++++failure_retries%3A+final_failure_retries%0A++++failure_exception%3A+final_failure_exception%0A++++failure_guard%3A</defaultValue>
- </requiredProperty>
- <requiredProperty key="policyName">
- <defaultValue>DCAE.Config_tca-hi-lo</defaultValue>
- </requiredProperty>
- <requiredProperty key="policyScope">
- <defaultValue>DCAE</defaultValue>
- </requiredProperty>
- <requiredProperty key="policyVersion">
- <defaultValue>1.1.1</defaultValue>
- </requiredProperty>
- <requiredProperty key="dmaapServers">
- <defaultValue>vm1.mr.simpledemo.onap.org</defaultValue>
- </requiredProperty>
- <requiredProperty key="dcaeTopic">
- <defaultValue>unauthenticated.DCAE_CL_OUTPUT</defaultValue>
- </requiredProperty>
- <requiredProperty key="dcaeServers">
- <defaultValue>vm1.mr.simpledemo.onap.org</defaultValue>
- </requiredProperty>
- <requiredProperty key="dependenciesVersion">
- <defaultValue>2.0.0-SNAPSHOT</defaultValue>
- </requiredProperty>
- </requiredProperties>
-
- <fileSets>
- <fileSet filtered="true" encoding="UTF-8">
- <directory>src/main/resources</directory>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </fileSet>
- <fileSet filtered="true" encoding="UTF-8">
- <directory>src/main/resources</directory>
- <includes>
- <include>**/*.drl</include>
- </includes>
- </fileSet>
- <fileSet filtered="true" encoding="UTF-8">
- <directory>src/main/config</directory>
- <includes>
- <include>**/*.properties</include>
- <include>**/*.json</include>
- </includes>
- </fileSet>
- </fileSets>
-</archetype-descriptor>
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml
deleted file mode 100644
index eb648348c..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- ONAP
- ================================================================================
- Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved.
- Modifications Copyright (C) 2019 Nordix Foundation.
- ================================================================================
- 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=========================================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>${groupId}</groupId>
- <artifactId>${artifactId}</artifactId>
- <version>${version}</version>
- <packaging>kjar</packaging>
-
- <name>${artifactId}</name>
- <description>Control Loop Amsterdam Release Rules</description>
-
- <properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.kie</groupId>
- <artifactId>kie-maven-plugin</artifactId>
- <extensions>true</extensions>
- </plugin>
- </plugins>
- </build>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>events</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>appc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>appclcm</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>vfc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>so</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>sdnc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>aai</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>sdc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>sdnr</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
- <artifactId>eventmanager</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
- <artifactId>guard</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actorServiceProvider</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.appc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.appclcm</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.so</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.sdnr</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.vfc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.sdnc</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions</groupId>
- <artifactId>policy-yaml</artifactId>
- <version>${dependenciesVersion}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-pdp</groupId>
- <artifactId>policy-management</artifactId>
- <version>${dependenciesVersion}</version>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- </dependencies>
-</project>
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPN.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPN.yaml
deleted file mode 100644
index b5b37b0eb..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPN.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2018 Huawei. 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ${ccvpnClosedLoopControlName}
- trigger_policy: unique-policy-id-16-Reroute
- timeout: 3600
- abatement: false
-
-policies:
- - id: unique-policy-id-16-Reroute
- name: Connectivity Reroute
- description:
- actor: SDNC
- recipe: Reroute
- target:
- type: VM
- retry: 3
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPNBW.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPNBW.yaml
deleted file mode 100644
index 7b296ce26..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/CCVPNBW.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2019 Huawei Technologies Co., Ltd. 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ${ccvpnBwClosedLoopControlName}
- trigger_policy: unique-policy-id-16-Reroute
- timeout: 3600
- abatement: false
-
-policies:
- - id: unique-policy-id-16-BandwidthOnDemand
- name: CCVPNBandwidthOnDemand
- description:
- actor: SDNC
- recipe: BandwidthOnDemand
- target:
- type: VM
- retry: 3
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml
deleted file mode 100644
index e2cd61795..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ${closedLoopControlName}
- trigger_policy: unique-policy-id-1-restart
- timeout: 3600
- abatement: false
-
-policies:
- - id: unique-policy-id-1-restart
- name: Restart the VM
- description:
- actor: VFC
- recipe: Restart
- target:
- type: VM
- retry: 3
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
-
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties
deleted file mode 100644
index b43c3b244..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties
+++ /dev/null
@@ -1,92 +0,0 @@
-###
-# ============LICENSE_START=======================================================
-# archetype-closed-loop-demo-rules
-# ================================================================================
-# Copyright (C) 2017-2019 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=========================================================
-###
-
-controller.name=${artifactId}
-
-dmaap.source.topics=${dcaeTopic},APPC-CL,APPC-LCM-WRITE,SDNR-CL-RSP
-
-dmaap.source.topics.${dcaeTopic}.servers=${dcaeServers}
-dmaap.source.topics.${dcaeTopic}.apiKey=
-dmaap.source.topics.${dcaeTopic}.apiSecret=
-dmaap.source.topics.${dcaeTopic}.events=org.onap.policy.controlloop.VirtualControlLoopEvent
-dmaap.source.topics.${dcaeTopic}.events.org.onap.policy.controlloop.VirtualControlLoopEvent.filter=[?($.closedLoopEventStatus)]
-dmaap.source.topics.${dcaeTopic}.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gson
-dmaap.source.topics.${dcaeTopic}.https=true
-
-dmaap.source.topics.APPC-CL.servers=${dmaapServers}
-dmaap.source.topics.APPC-CL.apiKey=
-dmaap.source.topics.APPC-CL.apiSecret=
-dmaap.source.topics.APPC-CL.events=org.onap.policy.appc.Response
-dmaap.source.topics.APPC-CL.events.org.onap.policy.appc.Response.filter=[?($.CommonHeader && $.Status)]
-dmaap.source.topics.APPC-CL.events.custom.gson=org.onap.policy.appc.util.Serialization,gsonPretty
-dmaap.source.topics.APPC-CL.https=true
-
-dmaap.source.topics.APPC-LCM-WRITE.servers=${dmaapServers}
-dmaap.source.topics.APPC-LCM-WRITE.apiKey=
-dmaap.source.topics.APPC-LCM-WRITE.apiSecret=
-dmaap.source.topics.APPC-LCM-WRITE.events=org.onap.policy.appclcm.AppcLcmDmaapWrapper
-dmaap.source.topics.APPC-LCM-WRITE.events.org.onap.policy.appclcm.AppcLcmDmaapWrapper.filter=[?($.type == 'response')]
-dmaap.source.topics.APPC-LCM-WRITE.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson
-dmaap.source.topics.APPC-LCM-WRITE.https=true
-
-dmaap.source.topics.SDNR-CL-RSP.servers=${dmaapServers}
-dmaap.source.topics.SDNR-CL-RSP.apiKey=
-dmaap.source.topics.SDNR-CL-RSP.apiSecret=
-dmaap.source.topics.SDNR-CL-RSP.events=org.onap.policy.sdnr.PciResponseWrapper
-dmaap.source.topics.SDNR-CL-RSP.events.org.onap.policy.sdnr.PciResponseWrapper.filter=[?($.type == 'response')]
-dmaap.source.topics.SDNR-CL-RSP.events.custom.gson=org.onap.policy.sdnr.util.Serialization,gson
-dmaap.source.topics.SDNR-CL-RSP.https=true
-
-noop.sink.topics=APPC-CL,APPC-LCM-READ,POLICY-CL-MGT,SDNR-CL,DCAE_CL_RSP
-
-noop.sink.topics.APPC-CL.servers=${dmaapServers}
-noop.sink.topics.APPC-CL.apiKey=
-noop.sink.topics.APPC-CL.apiSecret=
-noop.sink.topics.APPC-CL.events=org.onap.policy.appc.Request
-noop.sink.topics.APPC-CL.events.custom.gson=org.onap.policy.appc.util.Serialization,gsonPretty
-
-noop.sink.topics.APPC-LCM-READ.servers=${dmaapServers}
-noop.sink.topics.APPC-LCM-READ.apiKey=
-noop.sink.topics.APPC-LCM-READ.apiSecret=
-noop.sink.topics.APPC-LCM-READ.events=org.onap.policy.appclcm.AppcLcmDmaapWrapper
-noop.sink.topics.APPC-LCM-READ.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson
-
-noop.sink.topics.POLICY-CL-MGT.servers=${dmaapServers}
-noop.sink.topics.POLICY-CL-MGT.apiKey=
-noop.sink.topics.POLICY-CL-MGT.apiSecret=
-noop.sink.topics.POLICY-CL-MGT.events=org.onap.policy.controlloop.VirtualControlLoopNotification
-noop.sink.topics.POLICY-CL-MGT.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty
-
-noop.sink.topics.SDNR-CL.servers=${dmaapServers}
-noop.sink.topics.SDNR-CL.apiKey=
-noop.sink.topics.SDNR-CL.apiSecret=
-noop.sink.topics.SDNR-CL.events=org.onap.policy.sdnr.PciRequestWrapper
-noop.sink.topics.SDNR-CL.events.custom.gson=org.onap.policy.sdnr.util.Serialization,gson
-
-noop.sink.topics.DCAE_CL_RSP.servers=${dmaapServers}
-noop.sink.topics.DCAE_CL_RSP.apiKey=
-noop.sink.topics.DCAE_CL_RSP.apiSecret=
-noop.sink.topics.DCAE_CL_RSP.events=org.onap.policy.controlloop.ControlLoopResponse
-noop.sink.topics.DCAE_CL_RSP.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty
-
-rules.groupId=${groupId}
-rules.artifactId=${artifactId}
-rules.version=${version}
-
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json
deleted file mode 100644
index 53843b1db..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "controller.name": "${artifactId}",
-
- "ueb.source.topics": "${dcaeTopic},APPC-CL,APPC-LCM-WRITE,SDNR-CL-RSP",
-
- "ueb.source.topics.${dcaeTopic}.servers": "${dcaeServers}",
- "ueb.source.topics.${dcaeTopic}.events": "org.onap.policy.controlloop.VirtualControlLoopEvent",
- "ueb.source.topics.${dcaeTopic}.events.org.onap.policy.controlloop.VirtualControlLoopEvent.filter": "[?($.closedLoopEventStatus =~ /.*/)]",
- "ueb.source.topics.${dcaeTopic}.events.custom.gson": "org.onap.policy.controlloop.util.Serialization,gson",
-
- "ueb.source.topics.APPC-CL.servers": "${dmaapServers}",
- "ueb.source.topics.APPC-CL.events": "org.onap.policy.appc.Response",
- "ueb.source.topics.APPC-CL.events.org.onap.policy.appc.Response.filter": "[?($.CommonHeader =~ /.*/ && $.Status =~ /.*/)]",
- "ueb.source.topics.APPC-CL.events.custom.gson": "org.onap.policy.appc.util.Serialization,gsonPretty",
-
- "ueb.source.topics.APPC-LCM-WRITE.servers": "${dmaapServers}",
- "ueb.source.topics.APPC-LCM-WRITE.events": "org.onap.policy.appclcm.AppcLcmDmaapWrapper",
- "ueb.source.topics.APPC-LCM-WRITE.events.org.onap.policy.appclcm.AppcLcmDmaapWrapper.filter": "[?($.type == 'response')]",
- "ueb.source.topics.APPC-LCM-WRITE.events.custom.gson": "org.onap.policy.appclcm.util.Serialization,gson",
-
- "ueb.source.topics.SDNR-CL-RSP.servers": "${dmaapServers}",
- "ueb.source.topics.SDNR-CL-RSP.events": "org.onap.policy.sdnr.PciResponseWrapper",
- "ueb.source.topics.SDNR-CL-RSP.events.org.onap.policy.sdnr.PciResponseWrapper.filter": "[?($.type == 'response')]",
- "ueb.source.topics.SDNR-CL-RSP.events.custom.gson": "org.onap.policy.sdnr.util.Serialization,gson",
-
- "noop.sink.topics": "APPC-CL,APPC-LCM-READ,POLICY-CL-MGT,SDNR-CL,DCAE_CL_RSP",
-
- "noop.sink.topics.APPC-CL.servers": "${dmaapServers}",
- "noop.sink.topics.APPC-CL.events": "org.onap.policy.appc.Request",
- "noop.sink.topics.APPC-CL.events.custom.gson": "org.onap.policy.appc.util.Serialization,gsonPretty",
-
- "noop.sink.topics.APPC-LCM-READ.servers": "${dmaapServers}",
- "noop.sink.topics.APPC-LCM-READ.events": "org.onap.policy.appclcm.AppcLcmDmaapWrapper",
- "noop.sink.topics.APPC-LCM-READ.events.custom.gson": "org.onap.policy.appclcm.util.Serialization,gson",
-
- "noop.sink.topics.POLICY-CL-MGT.servers": "${dmaapServers}",
- "noop.sink.topics.POLICY-CL-MGT.events": "org.onap.policy.controlloop.VirtualControlLoopNotification",
- "noop.sink.topics.POLICY-CL-MGT.events.custom.gson": "org.onap.policy.controlloop.util.Serialization,gson",
-
- "noop.sink.topics.SDNR-CL.servers": "${dmaapServers}",
- "noop.sink.topics.SDNR-CL.events": "org.onap.policy.sdnr.PciRequestWrapper",
- "noop.sink.topics.SDNR-CL.events.custom.gson": "org.onap.policy.sdnr.util.Serialization,gson",
-
- "noop.sink.topics.DCAE_CL_RSP.servers": "${dmaapServers}",
- "noop.sink.topics.DCAE_CL_RSP.events": "org.onap.policy.controlloop.ControlLoopResponse",
- "noop.sink.topics.DCAE_CL_RSP.events.custom.gson": "org.onap.policy.controlloop.util.Serialization,gson",
-
- "rules.groupId": "${groupId}",
- "rules.artifactId": "${artifactId}",
- "rules.version": "${version}"
-
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json
deleted file mode 100644
index 985685000..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "body": {
- "output": {
- "common-header": {
- "timestamp": "2017-08-25T21:06:23.037Z",
- "api-ver": "5.00",
- "originator-id": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "request-id": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "sub-request-id": "1",
- "flags": {}
- },
- "status": {
- "code": 400,
- "message": "Restart Successful"
- }
- }
- },
- "version": "2.0",
- "rpc-name": "restart",
- "correlation-id": "664be3d2-6c12-4f4b-a3e7-c349acced200-1",
- "type": "response"
-} \ No newline at end of file
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json
deleted file mode 100644
index 4f956885e..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "CommonHeader": {
- "TimeStamp": 1506051879001,
- "APIver": "1.01",
- "RequestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65",
- "SubRequestID": "1",
- "RequestTrack": [],
- "Flags": []
- },
- "Status": {
- "Code": 400,
- "Value": "SUCCESS"
- },
- "Payload": {
- "generic-vnf.vnf-id": "jimmy-test-vnf2"
- }
- }
-} \ No newline at end of file
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.bw.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.bw.onset.json
deleted file mode 100644
index b2dbb7ba3..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.bw.onset.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "closedLoopEventClient": "DCAE.HolmesInstance",
- "policyVersion": "2.0.0",
- "policyName": "CCVPNBandwidthOnDemand",
- "policyScope": "service=SITEService,type=SampleType,closedLoopControlName=CL-CCVPN-d925ed73-8231-4d02-9545-db4e101f88f8",
- "target_type": "VM",
- "AAI": {
- "vserver.vserver-name" : "TBD",
- "globalSubscriberId" : "e151059a-d924-4629-845f-264db19e50b4",
- "serviceType" : "service-ccvpn",
- "service-instance.service-instance-id" : "298dad9933BBBasa",
- "vserver.is-closed-loop-disabled" : "false",
- "vserver.prov-status":"ACTIVE",
- "bandwidth" : "500",
- "bandwidth-change-time":"20190321-10:59:32:321",
- "vnfId": "2fbf0f93-c46e-42ed-9a9b-68aaa09ea11d"
- },
- "closedLoopAlarmStart": "1484677482204798",
- "closedLoopEventStatus": "ONSET",
- "closedLoopControlName": "${ccvpnBwClosedLoopControlName}",
- "version": "1.0.2",
- "target": "vserver.vserver-name",
- "requestID": "97964e10-686e-4790-8c45-bdfa61df880f",
- "from": "DCAE"
-} \ No newline at end of file
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.onset.json
deleted file mode 100644
index 474911e74..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.ccvpn.onset.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "closedLoopEventClient": "DCAE.HolmesInstance",
- "policyVersion": "1.0.0.5",
- "policyName": "CCVPN",
- "policyScope": "service=SOTNService,type=SampleType,closedLoopControlName=CL-CCVPN-d925ed73-8231-4d02-9545-db4e101f88f8",
- "target_type": "VM",
- "AAI": {
- "vserver.vserver-name" : "TBD",
- "globalSubscriberId" : "e151059a-d924-4629-845f-264db19e50b4",
- "serviceType" : "SOTN",
- "service-information.service-instance-id" : "service-instance-id-example-1",
- "network-information. network-id " : "id"
- },
- "closedLoopAlarmStart": 1484677482204798,
- "closedLoopEventStatus": "ONSET",
- "closedLoopControlName": "${ccvpnClosedLoopControlName}",
- "version": "1.0.2",
- "target": "vserver.vserver-name",
- "requestID": "97964e10-686e-4790-8c45-bdfa61df770f",
- "from": "DCAE"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json
deleted file mode 100644
index 006e1a52c..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "closedLoopControlName": "${closedLoopControlName}",
- "closedLoopAlarmStart": 1463679805324,
- "closedLoopAlarmEnd": 1463699805324,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ABATED",
- "requestID": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app"
- },
- "from": "DCAE",
- "version": "1.0.2"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json
deleted file mode 100644
index d1d7c05bc..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "closedLoopControlName": "${closedLoopControlName}",
- "closedLoopAlarmStart": 1463679805324,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ONSET",
- "requestID": "664be3d2-6c12-4f4b-a3e7-c349acced200",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app"
- },
- "from": "DCAE",
- "version": "1.0.2"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json
deleted file mode 100644
index 4c4b53c8c..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "closedLoopControlName": "${closedLoopControlName}",
- "closedLoopAlarmStart": 1484677482204798,
- "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca",
- "closedLoopEventStatus": "ONSET",
- "requestID": "e4f95e0c-a013-4530-8e59-c5c5f9e539b6",
- "target_type": "VNF",
- "target": "vserver.vserver-name",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "vserver.vserver-name": "dfw1lb01lb01"
- },
- "from": "DCAE",
- "version": "1.0.2"
-} \ No newline at end of file
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json
deleted file mode 100644
index cd3c243a8..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "closedLoopControlName": "${closedLoopControlName}",
- "closedLoopAlarmStart": 1463679805324,
- "closedLoopEventClient": "microservice.stringmatcher",
- "closedLoopEventStatus": "ONSET",
- "requestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "fw0002vm002fw002"
- },
- "from": "DCAE",
- "version": "1.0.2"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json
deleted file mode 100644
index b5bb6e792..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "closedLoopControlName": "${closedLoopControlName}",
- "closedLoopAlarmStart": 1484677482204798,
- "closedLoopEventClient": "DCAE.HolmesInstance",
- "closedLoopEventStatus": "ONSET",
- "requestID": "97964e10-686e-4790-8c45-bdfa61df770f",
- "target_type": "VM",
- "target": "vserver.vserver-name",
- "AAI": {
- "vserver.is-closed-loop-disabled": "false",
- "vserver.prov-status": "ACTIVE",
- "vserver.vserver-name": "dfw1lb01lb01",
- "service-instance.service-instance-id" : "vserver-name-16102016-aai3255-data-11-1",
- "generic-vnf.vnf-id" : "vnf-id-16102016-aai3255-data-11-1",
- "generic-vnf.vnf-name" : "vnf-name-16102016-aai3255-data-11-1"
- },
- "from": "DCAE",
- "version": "1.0.2"
-} \ No newline at end of file
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/so.success.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/so.success.json
deleted file mode 100644
index 6d617b4bf..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/so.success.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "requestReferences": {
- "instanceId": "ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff",
- "requestId": "e4f95e0c-a013-4530-8e59-c5c5f9e539b6"
- },
- "request": {
- "requestId": "e4f95e0c-a013-4530-8e59-c5c5f9e539b6",
- "requestStatus": {
- "percentProgress": 100,
- "requestState": "COMPLETE",
- "wasRolledBack": false
- }
- },
- "httpResponseCode": 200
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vCPE.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vCPE.yaml
deleted file mode 100644
index 19b755c96..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vCPE.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ${closedLoopControlName}
- trigger_policy: unique-policy-id-1-restart
- timeout: 3600
- abatement: true
-
-policies:
- - id: unique-policy-id-1-restart
- name: Restart the VM
- description:
- actor: APPC
- recipe: Restart
- target:
- type: VM
- retry: 3
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard \ No newline at end of file
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
deleted file mode 100644
index 71ee386ef..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ${closedLoopControlName}
- trigger_policy: unique-policy-id-1-scale-up
- timeout: 1200
- abatement: false
-
-policies:
- - id: unique-policy-id-1-scale-up
- name: Create a new VF Module
- description:
- actor: SO
- recipe: VF Module Create
- target:
- type: VNF
- payload:
- requestParameters: '{"usePreload":true,"userParams":[{"name":"gtp_bind_addr","value":"vmme_private_ip_0"},{"name":"mmc","value":"001"},{"name":"mme_addr","value":"vmme_private_ip_0"},{"name":"mnc","value":"01"},{"name":"n_prob","value":"50"},{"name":"vnfHostIpAddress","value":"veb_private_ip_0"}]}'
- configurationParameters: '[{"availability-zone":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]","xtz-123":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]"}]'
- retry: 0
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vFW.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vFW.yaml
deleted file mode 100644
index b517e76b3..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vFW.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018-2019 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ${closedLoopControlName}
- trigger_policy: unique-policy-id-1-modifyConfig
- timeout: 3600
- abatement: false
-
-policies:
- - id: unique-policy-id-1-modifyConfig
- name: modify packet gen config
- description:
- actor: APPC
- recipe: ModifyConfig
- target:
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- payload:
- streams: '{"active-streams":5}'
- retry: 2
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.pcims.onset.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.pcims.onset.json
deleted file mode 100644
index 0e67d3251..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.pcims.onset.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459",
- "closedLoopAlarmStart": 1510187409180,
- "closedLoopEventClient": "microservice.PCI",
- "closedLoopEventStatus": "ONSET",
- "requestID": "9d2d790e-a5f0-11e8-98d0-529269fb1459",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "generic-vnf.is-closed-loop-disabled": "false",
- "generic-vnf.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "notused"
- },
- "from": "PCIMS",
- "version": "1.0.2",
- "Action": "ModifyConfig",
- "payload": "{ \"Configurations\":[ { \"data\":{ \"FAPService\":{ \"alias\":\"Cell1\", \"X0005b9Lte\" : { \"PhyCellIdInUse\" : \"35\", \"PnfName\" : \"cu1\" }, \"CellConfig\":{ \"LTE\":{ \"RAN\":{ \"Common\":{ \"CellIdentity\":\"1\" } } } } } } } ] }"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.sdnr.success.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.sdnr.success.json
deleted file mode 100644
index 74d7f60bb..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.sdnr.success.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "body": {
- "output": {
- "CommonHeader": {
- "TimeStamp": "2018-09-10T07:10:05.614Z",
- "APIver": "1.0",
- "RequestID": "9d2d790e-a5f0-11e8-98d0-529269fb1459",
- "SubRequestID": "1",
- "RequestTrack": [],
- "Flags": []
- },
- "Status": {
- "Code": 200,
- "Value": "SUCCESS"
- },
- "Payload": "{ \"Configurations\":[ { \"Status\": { \"Code\": 200, \"Value\": \"SUCCESS\" }, \"data\":{ \"FAPService\":{ \"alias\":\"Network1\", \"X0005b9Lte\" : { \"PnfName\" : \"cu1\" }, \"CellConfig\":{ \"LTE\":{ \"RAN\":{ \"Common\":{ \"CellIdentity\":\"1\" } } } } } } } ] }"
- }
- },
- "version": "1.0",
- "rpc-name": "ModifyConfig",
- "correlation-id": "9d2d790e-a5f0-11e8-98d0-529269fb1459-1",
- "type": "response"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.yaml
deleted file mode 100644
index 0fe44e3d0..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vPCI.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2018 Wipro Limited 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.
-controlLoop:
- version: 3.0.0
- controlLoopName: ${closedLoopControlName}
- trigger_policy: unique-policy-id-123-modifyconfig
- timeout: 1200
- abatement: false
-
-policies:
- - id: unique-policy-id-123-modifyconfig
- name: modify PCI config
- description:
- actor: SDNR
- recipe: ModifyConfig
- target:
- # These fields are not used
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- retry: 0
- timeout: 300
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.onset b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.onset
deleted file mode 100644
index 7636c2ade..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.onset
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "closedLoopControlName": "ControlLoop-vSONH-7d4baf04-8875-4d1f-946d-06b874048b61",
- "closedLoopAlarmStart": 1510187409180,
- "closedLoopEventClient": "microservice.SONH",
- "closedLoopEventStatus": "ONSET",
- "requestID": "722ee65a-8afd-48df-bf57-c152ae45bacc",
- "target_type": "VNF",
- "target": "generic-vnf.vnf-id",
- "AAI": {
- "generic-vnf.is-closed-loop-disabled": "false",
- "generic-vnf.prov-status": "ACTIVE",
- "generic-vnf.vnf-id": "notused"
- },
- "from": "SONHMS",
- "version": "1.0.2",
- "Action": "ModifyConfigANR",
- "payload": "{ \"Configurations\":[ { \"data\":{ \"FAPService\":{ \"alias\":\"Cell1\", \"CellConfig\":{ \"LTE\":{ \"RAN\":{ \"Common\":{ \"CellIdentity\":\"1\" }, \"NeighborListInUse\" : { \"LTECellNumberOfEntries\" : \"1\" , \"LTECell\" : [{ \"PLMNID\" :\"plmnid1\", \"CID\":\"Chn0001\", \"PhyCellID\":\"3\", \"PNFName\":\"ncserver01\", \"Blacklisted\":\"false\"}] } } } } } } } ] }"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.sdnr.success b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.sdnr.success
deleted file mode 100644
index c814a7459..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.anr.sdnr.success
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "body": {
- "output": {
- "CommonHeader": {
- "TimeStamp": "2018-09-10T07:10:05.614Z",
- "APIver": "1.0",
- "RequestID": "722ee65a-8afd-48df-bf57-c152ae45bacc",
- "SubRequestID": "1",
- "RequestTrack": [],
- "Flags": []
- },
- "Status": {
- "Code": 200,
- "Value": "SUCCESS"
- },
- "Payload": "{ \"Configurations\":[ { \"Status\": { \"Code\": 200, \"Value\": \"SUCCESS\" }, \"data\":{ \"FAPService\":{ \"alias\":\"Cell1\", \"CellConfig\":{ \"LTE\":{ \"RAN\":{ \"Common\":{ \"CellIdentity\":\"1\" }, \"NeighborListInUse\" : { \"LTECellNumberOfEntries\" : \"1\" , \"LTECell\" : [{ \"PLMNID\" :\"plmnid1\", \"CID\":\"Chn0001\", \"PhyCellID\":\"3\", \"PNFName\":\"ncserver01\", \"Blacklisted\":\"false\"}] } } } } } } } ] }"
- }
- },
- "version": "1.0",
- "rpc-name": "ModifyConfigANR",
- "correlation-id": "722ee65a-8afd-48df-bf57-c152ae45bacc-1",
- "type": "response"
-}
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.yml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.yml
deleted file mode 100644
index 07790226a..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vSONH.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2019 Wipro Limited 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.
-controlLoop:
- version: 3.0.0
- controlLoopName: ${closedLoopControlName}
- trigger_policy: unique-policy-id-123-modifyconfig
- timeout: 1200
- abatement: false
-
-policies:
- - id: unique-policy-id-456-modifyconfig
- name: modify ANR config
- description:
- actor: SDNR
- recipe: ModifyConfigANR
- target:
- # These fields are not used
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- retry: 0
- timeout: 300
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml
deleted file mode 100644
index 9ec524b0e..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- archetype-closed-loop-demo-rules
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
- <kbase name="rules">
- <ksession name="amsterdam"/>
- </kbase>
-</kmodule>
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl
deleted file mode 100644
index 88bf6141f..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl
+++ /dev/null
@@ -1,1833 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Bell Canada.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.controlloop;
-
-import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
-
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopException;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.policy.PolicyResult;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.controlloop.policy.Policy;
-import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager;
-import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager.NewEventStatus;
-import org.onap.policy.controlloop.eventmanager.ControlLoopOperationManager;
-import org.onap.policy.controlloop.eventmanager.LockCallbackWorkingMemory;
-import org.onap.policy.controlloop.actor.so.SoActorServiceProvider;
-import org.onap.policy.controlloop.actor.cds.CdsActorServiceProvider;
-import org.onap.policy.controlloop.actor.cds.CdsActorServiceProvider.CdsActorServiceManager;
-import org.onap.policy.controlloop.actor.cds.constants.CdsActorConstants;
-import org.onap.policy.aai.AaiCqResponse;
-import org.onap.policy.appc.Request;
-import org.onap.policy.appc.Response;
-import org.onap.policy.appc.CommonHeader;
-import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
-import org.onap.policy.cds.CdsResponse;
-import org.onap.policy.cds.client.CdsProcessorGrpcClient;
-import org.onap.policy.cds.properties.CdsServerProperties;
-import org.onap.policy.drools.utils.Pair;
-import org.onap.policy.sdnr.PciRequestWrapper;
-import org.onap.policy.sdnr.PciResponseWrapper;
-import org.onap.policy.sdnr.PciRequest;
-import org.onap.policy.sdnr.PciResponse;
-import org.onap.policy.vfc.VfcRequest;
-import org.onap.policy.vfc.VfcResponse;
-import org.onap.policy.vfc.VfcManager;
-import org.onap.policy.so.SoManager;
-import org.onap.policy.so.SoRequest;
-import org.onap.policy.so.SoResponseWrapper;
-import org.onap.policy.sdnc.SdncRequest;
-import org.onap.policy.sdnc.SdncManager;
-import org.onap.policy.sdnc.SdncResponse;
-import org.onap.policy.drools.core.lock.Lock;
-import org.onap.policy.guard.PolicyGuardRequest;
-import org.onap.policy.guard.PolicyGuardResponse;
-import org.onap.policy.guard.PolicyGuardXacmlRequestAttributes;
-import org.onap.policy.guard.PolicyGuardXacmlHelper;
-
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.Constructor;
-
-import org.slf4j.LoggerFactory;
-import org.slf4j.Logger;
-
-import java.time.Instant;
-import java.util.LinkedList;
-import java.util.Iterator;
-
-import org.onap.policy.drools.system.PolicyEngineConstants;
-
-/*
- * This structure mimics the Params structure.
- * Its only purpose is to allow management of
- * rules by the PAP component..
- * It has no use at runtime since the rules go by
- * Params for matching purposes.
- */
-declare PapParams
- closedLoopControlName : String
- controlLoopYaml : String
-end
-
-/*
- * Control Loop Identity
- */
-declare Params
- closedLoopControlName : String
- controlLoopYaml : String
-end
-
-/*
- * Used to trigger clean up Params that no longer have associated rules.
- */
-declare ParamsInitCleaner
- closedLoopControlName : String // only used when logging
-end
-
-/*
- * Used to clean up Params that no longer have associated rules.
- */
-declare ParamsCleaner
- closedLoopControlName : String
- controlLoopYaml : String
-end
-
-/*
- * This object is to provide support for timeouts
- * due to a bug in drools' built-in timers
- */
-declare ControlLoopTimer
- closedLoopControlName : String
- requestId : String
- delay : String
- expired : boolean
- //timerType is the type of timer: either "ClosedLoop" or "Operation"
- timerType : String
-end
-
-/*
-*
-* Called to insert the parameters into working memory for this Closed Loop policy. This is called
-* once each time a closed loop is added or its YAML is updated.
-* This has a higher salience so we can ensure that the Params is created before we have a chance to
-* discard any events.
-*
-*/
-rule "${policyName}.SETUP"
- salience 1
- when
- not( Params( getClosedLoopControlName() == "${closedLoopControlName}",
- getControlLoopYaml() == "${controlLoopYaml}" ) )
- then
-
- Params params = new Params();
- params.setClosedLoopControlName("${closedLoopControlName}");
- params.setControlLoopYaml("${controlLoopYaml}");
- insert(params);
-
- ParamsInitCleaner initCleaner = new ParamsInitCleaner();
- initCleaner.setClosedLoopControlName("${closedLoopControlName}");
- insert(initCleaner);
-
- // Note: globals have bad behavior when persistence is used,
- // hence explicitly getting the logger vs using a global
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {} : YAML=[{}]", params.getClosedLoopControlName(), drools.getRule().getName(),
- params.getControlLoopYaml());
-end
-
-/*
-*
-* This rule responds to DCAE Events where there is no manager yet. Either it is
-* the first ONSET, or a subsequent badly formed Event (i.e. Syntax error, or is-closed-loop-disabled)
-*
-*/
-rule "${policyName}.EVENT"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- not ( ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() ) )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
-
- try {
-
- //
- // Check the event, because we need it to not be null when
- // we create the ControlLoopEventManager. The ControlLoopEventManager
- // will do extra syntax checking as well check if the closed loop is disabled.
- //
- if ($event.getRequestId() == null) {
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.REJECTED);
- notification.setFrom("policy");
- notification.setMessage("Missing requestId");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- //
- // Retract it from memory
- //
- retract($event);
- } else if ($event.getClosedLoopEventStatus() != ControlLoopEventStatus.ONSET) {
- throw new ControlLoopException($event.getClosedLoopEventStatus() + " received with no prior onset");
- } else {
- //
- // Create an EventManager
- //
- ControlLoopEventManager manager = new ControlLoopEventManager($params.getClosedLoopControlName(),
- $event.getRequestId());
- //
- // Determine if EventManager can actively process the event
- // (i.e. syntax, is_closed_loop_disabled checks etc.)
- //
- VirtualControlLoopNotification notification = manager.activate($params.getControlLoopYaml(), $event);
- notification.setFrom("pdp-0001-controller=controlloop"); // Engine.getInstanceName()
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- //
- // Are we actively pursuing this event?
- //
- if (notification.getNotification() == ControlLoopNotificationType.ACTIVE) {
- //
- // Insert Event Manager into memory, this will now kick off processing.
- //
- insert(manager);
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Setup the Overall Control Loop timer
- //
- ControlLoopTimer clTimer = new ControlLoopTimer();
- clTimer.setTimerType("ClosedLoop");
- clTimer.setClosedLoopControlName($event.getClosedLoopControlName());
- clTimer.setRequestId($event.getRequestId().toString());
- clTimer.setDelay(manager.getControlLoopTimeout(1500) + "s");
- //
- // Insert it
- //
- insert(clTimer);
- } else {
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Retract it from memory
- //
- retract($event);
- }
-
- //
- // Now that the manager is inserted into Drools working memory, we'll wait for
- // another rule to fire in order to continue processing. This way we can also
- // then screen for additional ONSET and ABATED events for this RequestId.
- //
- }
- } catch (Exception e) {
- logger.warn("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName(), e);
-
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.REJECTED);
- notification.setMessage("Exception occurred: " + e.getMessage());
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- //
- //
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Retract the event
- //
- retract($event);
- }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager
-* is now created. We can start processing the yaml specification via the Event Manager.
-*
-*/
-rule "${policyName}.EVENT.MANAGER"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $clTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "ClosedLoop", !expired )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}: event={} manager={} clTimer={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $clTimer);
-
- try {
- //
- // Check which event this is.
- //
- ControlLoopEventManager.NewEventStatus eventStatus = $manager.onNewEvent($event);
- //
- // Check what kind of event this is
- //
- if (eventStatus == NewEventStatus.SUBSEQUENT_ONSET) {
- //
- // We don't care about subsequent onsets
- //
- logger.info("{}: {}: subsequent onset",
- $params.getClosedLoopControlName(), drools.getRule().getName());
- retract($event);
- return;
- }
- if (eventStatus == NewEventStatus.SYNTAX_ERROR) {
- //
- // Ignore any bad syntax events
- //
- logger.warn("{}: {}: syntax error",
- $params.getClosedLoopControlName(), drools.getRule().getName());
- retract($event);
- return;
- }
- //
- // We only want the initial ONSET event in memory,
- // all the other events need to be retracted to support
- // cleanup and avoid the other rules being fired for this event.
- //
- if (eventStatus != NewEventStatus.FIRST_ONSET) {
- logger.warn("{}: {}: not first onset",
- $params.getClosedLoopControlName(), drools.getRule().getName());
- retract($event);
- }
-
- logger.debug("{}: {}: target={}", $params.getClosedLoopControlName(),
- drools.getRule().getName(), $event.getTarget());
- //
- // Now start seeing if we need to process this event
- //
-
- //
- // Check if this is a Final Event
- //
- VirtualControlLoopNotification notification = $manager.isControlLoopFinal();
-
-
- if (notification != null) {
- //
- // Its final, but are we waiting for abatement?
- //
- if ($manager.getNumAbatements() > 0) {
- logger.info("{}: {}: abatement received for {}. Closing the control loop",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event.getRequestId());
-
- /// DB Write---end event processing for this RequestId()
- $manager.commitAbatement("Event Abated","Closed");
-
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- //
- // In this case, we are done
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Unlock the target
- //
- Lock lock = $manager.unlockCurrentOperation();
- if(lock != null) {
- logger.debug("{}: {}: retracting lock={}", $params.getClosedLoopControlName(),
- drools.getRule().getName(), lock);
- retract(lock);
- }
- //
- // Retract everything from memory
- //
- logger.info("{}: {}: retracting onset, manager, and timer",
- $params.getClosedLoopControlName(), drools.getRule().getName());
-
- retract($manager.getOnsetEvent());
-
- // don't retract manager, etc. - a clean-up rule will do that
-
- //
- // TODO - what if we get subsequent Events for this RequestId?
- // By default, it will all start over again. May be confusing for Ruby.
- // Or, we could track this and then subsequently ignore the events
- //
- } else {
- //
- // Check whether we need to wait for abatement
- //
- if ($manager.getProcessor().getControlLoop().getAbatement() == true && notification.getNotification() == ControlLoopNotificationType.FINAL_SUCCESS) {
- logger.info("{}: {}: waiting for abatement ..",
- $params.getClosedLoopControlName(), drools.getRule().getName());
- } else {
- logger.info("{}: {}: no abatement expect for {}. Closing the control loop",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event.getRequestId());
-
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- //
- // In this case, we are done
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Unlock the target
- //
- Lock lock = $manager.unlockCurrentOperation();
- if(lock != null) {
- logger.debug("{}: {}: retracting lock={}", $params.getClosedLoopControlName(),
- drools.getRule().getName(), lock);
- retract(lock);
- }
- //
- // Retract everything from memory
- //
- logger.info("{}: {}: retracting onset, manager, and timer",
- $params.getClosedLoopControlName(), drools.getRule().getName());
-
- retract($manager.getOnsetEvent());
-
- // don't retract manager, etc. - a clean-up rule will do that
- }
- }
- } else {
- //
- // NOT final, so let's ask for the next operation
- //
- ControlLoopOperationManager operation = $manager.processControlLoop();
- if (operation != null) {
- //
- // Let's ask for a lock right away
- //
- logger.info("{}: {}: requesting lock for operation={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- operation);
-
- Pair<Lock,Lock> oldNew = $manager.lockCurrentOperation(
- new LockCallbackWorkingMemory($params.getClosedLoopControlName(), drools.getWorkingMemory()));
- if(oldNew.first() != null) {
- logger.debug("{}: {}: retracting lock={}", $params.getClosedLoopControlName(),
- drools.getRule().getName(), oldNew.first());
- retract(oldNew.first());
- }
- if(oldNew.second() != null) {
- logger.debug("{}: {}: inserting lock={}", $params.getClosedLoopControlName(),
- drools.getRule().getName(), oldNew.second());
- insert(oldNew.second());
- }
-
- //
- // insert the operation into memory
- //
- insert(operation);
- //
- // insert operation timeout object
- //
- ControlLoopTimer opTimer = new ControlLoopTimer();
- opTimer.setTimerType("Operation");
- opTimer.setClosedLoopControlName($event.getClosedLoopControlName());
- opTimer.setRequestId($event.getRequestId().toString());
- Integer timeout = operation.getOperationTimeout();
- opTimer.setDelay(timeout > 0 ? timeout.toString() + "s" : $clTimer.getDelay());
- insert(opTimer);
-
- } else {
- //
- // Probably waiting for abatement
- //
- logger.info("{}: {}: no operation, probably waiting for abatement",
- $params.getClosedLoopControlName(), drools.getRule().getName());
- }
- }
- } catch (Exception e) {
- logger.warn("{}: {}: unexpected",
- $params.getClosedLoopControlName(),
- drools.getRule().getName(), e);
-
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.FINAL_FAILURE);
- notification.setMessage(e.getMessage());
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- retract($event);
-
- // don't retract manager, etc. - a clean-up rule will do that
- }
-
-end
-
-/*
-*
-* Lock denied
-*
-*/
-rule "${policyName}.EVENT.MANAGER.OPERATION.LOCK.DENIED"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId(), "None".equalsIgnoreCase(getGuardApprovalStatus()) )
- $lock : Lock (ownerKey == $event.getRequestId().toString(), isUnavailable())
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}: event={} manager={} operation={} lock={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $lock);
-
- logger.debug("The target resource {} is already processing",
- $event.getAai().get($event.getTarget()));
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.REJECTED);
- notification.setMessage("The target " + $event.getAai().get($event.getTarget())
- + " is already locked");
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- retract($event);
-
- // don't retract manager, etc. - a clean-up rule will do that
-end
-
-/*
-*
-* Guard Permitted, let's send request to the actor.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId(), "Permit".equalsIgnoreCase(getGuardApprovalStatus()) )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}: event={} manager={} operation={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation);
-
- Object request = null;
- boolean caughtException = false;
-
- try {
- request = $operation.startOperation($event);
-
- if (request != null) {
- logger.debug("{}: {}: starting operation ..",
- $params.getClosedLoopControlName(), drools.getRule().getName());
- //
- // Tell interested parties we are performing this Operation
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.OPERATION);
- notification.setMessage($operation.getOperationMessage());
- notification.setHistory($operation.getHistory());
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- switch ($operation.policy.getActor()){
-
- case "APPC":
- if (request instanceof Request) {
- PolicyEngineConstants.getManager().deliver("APPC-CL", request);
- }
- else if (request instanceof AppcLcmDmaapWrapper) {
- PolicyEngineConstants.getManager().deliver("APPC-LCM-READ", request);
- }
- break;
- case "SO":
- // at this point the AAI named query request should have already been made,
- // the response recieved and used
- // in the construction of the SO Request which is stored in operationRequest
-
- if(request instanceof SoRequest) {
- // Call SO. The response will be inserted into memory once it's received
- class mySoCallback implements SoManager.SoCallback {
- public void onSoResponseWrapper(SoResponseWrapper wrapper) {
- drools.getWorkingMemory().insert(wrapper);
- }
- }
- SoActorServiceProvider.sendRequest($event.getRequestId().toString(),
- new mySoCallback(),
- request,
- PolicyEngineConstants.getManager().getEnvironmentProperty("so.url"),
- PolicyEngineConstants.getManager().getEnvironmentProperty("so.username"),
- PolicyEngineConstants.getManager().getEnvironmentProperty("so.password"));
- }
- break;
- case "VFC":
- if (request instanceof VfcRequest) {
- // Start VFC thread
- class myVfcCallback implements VfcManager.VfcCallback {
-
- public void onResponse(VfcResponse responseError) {
- drools.getWorkingMemory().insert(responseError);
- }
- };
- // Start VFC thread
- Thread t = new Thread(new VfcManager(new myVfcCallback(),
- (VfcRequest)request,
- PolicyEngineConstants.getManager().getEnvironmentProperty("vfc.url"),
- PolicyEngineConstants.getManager().getEnvironmentProperty("vfc.username"),
- PolicyEngineConstants.getManager().getEnvironmentProperty("vfc.password")));
- t.start();
- }
- break;
-
- case "SDNC":
- if (request instanceof SdncRequest) {
- // Start SDNC thread
- class mySdncCallback implements SdncManager.SdncCallback {
- public void onCallback(SdncResponse response) {
- drools.getWorkingMemory().insert(response);
- }
- }
- // Start SDNC thread
- Thread t = new Thread(new SdncManager(new mySdncCallback(),
- (SdncRequest)request,
- PolicyEngineConstants.getManager().getEnvironmentProperty("sdnc.url"),
- PolicyEngineConstants.getManager().getEnvironmentProperty("sdnc.username"),
- PolicyEngineConstants.getManager().getEnvironmentProperty("sdnc.password")));
- t.start();
- }
- break;
- case "SDNR":
- if (request instanceof PciRequestWrapper) {
- PolicyEngineConstants.getManager().deliver("SDNR-CL", request);
- }
- break;
-
- case "CDS":
-
- if(request instanceof ExecutionServiceInput) {
-
- // Instantiate cds actor, service manager and grpc properties
-
- CdsActorServiceProvider cdsActor = new CdsActorServiceProvider();
- CdsActorServiceProvider.CdsActorServiceManager cdsActorServiceManager = cdsActor.new CdsActorServiceManager();
-
- CdsServerProperties props = new CdsServerProperties();
- props.setHost(PolicyEngineConstants.getManager().getEnvironmentProperty("cds.grpcHost"));
- props.setPort(Integer.parseInt(PolicyEngineConstants.getManager().getEnvironmentProperty("cds.grpcPort")));
- props.setUsername(PolicyEngineConstants.getManager().getEnvironmentProperty("cds.grpcUsername"));
- props.setPassword(PolicyEngineConstants.getManager().getEnvironmentProperty("cds.grpcPassword"));
- props.setTimeout(Integer.parseInt(PolicyEngineConstants.getManager().getEnvironmentProperty("cds.grpcTimeout")));
-
- // Send cds grpc request
- try (CdsProcessorGrpcClient client = new CdsProcessorGrpcClient(cdsActorServiceManager, props)) {
- CdsResponse response =
- cdsActorServiceManager.sendRequestToCds(client, props, (ExecutionServiceInput) request);
- logger.info("CDS response: {}", response);
- insert(response);
- }
-
- }
- break;
-
- }
- } else {
- //
- // What happens if its null?
- //
- logger.warn("{}: {}: unexpected null operation request",
- $params.getClosedLoopControlName(),
- drools.getRule().getName());
- if ("SO".equals($operation.policy.getActor())) {
- retract($opTimer);
- retract($operation);
- modify($manager) {finishOperation($operation)};
- }
- else if ("vfc".equalsIgnoreCase($operation.policy.getActor())) {
- retract($opTimer);
- retract($operation);
- modify($manager) {finishOperation($operation)};
- }
- else if ("sdnc".equalsIgnoreCase($operation.policy.getActor())) {
- retract($opTimer);
- retract($operation);
- modify($manager) {finishOperation($operation)};
- }
- }
-
- } catch (Exception e) {
- String msg = e.getMessage();
- logger.warn("{}: {}: operation={}: AAI failure: {}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $operation, msg, e);
- $operation.setOperationHasException(msg);
-
- if(request != null) {
- //
- // Create a notification for it ("DB Write - end operation")
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
-
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- }
-
- retract($opTimer);
- retract($operation);
- caughtException = true;
- }
-
- // Having the modify statement in the catch clause doesn't work for whatever reason
- if (caughtException) {
- modify($manager) {finishOperation($operation)};
- }
-end
-
-
-/*
-*
-* We were able to acquire a lock so now let's ask Xacml Guard whether
-* we are allowed to proceed with the request to the actor.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId(), "None".equalsIgnoreCase(getGuardApprovalStatus()) )
- $lock : Lock (ownerKey == $event.getRequestId().toString(), isActive())
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}: event={} manager={} operation={} lock={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $lock);
-
- //
- // Sending notification that we are about to query Guard ("DB write - start operation")
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.OPERATION);
- notification.setMessage("Sending guard query for " + $operation.policy.getActor() + " "
- + $operation.policy.getRecipe());
- notification.setHistory($operation.getHistory());
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- //
- // Now send Guard Request to XACML Guard. In order to bypass the call to Guard,
- // just change guardEnabled to false.
- //
- // In order to use REST XACML, provide a URL instead of "" as a second argument
- // to the CallGuardTask() and set the first argument to null
- // (instead of XacmlPdpEngine).
- //
-
- // NOTE: The environment properties uses "guard.disabled" but the boolean is guardEnabled
- boolean guardEnabled = "false".equalsIgnoreCase(PolicyEngineConstants.getManager().getEnvironmentProperty("guard.disabled"));
-
- if(guardEnabled){
-
- Thread t = new Thread(new org.onap.policy.guard.CallGuardTask(
- drools.getWorkingMemory(),
- $event.getClosedLoopControlName(),
- $operation.policy.getActor().toString(),
- $operation.policy.getRecipe(),
- $operation.getTargetEntity(),
- $event.getRequestId().toString(),
- () -> {
- try {
- AaiCqResponse resp_cq = $manager.getCqResponse($event);
- if (resp_cq == null){
- return null;
- } else {
- String custId = $operation.policy.getTarget().getModelCustomizationId();
- String invId = $operation.policy.getTarget().getModelInvariantId();
- String verId = $operation.policy.getTarget().getModelVersionId();
- return resp_cq.getVfModuleCount(custId, invId, verId);
- }
- } catch (Exception e){
- logger.warn("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName(), e);
- }
- return null;
- }));
- t.start();
- }
- else{
- insert(new PolicyGuardResponse("Permit", $event.getRequestId(), $operation.policy.getRecipe()));
- }
-
-end
-
-//
-// This rule will be triggered when a thread talking to the XACML Guard inserts a
-// guardResponse object into the working memory
-//
-rule "${policyName}.GUARD.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $guardResponse : PolicyGuardResponse(requestId == $event.getRequestId(), $operation.policy.recipe == operation)
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}: event={} manager={} operation={} opTimer={} guardResponse={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $opTimer, $guardResponse);
-
-
- //we will permit the operation if there was no Guard for it
- if("Indeterminate".equalsIgnoreCase($guardResponse.getResult())){
- $guardResponse.setResult("Permit");
- }
-
- //
- // This notification has Guard result in "message". ("DB write - end operation in case of Guard Deny")
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setNotification(ControlLoopNotificationType.OPERATION);
- notification.setMessage("Guard result for " + $operation.policy.getActor() + " " + $operation.policy.getRecipe()
- + " is " + $guardResponse.getResult());
- notification.setHistory($operation.getHistory());
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
-
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- if("Permit".equalsIgnoreCase($guardResponse.getResult())){
-
- modify($operation){setGuardApprovalStatus($guardResponse.getResult())};
- }
- else {
- //This is the Deny case
- $operation.startOperation($event);
- $operation.setOperationHasGuardDeny();
- retract($opTimer);
- retract($operation);
- modify($manager) {finishOperation($operation)};
- }
-
- retract($guardResponse);
-
-end
-
-/*
-*
-* This rule responds to APPC Response Events
-*
-* I would have like to be consistent and write the Response like this:
-* $response : Response( CommonHeader.RequestId == $onset.getRequestId() )
-*
-* However, no compile error was given. But a runtime error was given. I think
-* because drools is confused between the classname CommonHeader vs the property CommonHeader.
-*
-*/
-rule "${policyName}.APPC.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : Response( getCommonHeader().RequestId == $event.getRequestId() )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $opTimer, $response);
- //
- // Get the result of the operation
- //
- PolicyResult policyResult = $operation.onResponse($response);
- if (policyResult != null) {
- logger.debug("{}: {}: operation finished - result={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- policyResult);
- //
- // This Operation has completed, construct a notification showing our results. (DB write - end operation)
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- if (policyResult.equals(PolicyResult.SUCCESS)) {
- notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS);
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- } else {
- notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- }
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete() == true) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- //
- retract($opTimer);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
- } else {
- //
- // Its not finished yet (i.e. expecting more Response objects)
- //
- // Or possibly it is a leftover response that we timed the request out previously
- //
- }
- //
- // We are going to retract these objects from memory
- //
- retract($response);
-end
-
-/*
-*
-* The problem with Responses is that they don't have a controlLoopControlName
-* field in them, so the only way to attach them is via RequestId. If we have multiple
-* control loop .drl's loaded in the same container, we need to be sure the cleanup
-* rules don't remove Responses for other control loops.
-*
-*/
-rule "${policyName}.APPC.RESPONSE.CLEANUP"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $response : Response($id : getCommonHeader().RequestId )
- not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: orphan appc response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(), $id);
-
- //
- // Retract it
- //
- retract($response);
-end
-
-/*
-*
-* This rule responds to APPC Response Events using the new LCM interface provided by appc
-*
-*/
-rule "${policyName}.APPC.LCM.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : AppcLcmDmaapWrapper( getBody().getOutput().getCommonHeader().getRequestId() == $event.getRequestId() )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer, $response);
-
- //
- // Get the result of the operation
- //
- PolicyResult policyResult = $operation.onResponse($response);
- if (policyResult != null) {
- logger.debug("{}: {}: operation finished - result={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- policyResult);
-
- //
- // This Operation has completed, construct a notification showing our results. (DB write - end operation)
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- if (policyResult.equals(PolicyResult.SUCCESS)) {
- notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS);
- } else {
- notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- }
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete() == true) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- //
- retract($opTimer);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
- } else {
- //
- // Its not finished yet (i.e. expecting more Response objects)
- //
- // Or possibly it is a leftover response that we timed the request out previously
- //
- }
- //
- // We are going to retract these objects from memory
- //
- retract($response);
-end
-
-/*
-*
-* Clean Up any lingering LCM reponses
-*
-*/
-rule "${policyName}.APPC.LCM.RESPONSE.CLEANUP"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $response : AppcLcmDmaapWrapper($id : getBody().getOutput().getCommonHeader().getRequestId() )
- not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: orphan appc response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(), $id);
- //
- // Retract it
- //
- retract($response);
-end
-
-/*
-*
-* This rule responds to SDNR Response Events using the new interface provided by SDNR
-*
-*/
-rule "${policyName}.SDNR.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : PciResponseWrapper( getBody().getCommonHeader().getRequestId() == $event.getRequestId() )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer, $response);
-
- //
- // Get the result of the operation
- //
- PolicyResult policyResult = $operation.onResponse($response);
- if (policyResult != null) {
- logger.debug("{}: {}: operation finished - result={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- policyResult);
-
- //
- // This Operation has completed, construct a notification showing our results. (DB write - end operation)
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- if (policyResult.equals(PolicyResult.SUCCESS)) {
- notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS);
- } else {
- notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- }
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete()) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- //
- retract($opTimer);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
- } else {
- //
- // Its not finished yet (i.e. expecting more Response objects)
- //
- // Or possibly it is a leftover response that we timed the request out previously
- //
- }
- //
- // We are going to retract these objects from memory
- //
- retract($response);
-end
-
-/*
-*
-* Clean Up any lingering SDNR reponses
-*
-*/
-rule "${policyName}.SDNR.RESPONSE.CLEANUP"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $response : PciResponseWrapper($id : getBody().getCommonHeader().getRequestId )
- not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: orphan SDNR response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(), $id);
- //
- // Retract it
- //
- retract($response);
-end
-
-/*
-*
-* This rule responds to SO Response Events
-*
-*/
-rule "${policyName}.SO.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : SoResponseWrapper(requestId.toString() == $event.getRequestId().toString() )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer, $response);
-
- // Get the result of the operation
- //
- PolicyResult policyResult = $operation.onResponse($response);
- if (policyResult != null) {
- logger.debug("{}: {}: operation finished - result={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- policyResult);
-
- //
- // This Operation has completed, construct a notification showing our results
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- if (policyResult.equals(PolicyResult.SUCCESS)) {
- notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS);
- } else {
- notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
-
- }
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete() == true) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- //
- retract($opTimer);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
- } else {
- //
- // Its not finished yet (i.e. expecting more Response objects)
- //
- // Or possibly it is a leftover response that we timed the request out previously
- //
- }
- //
- // We are going to retract these objects from memory
- //
- retract($response);
-
-end
-
-/*
-*
-* This rule responds to VFC Response Events
-*
-*/
-rule "${policyName}.VFC.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : VfcResponse( requestId.toString() == $event.getRequestId().toString() )
- then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer, $response);
-
- // Get the result of the operation
- //
- PolicyResult policyResult = $operation.onResponse($response);
- if (policyResult != null) {
- //
- // This Operation has completed, construct a notification showing our results
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete() == true) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- //
- retract($opTimer);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
- } else {
- //
- // Its not finished yet (i.e. expecting more Response objects)
- //
- // Or possibly it is a leftover response that we timed the request out previously
- //
- }
- //
- // We are going to retract these objects from memory
- //
- retract($response);
-
-end
-
-/*
-*
-* This rule responds to SDNC Response Events
-*
-*/
-
-rule "${policyName}.SDNC.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : SdncResponse( requestId.toString() == $event.getRequestId().toString() )
- then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer, $response);
-
- // Get the result of the operation
- //
- PolicyResult policyResult = $operation.onResponse($response);
- if (policyResult != null) {
- //
- // This Operation has completed, construct a notification showing our results
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete()) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- //
- retract($opTimer);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
- } else {
- //
- // Its not finished yet (i.e. expecting more Response objects)
- //
- // Or possibly it is a leftover response that we timed the request out previously
- //
- }
- //
- // We are going to retract these objects from memory
- //
- retract($response);
-
-end
-
-
-/**
- * This rule responds to CDS Response Events
- */
-rule "${policyName}.CDS.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(),
- closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), timerType == "Operation", !expired )
- $response : CdsResponse( requestId == $event.getRequestId().toString() )
-
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={} response={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer, $response);
-
- // Get the result of the operation
- PolicyResult policyResult = $operation.onResponse($response);
-
- if (policyResult != null) {
- logger.debug("{}: {}: operation finished - result={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- policyResult);
-
- // The operation has completed, construct a notification showing our results
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- notification.setNotification(
- ($response != null && CdsActorConstants.SUCCESS.equals($response.getStatus()))
- ? ControlLoopNotificationType.OPERATION_SUCCESS : ControlLoopNotificationType.OPERATION_FAILURE);
-
- // Send the notification
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
-
- // Ensure the operation is complete
- if ($operation.isOperationComplete()) {
-
- // It is complete, remove it from memory
- retract($operation);
-
- // We must also retract the timer object
- // NOTE: We could write a Rule to do this
- retract($opTimer);
-
- // Complete the operation
- modify($manager) {finishOperation($operation)};
-
- } else {
- // Just doing this will kick off the LOCKED rule again
- modify($operation) {};
- }
- } else {
- // Its not finished yet (i.e. expecting more Response objects)
- // Or possibly it is a leftover response that we timed the request out previously
- logger.info(
- "policyResult is null"
- + "\nIt's not finished yet (i.e. expecting more Response objects)"
- + "\nOr possibly it is a leftover response that we timed the request out previously");
- }
-
- // We are going to retract these objects from memory
- retract($response);
-
-end
-
-/*
-*
-* This manages a single timer.
-* Due to a bug in the drools code, the drools timer needed to be split from most of the objects in the when clause
-*
-*/
-rule "${policyName}.TIMER.FIRED"
- timer (expr: $timeout)
- when
- $timer : ControlLoopTimer($timeout : delay, !expired)
- then
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("This is ${policyName}.TIMER.FIRED");
- modify($timer){setExpired(true)};
- end
-
-/*
-*
-* This is the timer that manages the timeout for an individual operation.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.OPERATION.TIMEOUT"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(),
- onset.getRequestId() == $event.getRequestId() )
- $opTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), expired, timerType == "Operation" )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
- logger.debug("{}: {}: event={} manager={} operation={} opTimer={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event, $manager, $operation, $operation, $opTimer);
-
- //
- // Tell it it has timed out
- //
- $operation.setOperationHasTimedOut();
- //
- // Create a notification for it ("DB Write - end operation")
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE);
- notification.setMessage($operation.getOperationHistory());
- notification.setHistory($operation.getHistory());
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- //
- // Get rid of the timer
- //
- retract($opTimer);
- //
- // Ensure the operation is complete
- //
- if ($operation.isOperationComplete() == true) {
- //
- // It is complete, remove it from memory
- //
- retract($operation);
- //
- // Complete the operation
- //
- modify($manager) {finishOperation($operation)};
- } else {
- //
- // Just doing this will kick off the LOCKED rule again
- //
- modify($operation) {};
- }
-end
-
-/*
-*
-* This is the timer that manages the overall control loop timeout.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.TIMEOUT"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() )
- $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId() )
- $clTimer : ControlLoopTimer( closedLoopControlName == $event.getClosedLoopControlName(),
- requestId == $event.getRequestId().toString(), expired, timerType == "ClosedLoop" )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $params.getClosedLoopControlName(), drools.getRule().getName());
-
- logger.debug("{}: {}: event={}",
- $params.getClosedLoopControlName(), drools.getRule().getName(),
- $event);
- //
- // Tell the Event Manager it has timed out
- //
- VirtualControlLoopNotification notification = $manager.setControlLoopTimedOut();
- if (notification != null) {
- notification.setFrom("policy");
- notification.setPolicyName(drools.getRule().getName());
- notification.setPolicyScope("${policyScope}");
- notification.setPolicyVersion("${policyVersion}");
- //
- // Let interested parties know
- //
- PolicyEngineConstants.getManager().deliver("POLICY-CL-MGT", notification);
- }
- //
- // Retract the event
- //
- retract($event);
-end
-
-/*
-*
-* This rule cleans up the manager and other objects after an event has
-* been retracted.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.CLEANUP"
- when
- $manager : ControlLoopEventManager( $clName : getClosedLoopControlName(), $requestId : getRequestId() )
- $operations : LinkedList()
- from collect( ControlLoopOperationManager( onset.closedLoopControlName == $clName,
- onset.getRequestId() == $requestId ) )
- $timers : LinkedList()
- from collect( ControlLoopTimer( closedLoopControlName == $clName,
- requestId == $requestId.toString() ) )
- not( VirtualControlLoopEvent( closedLoopControlName == $clName, requestId == $requestId ) )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $clName, drools.getRule().getName());
-
- logger.debug("{}: {}: manager={} timers={} operations={}",
- $clName, drools.getRule().getName(),
- $manager, $timers.size(), $operations.size());
-
- //
- // Retract lock by invoking unlock()
- //
- Lock lock = $manager.unlockCurrentOperation();
- if(lock != null) {
- retract(lock);
- }
-
- //
- // Retract EVERYTHING
- //
-
- retract($manager);
-
- for(Object manager: $operations) {
- retract((ControlLoopOperationManager) manager);
- }
- for(Object timer: $timers) {
- retract((ControlLoopTimer) timer);
- }
-end
-
-/*
-*
-* This rule will clean up any rogue onsets where there is no
-* ControlLoopParams object corresponding to the onset event.
-*
-*/
-rule "${policyName}.EVENT.CLEANUP"
- when
- $event : VirtualControlLoopEvent( $clName: closedLoopControlName )
- not ( Params( getClosedLoopControlName() == $clName) )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $clName, drools.getRule().getName());
- logger.debug("{}: {}: orphan onset event={}",
- $clName, drools.getRule().getName(), $event);
-
- retract($event);
-end
-
-/*
-* Creates a cleaner for every Params object.
-* This has a higher salience so that it is fired before PARAMS.FINISHED in ANY policy.
-*/
-rule "${policyName}.PARAMS.CLEANING"
- salience 2
- when
- $params: Params( )
- ParamsInitCleaner( )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {} : YAML=[{}]", $params.getClosedLoopControlName(), drools.getRule().getName(),
- $params.getControlLoopYaml());
-
- ParamsCleaner cleaner = new ParamsCleaner();
- cleaner.setClosedLoopControlName($params.getClosedLoopControlName());
- cleaner.setControlLoopYaml($params.getControlLoopYaml());
- insert(cleaner);
-end
-
-/*
-* Finished creating cleaner objects, so remove the trigger.
-* This has a higher salience so that it is fired before processing any events.
-*/
-rule "${policyName}.PARAMS.FINISHED"
- salience 1
- when
- $initCleaner: ParamsInitCleaner( )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {}", $initCleaner.getClosedLoopControlName(), drools.getRule().getName());
-
- retract($initCleaner);
-end
-
-/*
-* Identifies Params objects that are still active, removing their associated cleaners.
-* This should only leave one active Params object for each policy.
-* This has a higher salience so that it is fired before PARAMS.DELETE in ANY policy.
-*/
-rule "${policyName}.PARAMS.ACTIVE"
- salience 3
- when
- $params: Params( getClosedLoopControlName() == "${closedLoopControlName}",
- getControlLoopYaml() == "${controlLoopYaml}" )
- $cleaner: ParamsCleaner( getClosedLoopControlName() == "${closedLoopControlName}",
- getControlLoopYaml() == "${controlLoopYaml}" )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {} : YAML=[{}]", $params.getClosedLoopControlName(), drools.getRule().getName(),
- $params.getControlLoopYaml());
-
- retract($cleaner);
-end
-
-/*
-* Delete Params objects that are not active (i.e., those that still have an associated
-* cleaner object).
-* This has a higher salience so that it is fired before PARAMS.CLEANED in ANY policy.
-*/
-rule "${policyName}.PARAMS.DELETE"
- salience 2
- when
- $params: Params( )
- $cleaner: ParamsCleaner( getClosedLoopControlName() == $params.getClosedLoopControlName(),
- getControlLoopYaml() == $params.getControlLoopYaml() )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {} : YAML=[{}]", $params.getClosedLoopControlName(), drools.getRule().getName(),
- $params.getControlLoopYaml());
-
- retract($params);
-end
-
-/*
-* Finished clean-up, so delete the cleaner objects.
-* This has a higher salience so that it is fired before processing any events.
-*/
-rule "${policyName}.PARAMS.CLEANED"
- salience 1
- when
- $cleaner: ParamsCleaner( )
- then
-
- Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
- logger.info("{}: {} : YAML=[{}]", $cleaner.getClosedLoopControlName(), drools.getRule().getName(),
- $cleaner.getControlLoopYaml());
-
- retract($cleaner);
-end
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/test/resources/projects/basic/archetype.properties b/controlloop/templates/archetype-cl-amsterdam/src/test/resources/projects/basic/archetype.properties
deleted file mode 100644
index 8cc10c97c..000000000
--- a/controlloop/templates/archetype-cl-amsterdam/src/test/resources/projects/basic/archetype.properties
+++ /dev/null
@@ -1,43 +0,0 @@
-###
-# ============LICENSE_START=======================================================
-# archetype-closed-loop-demo-rules
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-groupId=org.onap.policy.demo.drools
-artifactId=amsterdam
-version=1.1.0-SNAPSHOT
-package=org.onap.policy.demo.drools
-closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
-controlLoopYaml=controlLoop%3A%0A++version%3A+2.0.0%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0A++trigger_policy%3A+unique-policy-id-1-restart%0A++timeout%3A+3600%0A++abatement%3A+true%0A+%0Apolicies%3A%0A++-+id%3A+unique-policy-id-1-restart%0A++++name%3A+Restart+the+VM%0A++++description%3A%0A++++actor%3A+APPC%0A++++recipe%3A+Restart%0A++++target%3A%0A++++++type%3A+VM%0A++++retry%3A+3%0A++++timeout%3A+1200%0A++++success%3A+final_success%0A++++failure%3A+final_failure%0A++++failure_timeout%3A+final_failure_timeout%0A++++failure_retries%3A+final_failure_retries%0A++++failure_exception%3A+final_failure_exception%0A++++failure_guard%3A+final_failure_guard%0A
-policyScope=service=test;resource=FRWL;type=configuration
-policyName=FirewallDemo
-policyVersion=v1.0
-dmaapServers=server1,server2,server3
-appcTopic=APPC-CL
-notificationTopic=POLICY-CL-MGT
-dcaeTopic=DCAE-CL-EVENT
-dcaeServers=server1,server2,server3
-dependenciesVersion=1.0.0-SNAPSHOT
-aaiURL=http://localhost:8080/TestREST/Test
-aaiUsername=policy
-aaiPassword=policy
-aaiNamedQueryUUID=d925ed73-8231-4d02-9545-db4e101fffff
-aaiPatternMatch=false
-soURL=http://localhost:8080/TestREST/Test
-soUsername=policy
-soPassword=policy
diff --git a/controlloop/templates/pom.xml b/controlloop/templates/pom.xml
deleted file mode 100644
index eaffc0af7..000000000
--- a/controlloop/templates/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- drools-applications Control Loop Drools Templates
- ================================================================================
- 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=========================================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <packaging>pom</packaging>
-
- <parent>
- <groupId>org.onap.policy.drools-applications.controlloop</groupId>
- <artifactId>controlloop</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- </parent>
-
- <groupId>org.onap.policy.drools-applications.controlloop.templates</groupId>
- <artifactId>templates</artifactId>
-
- <modules>
- <module>template.demo</module>
- <module>archetype-cl-amsterdam</module>
- </modules>
-
-</project>
diff --git a/controlloop/templates/template.demo/README.md b/controlloop/templates/template.demo/README.md
deleted file mode 100644
index a996a2291..000000000
--- a/controlloop/templates/template.demo/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Copyright 2018 AT&T Intellectual Property. All rights reserved.
-This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
-Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
-
-This is the ongoing implementation of template to support vFW/vDNS with integration with AAI.
-
diff --git a/controlloop/templates/template.demo/pom.xml b/controlloop/templates/template.demo/pom.xml
deleted file mode 100644
index b2d6aff19..000000000
--- a/controlloop/templates/template.demo/pom.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- drools-applications Control Loop Drools Templates
- ================================================================================
- Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- Modifications Copyright (C) 2019 Nordix Foundation.
- Modifications Copyright (C) 2019 Bell Canada.
- ================================================================================
- 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=========================================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.onap.policy.drools-applications.controlloop.templates</groupId>
- <artifactId>templates</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>template.demo</artifactId>
-
- <properties>
- <protobuf.version>3.6.1</protobuf.version>
- <grpc.version>1.17.1</grpc.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.eclipse.persistence</groupId>
- <artifactId>org.eclipse.persistence.jpa</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-compiler</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>appc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>sdnr</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>appclcm</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>so</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>vfc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>sdnc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>events</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
- <artifactId>database</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
- <artifactId>guard</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>aai</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>sdc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions</groupId>
- <artifactId>model-yaml</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-applications.controlloop.common</groupId>
- <artifactId>eventmanager</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.eclipse.persistence</groupId>
- <artifactId>javax.persistence</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actorServiceProvider</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.appc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.sdnr</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.appclcm</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.so</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.vfc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.sdnc</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-actors</groupId>
- <artifactId>actor.cds</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId>
- <artifactId>cds</artifactId>
- <version>${policy.models.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java</artifactId>
- <version>${protobuf.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.common</groupId>
- <artifactId>policy-endpoints</artifactId>
- <version>${version.policy.common}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.models.policy-models-interactions</groupId>
- <artifactId>simulators</artifactId>
- <version>${policy.models.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>io.grpc</groupId>
- <artifactId>grpc-testing</artifactId>
- <version>${grpc.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.policy.drools-pdp</groupId>
- <artifactId>policy-management</artifactId>
- <version>${version.policy.drools-pdp}</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/controlloop/templates/template.demo/src/main/resources/blacklist_template.xml b/controlloop/templates/template.demo/src/main/resources/blacklist_template.xml
deleted file mode 100644
index 1563e4a7d..000000000
--- a/controlloop/templates/template.demo/src/main/resources/blacklist_template.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
- ============LICENSE_START=======================================================
- drools-applications
- ================================================================================
- Copyright (C) 2018-2019 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=========================================================
- -->
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
- PolicyId="urn:com:att:xacml:policy:id:25e12b06-11d5-4895-b2a2-6f6c594de069"
- Version="1"
- RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-deny">
- <Description>Policy for frequency limiter.</Description>
- <Target>
- <AnyOf>
- <AllOf>
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <!-- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">.*</AttributeValue>-->
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${clname}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
- AttributeId="urn:org:onap:guard:clname:clname-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
-
- <!-- <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">-->
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${actor}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
- AttributeId="urn:org:onap:guard:actor:actor-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${recipe}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
- AttributeId="urn:org:onap:guard:operation:operation-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
- </AllOf>
- </AnyOf>
- </Target>
- <Rule
- RuleId="urn:com:att:xacml:rule:id:e1e8c5c0-e2ba-47d5-9289-6c015305ed21"
- Effect="Deny">
- <Description>DENY - only if target is in black list and guard is
- active.</Description>
- <Condition>
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
- <VariableReference
- VariableId="isGuardActive" />
- <VariableReference
- VariableId="isInBlackList" />
- </Apply>
- </Condition>
- </Rule>
- <VariableDefinition VariableId="isInBlackList">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:3.0:function:any-of">
- <Function
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal" />
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only">
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
- AttributeId="urn:org:onap:guard:target:target-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Apply>
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
- ${blackListElement}
- <!-- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">vserver.vserver-name</AttributeValue>-->
- </Apply>
- </Apply>
- </VariableDefinition>
- <VariableDefinition VariableId="isGuardActive">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:2.0:function:time-in-range">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
- <AttributeDesignator
- AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time"
- DataType="http://www.w3.org/2001/XMLSchema#time"
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment"
- MustBePresent="false" />
- </Apply>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#time">${guardActiveStart}</AttributeValue>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#time">${guardActiveEnd}</AttributeValue>
- </Apply>
- </VariableDefinition>
-</Policy>
diff --git a/controlloop/templates/template.demo/src/main/resources/frequency_limiter_template.xml b/controlloop/templates/template.demo/src/main/resources/frequency_limiter_template.xml
deleted file mode 100644
index d26432f86..000000000
--- a/controlloop/templates/template.demo/src/main/resources/frequency_limiter_template.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
- ============LICENSE_START=======================================================
- drools-applications
- ================================================================================
- Copyright (C) 2018-2019 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=========================================================
- -->
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
- PolicyId="urn:com:att:xacml:policy:id:25e12b06-11d5-4895-b2a2-6f6c594de069"
- Version="1"
- RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-deny">
- <Description>Policy for frequency limiter.</Description>
- <Target>
- <AnyOf>
- <AllOf>
-
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <!-- <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">.*</AttributeValue>-->
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${clname}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
- AttributeId="urn:org:onap:guard:clname:clname-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
-
- <!-- <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">-->
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${actor}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
- AttributeId="urn:org:onap:guard:actor:actor-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${recipe}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
- AttributeId="urn:org:onap:guard:operation:operation-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
-
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${targets}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
- AttributeId="urn:org:onap:guard:target:target-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
-
- </AllOf>
- </AnyOf>
- </Target>
- <Rule
- RuleId="urn:com:att:xacml:rule:id:e1e8c5c0-e2ba-47d5-9289-6c015305ed21"
- Effect="Deny">
- <Description>DENY - only if number of operations performed in
- the past is larger than the limit and the Guard is active.</Description>
- <Condition>
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
- <VariableReference
- VariableId="isGuardActive" />
- <VariableReference
- VariableId="isHistoryGreaterThanLimit" />
- </Apply>
- </Condition>
- </Rule>
- <VariableDefinition VariableId="isGuardActive">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:2.0:function:time-in-range">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
- <AttributeDesignator
- AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time"
- DataType="http://www.w3.org/2001/XMLSchema#time"
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment"
- MustBePresent="false" />
- </Apply>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#time">${guardActiveStart}</AttributeValue>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#time">${guardActiveEnd}</AttributeValue>
- </Apply>
- </VariableDefinition>
- <VariableDefinition
- VariableId="isHistoryGreaterThanLimit">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only">
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
- AttributeId="com:att:research:xacml:test:sql:resource:operations:count"
- DataType="http://www.w3.org/2001/XMLSchema#integer"
- Issuer="com:att:research:xacml:guard:historydb:tw:${twValue}:${twUnits}"
- MustBePresent="false" />
- </Apply>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#integer">${limit}</AttributeValue>
- </Apply>
- </VariableDefinition>
-</Policy>
diff --git a/controlloop/templates/template.demo/src/main/resources/frequency_limiter_template_old.xml b/controlloop/templates/template.demo/src/main/resources/frequency_limiter_template_old.xml
deleted file mode 100644
index e1e3451f3..000000000
--- a/controlloop/templates/template.demo/src/main/resources/frequency_limiter_template_old.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
- ============LICENSE_START=======================================================
- drools-applications
- ================================================================================
- Copyright (C) 2018-2019 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=========================================================
- -->
-<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
- PolicyId="urn:com:att:xacml:policy:id:25e12b06-11d5-4895-b2a2-6f6c594de069"
- Version="1"
- RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-deny">
- <Description>Policy for frequency limiter.</Description>
- <Target>
- <AnyOf>
- <AllOf>
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${actor}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
- AttributeId="urn:org:onap:guard:actor:actor-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
- <Match
- MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#string">${recipe}</AttributeValue>
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
- AttributeId="urn:org:onap:guard:operation:operation-id"
- DataType="http://www.w3.org/2001/XMLSchema#string"
- MustBePresent="false" />
- </Match>
- </AllOf>
- </AnyOf>
- </Target>
- <Rule
- RuleId="urn:com:att:xacml:rule:id:e1e8c5c0-e2ba-47d5-9289-6c015305ed21"
- Effect="Deny">
- <Description>DENY - only if number of operations performed in
- the past is larger than the limit and the Guard is active.</Description>
- <Condition>
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
- <VariableReference
- VariableId="isGuardActive" />
- <VariableReference
- VariableId="isHistoryGreaterThanLimit" />
- </Apply>
- </Condition>
- </Rule>
- <VariableDefinition VariableId="isGuardActive">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:2.0:function:time-in-range">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:time-one-and-only">
- <AttributeDesignator
- AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-time"
- DataType="http://www.w3.org/2001/XMLSchema#time"
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment"
- MustBePresent="false" />
- </Apply>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#time">${guardActiveStart}</AttributeValue>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#time">${guardActiveEnd}</AttributeValue>
- </Apply>
- </VariableDefinition>
- <VariableDefinition
- VariableId="isHistoryGreaterThanLimit">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal">
- <Apply
- FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only">
- <AttributeDesignator
- Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
- AttributeId="com:att:research:xacml:test:sql:resource:operations:count"
- DataType="http://www.w3.org/2001/XMLSchema#integer"
- Issuer="com:att:research:xacml:test:sql:${timeWindow}"
- MustBePresent="false" />
- </Apply>
- <AttributeValue
- DataType="http://www.w3.org/2001/XMLSchema#integer">${limit}</AttributeValue>
- </Apply>
- </VariableDefinition>
-</Policy>
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnBwControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnBwControlLoopTest.java
deleted file mode 100644
index ab0070724..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnBwControlLoopTest.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved.
- * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.sdnc.SdncRequest;
-
-public class CcvpnBwControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_CCVPN_BW.yaml",
- "type=operational",
- "BandwidthOnDemand", "2.0.0");
- }
-
- @Test
- public void testSuccess() throws IOException {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testNullRequest() throws IOException {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
-
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(pair.first.getControlLoop().getControlLoopName());
- event.setRequestId(UUID.randomUUID());
- event.setClosedLoopEventClient("DCAE.HolmesInstance");
- event.setTargetType(ControlLoopTargetType.VM);
- event.setTarget("vserver.vserver-name");
- event.setFrom("DCAE");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<String, String>());
- event.getAai().put("vserver.vserver-name", "nullRequest");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- kieSession.insert(event);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- VirtualControlLoopNotification.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNC"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("SDNC.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNC"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("nullRequest".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.getNotification());
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof SdncRequest) {
- logger.debug("\n============ SDNC received the request!!! ===========\n");
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- */
- protected void sendEvent(ControlLoopPolicy policy) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(UUID.randomUUID());
- event.setClosedLoopEventClient("DCAE.HolmesInstance");
- event.setTargetType(ControlLoopTargetType.VM);
- event.setTarget("vserver.vserver-name");
- event.setFrom("DCAE");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<String, String>());
- event.getAai().put("vserver.vserver-name", "TBD");
- event.getAai().put("globalSubscriberId", "e151059a-d924-4629-845f-264db19e50b4");
- event.getAai().put("serviceType", "siteService");
- event.getAai().put("service-instance.service-instance-id", "service-instance-id-example-1");
- event.getAai().put("vserver.is-closed-loop-disabled", "false");
- event.getAai().put("vserver.prov-status", "ACTIVE");
- event.getAai().put("bandwidth", "500");
- event.getAai().put("bandwidth-change-time", "20190326-05:20:38:668");
- event.getAai().put("vnfId", "vnf-id");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnControlLoopTest.java
deleted file mode 100644
index 3599d47d0..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/CcvpnControlLoopTest.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Huawei. All rights reserved.
- * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.sdnc.SdncRequest;
-
-public class CcvpnControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_CCVPN.yaml",
- "type=operational",
- "Connectivity Reroute",
- "2.0.0");
- }
-
- @Test
- public void testSuccess() throws IOException {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testNullRequest() throws IOException {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
-
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(pair.first.getControlLoop().getControlLoopName());
- event.setRequestId(UUID.randomUUID());
- event.setClosedLoopEventClient("DCAE.HolmesInstance");
- event.setTargetType(ControlLoopTargetType.VM);
- event.setTarget("vserver.vserver-name");
- event.setFrom("DCAE");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<String, String>());
- event.getAai().put("vserver.vserver-name", "nullRequest");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- kieSession.insert(event);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- VirtualControlLoopNotification.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNC"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("SDNC.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNC"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("nullRequest".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.getNotification());
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof SdncRequest) {
- logger.debug("\n============ SDNC received the request!!! ===========\n");
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- */
- protected void sendEvent(ControlLoopPolicy policy) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(UUID.randomUUID());
- event.setClosedLoopEventClient("DCAE.HolmesInstance");
- event.setTargetType(ControlLoopTargetType.VM);
- event.setTarget("vserver.vserver-name");
- event.setFrom("DCAE");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<String, String>());
- event.getAai().put("vserver.vserver-name", "TBD");
- event.getAai().put("globalSubscriberId", "e151059a-d924-4629-845f-264db19e50b4");
- event.getAai().put("serviceType", "SOTN");
- event.getAai().put("service-instance.service-instance-id", "service-instance-id-example-1");
- event.getAai().put("network-information.network-id", "id");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopBase.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopBase.java
deleted file mode 100644
index a311ba0b0..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopBase.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Bell Canada.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-import org.junit.AfterClass;
-import org.kie.api.runtime.KieSession;
-import org.kie.api.runtime.rule.FactHandle;
-import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
-import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.drools.protocol.coders.EventProtocolCoderConstants;
-import org.onap.policy.drools.protocol.coders.EventProtocolParams;
-import org.onap.policy.drools.protocol.coders.JsonProtocolFilter;
-import org.onap.policy.drools.system.PolicyControllerConstants;
-import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.onap.policy.drools.utils.logging.LoggerUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Common super class used by various Control Loop test classes. It manages the simulators
- * and the kie session.
- */
-public class ControlLoopBase {
-
- private static final String JUNIT_ARTIFACT_ID = "junit.artifactId";
-
- private static final String JUNIT_GROUP_ID = "junit.groupId";
-
- protected static final Logger logger = LoggerFactory.getLogger(ControlLoopBase.class);
-
- protected static List<? extends TopicSink> noopTopics;
-
- protected static KieSession kieSession;
- protected static SupportUtil.Pair<ControlLoopPolicy, String> pair;
-
- protected UUID requestId;
-
- /**
- * Starts the simulator and the kie session.
- *
- * @param droolsTemplate the DRL rules file
- * @param yamlFile the yaml file containing the policies
- * @param policyScope scope for policy
- * @param policyName name of the policy
- * @param policyVersion version of the policy
- */
- public static void setUpBeforeClass(String droolsTemplate, String yamlFile, String policyScope,
- String policyName, String policyVersion) {
-
- SupportUtil.setCustomQuery("false");
-
- /* Set environment properties */
- SupportUtil.setAaiProps();
- SupportUtil.setGuardProps();
- SupportUtil.setSdncProps();
- SupportUtil.setSoProps();
- SupportUtil.setVfcProps();
- SupportUtil.setPuProp();
- SupportUtil.setCdsProps();
-
- LoggerUtil.setLevel(LoggerUtil.ROOT_LOGGER, "INFO");
-
- PolicyEngineConstants.getManager().configure(new Properties());
- assertTrue(PolicyEngineConstants.getManager().start());
- Properties noopSinkProperties = new Properties();
- noopSinkProperties.put(PolicyEndPointProperties.PROPERTY_NOOP_SINK_TOPICS,
- "APPC-LCM-READ,APPC-CL,SDNR-CL,POLICY-CL-MGT");
- noopSinkProperties.put("noop.sink.topics.APPC-LCM-READ.events", "org.onap.policy.appclcm.AppcLcmDmaapWrapper");
- noopSinkProperties.put("noop.sink.topics.APPC-LCM-READ.events.custom.gson",
- "org.onap.policy.appclcm.util.Serialization,gson");
- noopSinkProperties.put("noop.sink.topics.APPC-CL.events", "org.onap.policy.appc.Response");
- noopSinkProperties.put("noop.sink.topics.APPC-CL.events.custom.gson",
- "org.onap.policy.appc.util.Serialization,gsonPretty");
- noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events",
- "org.onap.policy.controlloop.VirtualControlLoopNotification");
- noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events.custom.gson",
- "org.onap.policy.controlloop.util.Serialization,gsonPretty");
- noopTopics = TopicEndpointManager.getManager().addTopicSinks(noopSinkProperties);
-
- EventProtocolCoderConstants.getManager().addEncoder(EventProtocolParams.builder()
- .groupId(JUNIT_GROUP_ID)
- .artifactId(JUNIT_ARTIFACT_ID)
- .topic("POLICY-CL-MGT")
- .eventClass("org.onap.policy.controlloop.VirtualControlLoopNotification")
- .protocolFilter(new JsonProtocolFilter())
- .modelClassLoaderHash(1111));
- EventProtocolCoderConstants.getManager().addEncoder(EventProtocolParams.builder()
- .groupId(JUNIT_GROUP_ID)
- .artifactId(JUNIT_ARTIFACT_ID)
- .topic("APPC-LCM-READ")
- .eventClass("org.onap.policy.appclcm.AppcLcmDmaapWrapper")
- .protocolFilter(new JsonProtocolFilter())
- .modelClassLoaderHash(1111));
- EventProtocolCoderConstants.getManager().addEncoder(EventProtocolParams.builder()
- .groupId(JUNIT_GROUP_ID)
- .artifactId(JUNIT_ARTIFACT_ID)
- .topic("APPC-CL")
- .eventClass("org.onap.policy.appc.Request")
- .protocolFilter(new JsonProtocolFilter())
- .modelClassLoaderHash(1111));
- EventProtocolCoderConstants.getManager().addEncoder(EventProtocolParams.builder()
- .groupId(JUNIT_GROUP_ID)
- .artifactId(JUNIT_ARTIFACT_ID)
- .topic("SDNR-CL")
- .eventClass("org.onap.policy.sdnr.PciRequestWrapper")
- .protocolFilter(new JsonProtocolFilter())
- .modelClassLoaderHash(1111));
- try {
- SupportUtil.buildAaiSim();
- SupportUtil.buildSdncSim();
- SupportUtil.buildSoSim();
- SupportUtil.buildVfcSim();
- SupportUtil.buildGuardSim();
- } catch (Exception e) {
- fail(e.getMessage());
- }
-
-
- /*
- * Start the kie session
- */
- try {
- kieSession = startSession(droolsTemplate, yamlFile, policyScope,
- policyName, policyVersion);
- } catch (IOException e) {
- e.printStackTrace();
- logger.debug("Could not create kieSession");
- fail("Could not create kieSession");
- }
- }
-
- /**
- * Stops the simulators and the kie session.
- */
- @AfterClass
- public static void tearDownAfterClass() {
-
- SupportUtil.setCustomQuery("false");
-
- /*
- * Gracefully shut down the kie session
- */
- kieSession.dispose();
-
- PolicyEngineConstants.getManager().stop();
- HttpServletServerFactoryInstance.getServerFactory().destroy();
- PolicyControllerConstants.getFactory().shutdown();
- TopicEndpointManager.getManager().shutdown();
- }
-
- /**
- * This method will start a kie session and instantiate the Policy Engine.
- *
- * @param droolsTemplate the DRL rules file
- * @param yamlFile the yaml file containing the policies
- * @param policyScope scope for policy
- * @param policyName name of the policy
- * @param policyVersion version of the policy
- * @return the kieSession to be used to insert facts
- * @throws IOException IO exception
- */
- private static KieSession startSession(String droolsTemplate, String yamlFile, String policyScope,
- String policyName, String policyVersion) throws IOException {
-
- /*
- * Load policies from yaml
- */
- pair = SupportUtil.loadYaml(yamlFile);
- assertNotNull(pair);
- assertNotNull(pair.first);
- assertNotNull(pair.first.getControlLoop());
- assertNotNull(pair.first.getControlLoop().getControlLoopName());
- assertTrue(pair.first.getControlLoop().getControlLoopName().length() > 0);
-
- /*
- * Construct a kie session
- */
- final KieSession kieSession = SupportUtil.buildContainer(droolsTemplate,
- pair.first.getControlLoop().getControlLoopName(),
- policyScope, policyName, policyVersion, URLEncoder.encode(pair.second, "UTF-8"));
-
- /*
- * Retrieve the Policy Engine
- */
-
- logger.debug("============");
- logger.debug(URLEncoder.encode(pair.second, "UTF-8"));
- logger.debug("============");
-
- return kieSession;
- }
-
- /**
- * This method will dump all the facts in the working memory.
- *
- * @param kieSession the session containing the facts
- */
- public void dumpFacts(KieSession kieSession) {
- logger.debug("Fact Count: {}", kieSession.getFactCount());
- for (FactHandle handle : kieSession.getFactHandles()) {
- logger.debug("FACT: {}", handle);
- }
- }
-
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopEventCleanupTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopEventCleanupTest.java
deleted file mode 100644
index 151819c4d..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopEventCleanupTest.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.kie.api.runtime.KieSession;
-import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
-import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.drools.protocol.coders.EventProtocolCoderConstants;
-import org.onap.policy.drools.protocol.coders.EventProtocolParams;
-import org.onap.policy.drools.protocol.coders.JsonProtocolFilter;
-import org.onap.policy.drools.system.PolicyControllerConstants;
-import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.onap.policy.drools.utils.logging.LoggerUtil;
-import org.onap.policy.template.demo.SupportUtil.Pair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Verifies that event objects are cleaned up when rules are updated. This loads
- * <b>two</b> copies of the rule set into a single policy to ensure that the two copies
- * interact appropriately with each other's event objects.
- */
-public class ControlLoopEventCleanupTest {
- private static final Logger logger = LoggerFactory.getLogger(ControlLoopEventCleanupTest.class);
-
- /**
- * Number of objects per control loop, including the Params object.
- */
- private static int CL_OBJECTS = 7;
-
- private static final String YAML = "src/test/resources/yaml/policy_ControlLoop_EventCleanup-test.yaml";
-
- /**
- * YAML to be used when the first rule set is updated.
- */
- private static final String YAML2 = "src/test/resources/yaml/policy_ControlLoop_EventCleanup-test2.yaml";
-
- private static final String POLICY_VERSION = "v2.0";
-
- private static final String POLICY_NAME = "CL_CleanupTest";
-
- private static final String POLICY_SCOPE = "type=operational";
-
- private static final String CONTROL_LOOP_NAME = "ControlLoop-Event-Cleanup-Test";
-
- private static final String DROOLS_TEMPLATE = "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl";
-
- // values specific to the second copy of the rules
-
- private static final String YAML_B = "src/test/resources/yaml/policy_ControlLoop_EventCleanup-test-B.yaml";
- private static final String POLICY_NAME_B = "CL_CleanupTest_B";
- private static final String CONTROL_LOOP_NAME_B = "ControlLoop-Event-Cleanup-Test-B";
-
- private static final String GUARD_DISABLED = "guard.disabled";
-
- private static String saveGuardFlag;
-
- private static KieSession kieSession;
- private static SupportUtil.RuleSpec[] specifications;
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpSimulator() {
- LoggerUtil.setLevel(LoggerUtil.ROOT_LOGGER, "INFO");
-
- saveGuardFlag = PolicyEngineConstants.getManager().getEnvironmentProperty(GUARD_DISABLED);
- PolicyEngineConstants.getManager().getEnvironment().setProperty(GUARD_DISABLED, "true");
-
- SupportUtil.setAaiProps();
-
- PolicyEngineConstants.getManager().configure(new Properties());
- assertTrue(PolicyEngineConstants.getManager().start());
- Properties noopSinkProperties = new Properties();
- noopSinkProperties.put(PolicyEndPointProperties.PROPERTY_NOOP_SINK_TOPICS, "APPC-CL,POLICY-CL-MGT");
- noopSinkProperties.put("noop.sink.topics.APPC-CL.events", "org.onap.policy.appc.Response");
- noopSinkProperties.put("noop.sink.topics.APPC-CL.events.custom.gson",
- "org.onap.policy.appc.util.Serialization,gsonPretty");
- noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events",
- "org.onap.policy.controlloop.VirtualControlLoopNotification");
- noopSinkProperties.put("noop.sink.topics.POLICY-CL-MGT.events.custom.gson",
- "org.onap.policy.controlloop.util.Serialization,gsonPretty");
- final List<TopicSink> noopTopics = TopicEndpointManager.getManager().addTopicSinks(noopSinkProperties);
-
- EventProtocolCoderConstants.getManager().addEncoder(EventProtocolParams.builder()
- .groupId("junit.groupId")
- .artifactId("junit.artifactId")
- .topic("POLICY-CL-MGT")
- .eventClass("org.onap.policy.controlloop.VirtualControlLoopNotification")
- .protocolFilter(new JsonProtocolFilter())
- .modelClassLoaderHash(1111));
- EventProtocolCoderConstants.getManager().addEncoder(EventProtocolParams.builder()
- .groupId("junit.groupId")
- .artifactId("junit.artifactId")
- .topic("APPC-CL")
- .eventClass("org.onap.policy.appc.Request")
- .protocolFilter(new JsonProtocolFilter())
- .modelClassLoaderHash(1111));
-
- try {
- SupportUtil.buildAaiSim();
-
- } catch (Exception e) {
- logger.error("Could not create simulator", e);
- fail("Could not create simulator");
- }
-
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- }
-
- try {
- specifications = new SupportUtil.RuleSpec[2];
-
- specifications[0] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME, POLICY_SCOPE, POLICY_NAME,
- POLICY_VERSION, loadYaml(YAML));
-
- specifications[1] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME_B, POLICY_SCOPE,
- POLICY_NAME_B, POLICY_VERSION, loadYaml(YAML_B));
-
- kieSession = SupportUtil.buildContainer(POLICY_VERSION, specifications);
-
- } catch (IOException e) {
- logger.error("Could not create kieSession", e);
- fail("Could not create kieSession");
- }
- }
-
- /**
- * Tear down.
- */
- @AfterClass
- public static void tearDown() {
- kieSession.dispose();
-
- PolicyEngineConstants.getManager().stop();
- HttpServletServerFactoryInstance.getServerFactory().destroy();
- PolicyControllerConstants.getFactory().shutdown();
- TopicEndpointManager.getManager().shutdown();
-
- if (saveGuardFlag == null) {
- PolicyEngineConstants.getManager().getEnvironment().remove(GUARD_DISABLED);
-
- } else {
- PolicyEngineConstants.getManager().getEnvironment().setProperty(GUARD_DISABLED, saveGuardFlag);
- }
- }
-
- @Ignore
- @Test
- public void test() throws IOException {
-
- /*
- * Let rules create Params objects.
- */
- kieSession.fireAllRules();
-
- injectEvent(CONTROL_LOOP_NAME);
- injectEvent(CONTROL_LOOP_NAME_B);
-
- kieSession.fireAllRules();
- List<Object> facts = getSessionObjects();
-
- // should have events for both control loops
- assertEquals(2 * CL_OBJECTS, facts.size());
- assertTrue(hasEvent(facts, CONTROL_LOOP_NAME));
- assertTrue(hasEvent(facts, CONTROL_LOOP_NAME_B));
-
- logger.info("UPDATING VERSION TO v3.0");
- updatePolicy(YAML2, "v3.0");
-
- /*
- * Let rules update Params objects. The Params for the first set of rules should
- * now be deleted and replaced with a new one, while the Params for the second set
- * should be unchanged.
- */
- kieSession.fireAllRules();
- facts = getSessionObjects();
-
- // should only have event for second control loop + 1 Params for first control loop
- assertEquals(CL_OBJECTS + 1, facts.size());
- assertTrue(hasEvent(facts, CONTROL_LOOP_NAME_B));
-
- // add event for first control loop again
- injectEvent(CONTROL_LOOP_NAME);
- kieSession.fireAllRules();
-
- logger.info("UPDATING VERSION TO v4.0");
- updatePolicy(YAML, "v4.0");
-
- /*
- * Let rules update Params objects. The Params for the first set of rules should
- * now be deleted and replaced with a new one, while the Params for the second set
- * should be unchanged.
- */
- kieSession.fireAllRules();
- facts = getSessionObjects();
-
- // should only have event for second control loop + 1 Params for first control loop
- assertEquals(CL_OBJECTS + 1, facts.size());
- assertTrue(hasEvent(facts, CONTROL_LOOP_NAME_B));
-
- // add event for first control loop again
- injectEvent(CONTROL_LOOP_NAME);
- kieSession.fireAllRules();
-
- logger.info("UPDATING VERSION TO v4.0 (i.e., unchanged)");
- updatePolicy(YAML, "v4.0");
-
- /*
- * Let rules update Params objects. As the version (and YAML) are unchanged for
- * either rule set, both Params objects should be unchanged.
- */
- kieSession.fireAllRules();
- facts = getSessionObjects();
-
- // should have events for both control loops
- assertEquals(2 * CL_OBJECTS, facts.size());
- assertTrue(hasEvent(facts, CONTROL_LOOP_NAME));
- assertTrue(hasEvent(facts, CONTROL_LOOP_NAME_B));
-
- /*
- * Now we'll delete the first rule set. That won't actually have any immediate
- * effect, so then we'll update the second rule set, which should trigger a
- * clean-up of both.
- */
- SupportUtil.RuleSpec[] specs = new SupportUtil.RuleSpec[1];
- specs[0] = specifications[1];
-
- logger.info("UPDATING VERSION TO v5.0 - DELETED RULE SET");
- SupportUtil.updateContainer("v5.0", specs);
-
- specs[0] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME_B, POLICY_SCOPE, POLICY_NAME_B,
- POLICY_VERSION, loadYaml(YAML));
-
- logger.info("UPDATING VERSION TO v6.0 - UPDATED SECOND RULE SET");
- SupportUtil.updateContainer("v6.0", specs);
-
- kieSession.fireAllRules();
- facts = getSessionObjects();
-
- // only 1 Params should remain, for second rule set, but events should be gone
- assertEquals(1, facts.size());
- assertTrue(facts.stream().anyMatch(obj -> obj.toString().startsWith("Params( ")));
- }
-
- /**
- * Updates the policy, changing the YAML associated with the first rule set.
- *
- * @param yamlFile name of the YAML file
- * @param policyVersion policy version
- * @throws IOException if an error occurs
- */
- private static void updatePolicy(String yamlFile, String policyVersion) throws IOException {
-
- specifications[0] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME, POLICY_SCOPE, POLICY_NAME,
- policyVersion, loadYaml(yamlFile));
-
- /*
- * Update the policy within the container.
- */
- SupportUtil.updateContainer(policyVersion, specifications);
- }
-
- /**
- * Loads a YAML file and URL-encodes it.
- *
- * @param yamlFile name of the YAML file
- * @return the contents of the specified file, URL-encoded
- * @throws UnsupportedEncodingException if an error occurs
- */
- private static String loadYaml(String yamlFile) throws UnsupportedEncodingException {
- Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(yamlFile);
- assertNotNull(pair);
- assertNotNull(pair.first);
- assertNotNull(pair.first.getControlLoop());
- assertNotNull(pair.first.getControlLoop().getControlLoopName());
- assertTrue(pair.first.getControlLoop().getControlLoopName().length() > 0);
-
- return URLEncoder.encode(pair.second, "UTF-8");
- }
-
- /**
- * Gets the session objects.
- *
- * @return the session objects
- */
- private static List<Object> getSessionObjects() {
- // sort the objects so we know the order
- LinkedList<Object> lst = new LinkedList<>(kieSession.getObjects());
- lst.sort((left, right) -> left.toString().compareTo(right.toString()));
-
- lst.forEach(obj -> logger.info("obj={}", obj));
-
- return lst;
- }
-
- /**
- * Injects an ONSET event into the rule engine.
- *
- * @param controlLoopName the control loop name
- */
- private void injectEvent(String controlLoopName) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-
- event.setClosedLoopControlName(controlLoopName);
-
- UUID reqid = UUID.randomUUID();
- event.setRequestId(reqid);
-
- event.setTarget("generic-vnf.vnf-id");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-id", "vnf-" + reqid.toString());
- event.getAai().put(ControlLoopEventManager.GENERIC_VNF_IS_CLOSED_LOOP_DISABLED, "false");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
-
- kieSession.insert(event);
- }
-
- /**
- * Determines if the facts contain an event for the given control loop.
- *
- * @param facts session facts to be checked
- * @param controlLoopName name of the control loop of interest
- * @return {@code true} if the facts contain an event for the given control loop,
- * {@code false} otherwise
- */
- private boolean hasEvent(List<Object> facts, String controlLoopName) {
- return (facts.stream().anyMatch(obj -> obj instanceof VirtualControlLoopEvent
- && controlLoopName.equals(((VirtualControlLoopEvent) obj).getClosedLoopControlName())));
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopFailureTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopFailureTest.java
deleted file mode 100644
index e3409146f..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopFailureTest.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.appclcm.AppcLcmBody;
-import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
-import org.onap.policy.appclcm.AppcLcmInput;
-import org.onap.policy.appclcm.AppcLcmOutput;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-
-public class ControlLoopFailureTest extends ControlLoopBase implements TopicListener {
-
- private UUID requestId2;
- private UUID requestId3;
- private int eventCount;
- private int nsuccess = 0;
- private int nreject = 0;
-
- /**
- * Setup simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources"
- + "/src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vCPE.yaml",
- "service=ServiceDemo;resource=Res1Demo;type=operational",
- "CL_vCPE",
- "org.onap.closed_loop.ServiceDemo:VNFS:1.0.0");
- }
-
- /**
- * This test case tests the scenario where 3 events occur and 2 of the requests refer to the
- * same target entity while the 3rd is for another entity. The expected result is that the event
- * with the duplicate target entity will have a final success result for one of the events, and
- * a rejected message for the one that was unable to obtain the lock. The event that is
- * referring to a different target entity should be able to obtain a lock since it is a
- * different target. After processing of all events there should only be the params object left
- * in memory.
- */
- @Test
- public void targetLockedTest() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * This will be a unique request for another target entity
- */
- requestId2 = UUID.randomUUID();
-
- /*
- * This will be a request duplicating the target entity of the first request
- */
- requestId3 = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "vnf01");
-
- /*
- * Send a second event for a different target to ensure there are no problems with obtaining
- * a lock
- */
- sendEvent(pair.first, requestId2, ControlLoopEventStatus.ONSET, "vnf02");
-
- /*
- * Send a third event requesting an action for a duplicate target entity
- */
- sendEvent(pair.first, requestId3, ControlLoopEventStatus.ONSET, "vnf01");
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- // should be one success and one failure for vnf01
- assertEquals(1, nsuccess);
- assertEquals(1, nreject);
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public synchronized void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- } else if ("APPC-LCM-READ".equals(topic)) {
- obj = org.onap.policy.appclcm.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.appclcm.AppcLcmDmaapWrapper.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("DENIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.REJECTED.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().contains("is already locked"));
- if (requestId.equals(notification.getRequestId()) || requestId3.equals(notification.getRequestId())) {
- ++nreject;
- }
- if (++eventCount == 3) {
- kieSession.halt();
- }
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=APPC"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("APPC.LCM.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=APPC"));
- if (requestId.equals(notification.getRequestId()) || requestId3.equals(notification.getRequestId())) {
- sendEvent(pair.first, notification.getRequestId(), ControlLoopEventStatus.ABATED, "vnf01");
- } else if (requestId2.equals(notification.getRequestId())) {
- sendEvent(pair.first, requestId2, ControlLoopEventStatus.ABATED, "vnf02");
- }
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if (requestId.equals(notification.getRequestId()) || requestId3.equals(notification.getRequestId())) {
- assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.getNotification()));
- ++nsuccess;
- } else {
- assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.getNotification()));
- }
- if (++eventCount == 3) {
- kieSession.halt();
- }
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof AppcLcmDmaapWrapper) {
- /*
- * The request should be of type LCMRequestWrapper and the subrequestid should be 1
- */
- AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) obj;
- AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
- assertTrue(appcRequest.getCommonHeader().getSubRequestId().equals("1"));
-
- logger.debug("\n============ APPC received the request!!! ===========\n");
-
- /*
- * Simulate a success response from APPC and insert the response into the working memory
- */
- AppcLcmDmaapWrapper dmaapResponse = new AppcLcmDmaapWrapper();
- AppcLcmOutput appcResponse = new AppcLcmOutput(appcRequest);
- appcResponse.getStatus().setCode(400);
- appcResponse.getStatus().setMessage("AppC success");
- dmaapResponse.setBody(new AppcLcmBody());
- dmaapResponse.getBody().setOutput(appcResponse);
-
- /*
- * Interrupting with a different request for the same target entity to check if lock
- * will be denied
- */
- if (requestId.equals(appcResponse.getCommonHeader().getRequestId())) {
- sendEvent(pair.first, requestId3, ControlLoopEventStatus.ONSET, "vnf01");
- }
- kieSession.insert(dmaapResponse);
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- * @param target the target entity to take an action on
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status, String target) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-id");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-id", target);
- event.getAai().put("vserver.vserver-name", "OzVServer");
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopParamsCleanupTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopParamsCleanupTest.java
deleted file mode 100644
index ae12d0469..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopParamsCleanupTest.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2018-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.kie.api.runtime.KieSession;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.drools.utils.logging.LoggerUtil;
-import org.onap.policy.template.demo.SupportUtil.Pair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Verifies that Params objects are cleaned up when rules are updated. This loads
- * <b>two</b> copies of the rule set into a single policy to ensure that the two copies
- * interact appropriately with each other's Params objects.
- */
-public class ControlLoopParamsCleanupTest {
- private static final Logger logger = LoggerFactory.getLogger(ControlLoopParamsCleanupTest.class);
-
- private static final String YAML = "src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test.yaml";
-
- /**
- * YAML to be used when the first rule set is updated.
- */
- private static final String YAML2 = "src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test2.yaml";
-
- private static final String POLICY_VERSION = "v2.0";
-
- private static final String POLICY_NAME = "CL_CleanupTest";
-
- private static final String POLICY_SCOPE = "type=operational";
-
- private static final String CONTROL_LOOP_NAME = "ControlLoop-Params-Cleanup-Test";
-
- private static final String DROOLS_TEMPLATE = "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl";
-
- // values specific to the second copy of the rules
-
- private static final String YAML_B = "src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test-B.yaml";
- private static final String POLICY_NAME_B = "CL_CleanupTest_B";
- private static final String CONTROL_LOOP_NAME_B = "ControlLoop-Params-Cleanup-Test-B";
-
- private static KieSession kieSession;
- private static SupportUtil.RuleSpec[] specifications;
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpSimulator() {
- LoggerUtil.setLevel(LoggerUtil.ROOT_LOGGER, "INFO");
-
- try {
- specifications = new SupportUtil.RuleSpec[2];
-
- specifications[0] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME, POLICY_SCOPE, POLICY_NAME,
- POLICY_VERSION, loadYaml(YAML));
-
- specifications[1] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME_B, POLICY_SCOPE,
- POLICY_NAME_B, POLICY_VERSION, loadYaml(YAML_B));
-
- kieSession = SupportUtil.buildContainer(POLICY_VERSION, specifications);
-
- } catch (IOException e) {
- logger.error("Could not create kieSession", e);
- fail("Could not create kieSession");
- }
- }
-
- /**
- * Tear down.
- */
- @AfterClass
- public static void tearDown() {
- kieSession.dispose();
- }
-
- @Ignore
- @Test
- public void test() throws IOException {
-
- /*
- * Let rules create Params objects. There should be one object for each set of
- * rules.
- */
- kieSession.fireAllRules();
- List<Object> facts = getSessionObjects();
- assertEquals(specifications.length, facts.size());
- Iterator<Object> iter = facts.iterator();
-
- final Object fact1 = iter.next();
- assertTrue(fact1.toString().contains(loadYaml(YAML)));
-
- final Object fact1b = iter.next();
- assertTrue(fact1b.toString().contains(loadYaml(YAML_B)));
-
- logger.info("UPDATING VERSION TO v3.0");
- updatePolicy(YAML2, "v3.0");
-
- /*
- * Let rules update Params objects. The Params for the first set of rules should
- * now be deleted and replaced with a new one, while the Params for the second set
- * should be unchanged.
- */
- kieSession.fireAllRules();
- facts = getSessionObjects();
- assertEquals(specifications.length, facts.size());
- iter = facts.iterator();
-
- final Object fact2 = iter.next();
- assertTrue(fact2 != fact1);
- assertTrue(fact2 != fact1b);
- assertTrue(fact2.toString().contains(loadYaml(YAML2)));
-
- assertTrue(iter.next() == fact1b);
-
- logger.info("UPDATING VERSION TO v4.0");
- updatePolicy(YAML, "v4.0");
-
- /*
- * Let rules update Params objects. The Params for the first set of rules should
- * now be deleted and replaced with a new one, while the Params for the second set
- * should be unchanged.
- */
- kieSession.fireAllRules();
- facts = getSessionObjects();
- assertEquals(specifications.length, facts.size());
- iter = facts.iterator();
-
- final Object fact3 = iter.next();
- assertTrue(fact3.toString().contains(loadYaml(YAML)));
- assertTrue(fact3 != fact2);
- assertTrue(fact3 != fact1b);
-
- assertTrue(iter.next() == fact1b);
-
- logger.info("UPDATING VERSION TO v4.0 (i.e., unchanged)");
- updatePolicy(YAML, "v4.0");
-
- /*
- * Let rules update Params objects. As the version (and YAML) are unchanged for
- * either rule set, both Params objects should be unchanged.
- */
- kieSession.fireAllRules();
- facts = getSessionObjects();
- assertEquals(specifications.length, facts.size());
- iter = facts.iterator();
- assertTrue(iter.next() == fact3);
- assertTrue(iter.next() == fact1b);
-
- /*
- * Now we'll delete the first rule set. That won't actually have any immediate
- * effect, so then we'll update the second rule set, which should trigger a
- * clean-up of both.
- */
- SupportUtil.RuleSpec[] specs = new SupportUtil.RuleSpec[1];
- specs[0] = specifications[1];
-
- logger.info("UPDATING VERSION TO v5.0 - DELETED RULE SET");
- SupportUtil.updateContainer("v5.0", specs);
-
- specs[0] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME_B, POLICY_SCOPE, POLICY_NAME_B,
- POLICY_VERSION, loadYaml(YAML));
-
- logger.info("UPDATING VERSION TO v6.0 - UPDATED SECOND RULE SET");
- SupportUtil.updateContainer("v6.0", specs);
-
- kieSession.fireAllRules();
- facts = getSessionObjects();
- assertEquals(specs.length, facts.size());
- iter = facts.iterator();
- assertTrue(iter.next().toString().contains(CONTROL_LOOP_NAME_B));
- }
-
- /**
- * Updates the policy, changing the YAML associated with the first rule set.
- *
- * @param yamlFile name of the YAML file
- * @param policyVersion policy version
- * @throws IOException if an error occurs
- */
- private static void updatePolicy(String yamlFile, String policyVersion) throws IOException {
-
- specifications[0] = new SupportUtil.RuleSpec(DROOLS_TEMPLATE, CONTROL_LOOP_NAME, POLICY_SCOPE, POLICY_NAME,
- policyVersion, loadYaml(yamlFile));
-
- /*
- * Update the policy within the container.
- */
- SupportUtil.updateContainer(policyVersion, specifications);
- }
-
- /**
- * Loads a YAML file and URL-encodes it.
- *
- * @param yamlFile name of the YAML file
- * @return the contents of the specified file, URL-encoded
- * @throws UnsupportedEncodingException if an error occurs
- */
- private static String loadYaml(String yamlFile) throws UnsupportedEncodingException {
- Pair<ControlLoopPolicy, String> pair = SupportUtil.loadYaml(yamlFile);
- assertNotNull(pair);
- assertNotNull(pair.first);
- assertNotNull(pair.first.getControlLoop());
- assertNotNull(pair.first.getControlLoop().getControlLoopName());
- assertTrue(pair.first.getControlLoop().getControlLoopName().length() > 0);
-
- return URLEncoder.encode(pair.second, "UTF-8");
- }
-
- /**
- * Gets the session objects.
- *
- * @return the session objects
- */
- private static List<Object> getSessionObjects() {
- // sort the objects so we know the order
- LinkedList<Object> lst = new LinkedList<>(kieSession.getObjects());
- lst.sort((left, right) -> left.toString().compareTo(right.toString()));
-
- return lst;
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/SupportUtil.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/SupportUtil.java
deleted file mode 100644
index 878f94be1..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/SupportUtil.java
+++ /dev/null
@@ -1,460 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Bell Canada.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.fail;
-
-import com.att.research.xacml.util.XACMLProperties;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import org.apache.commons.io.IOUtils;
-import org.kie.api.KieServices;
-import org.kie.api.builder.KieBuilder;
-import org.kie.api.builder.KieFileSystem;
-import org.kie.api.builder.Message;
-import org.kie.api.builder.ReleaseId;
-import org.kie.api.builder.Results;
-import org.kie.api.runtime.KieContainer;
-import org.kie.api.runtime.KieSession;
-import org.onap.policy.common.endpoints.http.server.HttpServletServer;
-import org.onap.policy.common.utils.network.NetworkUtil;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.controlloop.policy.guard.ControlLoopGuard;
-import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.onap.policy.guard.PolicyGuardYamlToXacml;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.Constructor;
-
-public final class SupportUtil {
-
- private static final String OPSHISTPUPROP = "OperationsHistoryPU";
- private static final Logger logger = LoggerFactory.getLogger(SupportUtil.class);
-
- static final int GRPC_SERVER_PORT;
-
- static {
- try {
- GRPC_SERVER_PORT = NetworkUtil.allocPort();
- } catch (IOException e) {
- throw new RuntimeException("Socket cannot be created for grpc server port", e);
- }
- }
-
- public static class Pair<A, B> {
- public final A first;
- public final B second;
-
- public Pair(A first, B second) {
- this.first = first;
- this.second = second;
- }
- }
-
- // values from the last call to buildContainer()
-
- private static KieServices kieServices;
- private static KieContainer keyContainer;
-
- /**
- * Load YAML.
- *
- * @param testFile test file to load
- * @return the Pair of a policy and the yaml contents
- */
- public static Pair<ControlLoopPolicy, String> loadYaml(String testFile) {
- try (InputStream is = new FileInputStream(new File(testFile))) {
- String contents = IOUtils.toString(is, StandardCharsets.UTF_8);
- //
- // Read the yaml into our Java Object
- //
- Yaml yaml = new Yaml(new Constructor(ControlLoopPolicy.class));
- Object obj = yaml.load(contents);
-
- logger.debug(contents);
-
- return new Pair<ControlLoopPolicy, String>((ControlLoopPolicy) obj, contents);
- } catch (FileNotFoundException e) {
- fail(e.getLocalizedMessage());
- } catch (IOException e) {
- fail(e.getLocalizedMessage());
- }
- return null;
- }
-
- /**
- * Load the YAML guard policy.
- *
- * @param testFile the test file to load
- * @return return the guard object
- */
- public static ControlLoopGuard loadYamlGuard(String testFile) {
- try (InputStream is = new FileInputStream(new File(testFile))) {
- String contents = IOUtils.toString(is, StandardCharsets.UTF_8);
- //
- // Read the yaml into our Java Object
- //
- Yaml yaml = new Yaml(new Constructor(ControlLoopGuard.class));
- Object obj = yaml.load(contents);
- return (ControlLoopGuard) obj;
- } catch (FileNotFoundException e) {
- fail(e.getLocalizedMessage());
- } catch (IOException e) {
- fail(e.getLocalizedMessage());
- }
- return null;
- }
-
- public static HttpServletServer buildAaiSim() throws InterruptedException, IOException {
- return org.onap.policy.simulators.Util.buildAaiSim();
- }
-
- public static HttpServletServer buildSoSim() throws InterruptedException, IOException {
- return org.onap.policy.simulators.Util.buildSoSim();
- }
-
- public static HttpServletServer buildVfcSim() throws InterruptedException, IOException {
- return org.onap.policy.simulators.Util.buildVfcSim();
- }
-
- public static HttpServletServer buildGuardSim() throws InterruptedException, IOException {
- return org.onap.policy.simulators.Util.buildGuardSim();
- }
-
- public static HttpServletServer buildSdncSim() throws InterruptedException, IOException {
- return org.onap.policy.simulators.Util.buildSdncSim();
- }
-
- /**
- * Build a container containing a single set of rules.
- *
- * @param droolsTemplate template
- * @param closedLoopControlName control loop id
- * @param policyScope policy scope
- * @param policyName policy name
- * @param policyVersion policy version
- * @param yamlSpecification incoming yaml specification
- * @return the Kie session
- * @throws IOException if the container cannot be built
- */
- public static KieSession buildContainer(String droolsTemplate, String closedLoopControlName,
- String policyScope, String policyName, String policyVersion, String yamlSpecification)
- throws IOException {
-
- RuleSpec spec = new RuleSpec(droolsTemplate, closedLoopControlName, policyScope, policyName,
- policyVersion, yamlSpecification);
-
- return buildContainer(policyVersion, new RuleSpec[] {spec});
- }
-
- /**
- * Build a container containing all of the specified rules.
- *
- * @param policyVersion policy version
- * @param specifications rule specifications
- * @return the Kie session
- * @throws IOException if the container cannot be built
- */
- public static KieSession buildContainer(String policyVersion, RuleSpec[] specifications)
- throws IOException {
- //
- // Get our Drools Kie factory
- //
- kieServices = KieServices.Factory.get();
-
- ReleaseId releaseId = buildPolicy(policyVersion, specifications);
- logger.debug(releaseId.toString());
-
- //
- // Create our kie Session and container
- //
- keyContainer = kieServices.newKieContainer(releaseId);
-
- return setupSession(keyContainer.newKieSession());
- }
-
- /**
- * Update the container with new rules.
- *
- * @param policyVersion new policy version
- * @param specifications new rule specifications
- * @throws IOException if the container cannot be built
- */
- public static void updateContainer(String policyVersion, RuleSpec[] specifications)
- throws IOException {
- ReleaseId releaseId = buildPolicy(policyVersion, specifications);
- logger.debug(releaseId.toString());
-
- keyContainer.updateToVersion(releaseId);
- }
-
- /**
- * Build the Policy so it can be loaded into a KIE container.
- *
- * @param policyVersion policy version
- * @param specifications rule specifications
- * @return the release
- * @throws IOException if the container cannot be built
- */
- private static ReleaseId buildPolicy(String policyVersion, RuleSpec[] specifications)
- throws IOException {
- //
- // Generate our drools rule from our template
- //
- KieFileSystem kfs = kieServices.newKieFileSystem();
- ReleaseId releaseId = kieServices.getRepository().getDefaultReleaseId();
- releaseId = kieServices.newReleaseId(releaseId.getGroupId(), releaseId.getArtifactId(),
- policyVersion);
-
- kfs.generateAndWritePomXML(releaseId);
-
- for (RuleSpec spec : specifications) {
- String drlContents = spec.generateRules();
- kfs.write("src/main/resources/" + spec.policyName + ".drl",
- kieServices.getResources().newByteArrayResource(drlContents.getBytes()));
- }
-
- //
- // Compile the rule
- //
- KieBuilder builder = kieServices.newKieBuilder(kfs).buildAll();
- Results results = builder.getResults();
- if (results.hasMessages(Message.Level.ERROR)) {
- for (Message msg : results.getMessages()) {
- logger.error(msg.toString());
- }
- throw new RuntimeException("Drools Rule has Errors");
- }
- for (Message msg : results.getMessages()) {
- logger.debug(msg.toString());
- }
-
- return releaseId;
- }
-
- private static KieSession setupSession(KieSession kieSession) {
-
- //
- // Create XACML Guard policy from YAML
- // We prepare 4 Guards. Notice that Rebuilds recipe has two Guards (for checking policy
- // combining algorithm)
- //
- PolicyGuardYamlToXacml.fromYamlToXacml(
- "src/test/resources/yaml/policy_guard_appc_restart.yaml",
- "src/main/resources/frequency_limiter_template.xml",
- "src/test/resources/xacml/autogenerated_frequency_limiter_restart.xml");
-
- PolicyGuardYamlToXacml.fromYamlToXacml(
- "src/test/resources/yaml/policy_guard_appc_rebuild.yaml",
- "src/main/resources/frequency_limiter_template.xml",
- "src/test/resources/xacml/autogenerated_frequency_limiter_rebuild.xml");
-
- PolicyGuardYamlToXacml.fromYamlToXacml(
- "src/test/resources/yaml/policy_guard_appc_rebuild_1.yaml",
- "src/main/resources/frequency_limiter_template.xml",
- "src/test/resources/xacml/autogenerated_frequency_limiter_rebuild_1.xml");
-
- PolicyGuardYamlToXacml.fromYamlToXacml(
- "src/test/resources/yaml/policy_guard_appc_migrate.yaml",
- "src/main/resources/frequency_limiter_template.xml",
- "src/test/resources/xacml/autogenerated_frequency_limiter_migrate.xml");
-
- PolicyGuardYamlToXacml.fromYamlToXacml(
- "src/test/resources/yaml/policy_guard_appc_modifyconfig.yaml",
- "src/main/resources/frequency_limiter_template.xml",
- "src/test/resources/xacml/autogenerated_frequency_limiter_modifyconfig.xml");
-
- PolicyGuardYamlToXacml.fromYamlToXacmlBlacklist(
- "src/test/resources/yaml/policy_guard_appc_restart_blacklist.yaml",
- "src/main/resources/blacklist_template.xml",
- "src/test/resources/xacml/autogenerated_blacklist.xml");
-
- //
- // Creating an embedded XACML PDP
- //
- System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,
- "src/test/resources/xacml/xacml_guard.properties");
-
- return kieSession;
- }
-
- /**
- * Set the A&AI properties.
- */
- public static void setAaiProps() {
- PolicyEngineConstants.getManager().setEnvironmentProperty("aai.url",
- "http://localhost:6666");
- PolicyEngineConstants.getManager().setEnvironmentProperty("aai.username", "AAI");
- PolicyEngineConstants.getManager().setEnvironmentProperty("aai.password", "AAI");
- }
-
- /**
- * Set the SO properties.
- */
- public static void setSoProps() {
- PolicyEngineConstants.getManager().setEnvironmentProperty("so.url",
- "http://localhost:6667");
- PolicyEngineConstants.getManager().setEnvironmentProperty("so.username", "SO");
- PolicyEngineConstants.getManager().setEnvironmentProperty("so.password", "SO");
- }
-
- /**
- * Set the SDNC properties.
- */
- public static void setSdncProps() {
- PolicyEngineConstants.getManager().setEnvironmentProperty("sdnc.url",
- "http://localhost:6670/restconf/operations");
- PolicyEngineConstants.getManager().setEnvironmentProperty("sdnc.username", "sdnc");
- PolicyEngineConstants.getManager().setEnvironmentProperty("sdnc.password", "sdnc");
- }
-
- /**
- * Set the Guard properties.
- */
- public static void setGuardProps() {
- /*
- * Guard PDP-x connection Properties
- */
- PolicyEngineConstants.getManager().setEnvironmentProperty(
- org.onap.policy.guard.Util.PROP_GUARD_URL,
- "http://localhost:6669/policy/pdpx/v1/decision");
- PolicyEngineConstants.getManager()
- .setEnvironmentProperty(org.onap.policy.guard.Util.PROP_GUARD_USER, "python");
- PolicyEngineConstants.getManager()
- .setEnvironmentProperty(org.onap.policy.guard.Util.PROP_GUARD_PASS, "test");
- PolicyEngineConstants.getManager()
- .setEnvironmentProperty(org.onap.policy.guard.Util.PROP_GUARD_DISABLED, "false");
- }
-
- /**
- * Sets the value of customQuery Environment property.
- *
- * @param value of the custom query boolean.
- */
- public static void setCustomQuery(String value) {
- PolicyEngineConstants.getManager().setEnvironmentProperty("aai.customQuery", value);
- }
-
- /**
- * Set the VFC properties.
- */
- public static void setVfcProps() {
- PolicyEngineConstants.getManager().setEnvironmentProperty("vfc.url",
- "http://localhost:6668/api/nslcm/v1");
- PolicyEngineConstants.getManager().setEnvironmentProperty("vfc.username", "VFC");
- PolicyEngineConstants.getManager().setEnvironmentProperty("vfc.password", "VFC");
- }
-
- /**
- * Set the operation history properties.
- */
- public static void setPuProp() {
- System.setProperty(OPSHISTPUPROP, "OperationsHistoryPUTest");
- }
-
- /**
- * Set cds properties.
- */
- public static void setCdsProps() {
- PolicyEngineConstants.getManager().setEnvironmentProperty("cds.grpcHost", "localhost");
- PolicyEngineConstants.getManager().setEnvironmentProperty("cds.grpcPort", Integer.toString(GRPC_SERVER_PORT));
- PolicyEngineConstants.getManager().setEnvironmentProperty("cds.grpcUsername", "grpc-username");
- PolicyEngineConstants.getManager().setEnvironmentProperty("cds.grpcPassword", "grpc-password");
- PolicyEngineConstants.getManager().setEnvironmentProperty("cds.grpcTimeout", "5");
- }
-
- /**
- * Rule specification.
- */
- public static class RuleSpec {
- private String droolsTemplate;
- private String closedLoopControlName;
- private String policyScope;
- private String policyName;
- private String policyVersion;
- private String yamlSpecification;
-
- /**
- * Constructs the object.
- *
- * @param droolsTemplate template
- * @param closedLoopControlName control loop id
- * @param policyScope policy scope
- * @param policyName policy name
- * @param policyVersion policy version
- * @param yamlSpecification incoming yaml specification
- */
- public RuleSpec(String droolsTemplate, String closedLoopControlName, String policyScope,
- String policyName, String policyVersion, String yamlSpecification) {
-
- this.droolsTemplate = droolsTemplate;
- this.closedLoopControlName = closedLoopControlName;
- this.policyScope = policyScope;
- this.policyName = policyName;
- this.policyVersion = policyVersion;
- this.yamlSpecification = yamlSpecification;
- }
-
- /**
- * Generates the rules by reading the template and making variable substitutions.
- *
- * @return the rules
- * @throws IOException if an error occurs
- */
- private String generateRules() throws IOException {
- Path rule = Paths.get(droolsTemplate);
- String ruleTemplate = new String(Files.readAllBytes(rule));
-
- Pattern pattern = Pattern.compile("\\$\\{closedLoopControlName\\}");
- Matcher matcher = pattern.matcher(ruleTemplate);
- ruleTemplate = matcher.replaceAll(closedLoopControlName);
-
- pattern = Pattern.compile("\\$\\{policyScope\\}");
- matcher = pattern.matcher(ruleTemplate);
- ruleTemplate = matcher.replaceAll(policyScope);
-
- pattern = Pattern.compile("\\$\\{policyName\\}");
- matcher = pattern.matcher(ruleTemplate);
- ruleTemplate = matcher.replaceAll(policyName);
-
- pattern = Pattern.compile("\\$\\{policyVersion\\}");
- matcher = pattern.matcher(ruleTemplate);
- ruleTemplate = matcher.replaceAll(policyVersion);
-
- pattern = Pattern.compile("\\$\\{controlLoopYaml\\}");
- matcher = pattern.matcher(ruleTemplate);
- ruleTemplate = matcher.replaceAll(yamlSpecification);
-
- return ruleTemplate;
- }
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VcpeControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VcpeControlLoopTest.java
deleted file mode 100644
index e0cb0ef1f..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VcpeControlLoopTest.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-import org.onap.policy.appclcm.AppcLcmBody;
-import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
-import org.onap.policy.appclcm.AppcLcmInput;
-import org.onap.policy.appclcm.AppcLcmOutput;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class VcpeControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources"
- + "/src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vCPE.yaml",
- "service=ServiceDemo;resource=Res1Demo;type=operational", "CL_vCPE",
- "org.onap.closed_loop.ServiceDemo:VNFS:1.0.0");
- }
-
- @Test
- public void testASuccess() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "OzVServer", true);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testBAaiGetFail() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "getFail", false);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- } else if ("APPC-LCM-READ".equals(topic)) {
- obj = org.onap.policy.appclcm.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.appclcm.AppcLcmDmaapWrapper.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=APPC"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("APPC.LCM.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS
- .equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=APPC"));
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ABATED);
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("getFail".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE,
- notification.getNotification());
- kieSession.halt();
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS,
- notification.getNotification());
- kieSession.halt();
- }
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof AppcLcmDmaapWrapper) {
- /*
- * The request should be of type LcmRequestWrapper and the subrequestid should be 1
- */
- AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) obj;
- AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
- assertTrue(appcRequest.getCommonHeader().getSubRequestId().equals("1"));
- assertNotNull(appcRequest.getActionIdentifiers().get("vnf-id"));
-
- logger.debug("\n============ APPC received the request!!! ===========\n");
-
- /*
- * Simulate a success response from APPC and insert the response into the working memory
- */
- AppcLcmDmaapWrapper dmaapResponse = new AppcLcmDmaapWrapper();
- AppcLcmOutput appcResponse = new AppcLcmOutput(appcRequest);
- appcResponse.getStatus().setCode(400);
- appcResponse.getStatus().setMessage("AppC success");
- dmaapResponse.setBody(new AppcLcmBody());
- dmaapResponse.getBody().setOutput(appcResponse);
-
- kieSession.insert(dmaapResponse);
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId,
- ControlLoopEventStatus status) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-name");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-name", "testGenericVnfName");
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId,
- ControlLoopEventStatus status, String vnfName, boolean isEnriched) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-name", vnfName);
- event.getAai().put("vserver.vserver-name", vnfName);
- if (isEnriched) {
- event.getAai().put("generic-vnf.in-maint", "false");
- event.getAai().put("generic-vnf.is-closed-loop-disabled", "false");
- event.getAai().put("generic-vnf.orchestration-status", "Created");
- event.getAai().put("generic-vnf.prov-status", "ACTIVE");
- event.getAai().put("generic-vnf.resource-version", "1");
- event.getAai().put("generic-vnf.service-id", "e8cb8968-5411-478b-906a-f28747de72cd");
- event.getAai().put("generic-vnf.vnf-id", "63b31229-9a3a-444f-9159-04ce2dca3be9");
- event.getAai().put("generic-vnf.vnf-type", "vCPEInfraService10/vCPEInfraService10 0");
- }
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopCqTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopCqTest.java
deleted file mode 100644
index 88c9e6ef7..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopCqTest.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.so.SoRequest;
-
-public class VdnsControlLoopCqTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_SO_Cq-test.yaml", "type=operational",
- "CL_vDNS", "v2.0");
- SupportUtil.setCustomQuery("true");
- }
-
- @Test
- public void testSuccess() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testAaiGetFail() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "getFail");
-
- try {
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail(e.getMessage());
- }
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(
- ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SO"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("SO.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS
- .equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SO"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("error".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE,
- notification.getNotification());
- } else if ("getFail".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE,
- notification.getNotification());
- } else {
- assertTrue(ControlLoopNotificationType.FINAL_SUCCESS
- .equals(notification.getNotification()));
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof SoRequest) {
- logger.debug("\n============ SO received the request!!! ===========\n");
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId,
- ControlLoopEventStatus status) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("vserver.vserver-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("vserver.vserver-name", "OzVServer");
- event.getAai().put("vserver.is-closed-loop-disabled", "false");
- event.getAai().put("vserver.prov-status", "ACTIVE");
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId,
- ControlLoopEventStatus status, String vserverName) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("vserver.vserver-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("vserver.vserver-name", vserverName);
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopTest.java
deleted file mode 100644
index b7b034a9c..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VdnsControlLoopTest.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.so.SoRequest;
-
-public class VdnsControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_SO-test.yaml",
- "type=operational",
- "CL_vDNS",
- "v2.0");
- }
-
- @Test
- public void testSuccessTest() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testNamedQueryFail() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "error");
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testAaiGetFail() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "getFail");
-
- try {
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail(e.getMessage());
- }
-
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SO"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("SO.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SO"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("error".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else if ("getFail".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else {
- assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.getNotification()));
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof SoRequest) {
- logger.debug("\n============ SO received the request!!! ===========\n");
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("vserver.vserver-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("vserver.vserver-name", "OzVServer");
- event.getAai().put("vserver.is-closed-loop-disabled", "false");
- event.getAai().put("vserver.prov-status", "ACTIVE");
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status,
- String vserverName) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("vserver.vserver-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("vserver.vserver-name", vserverName);
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfcControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfcControlLoopTest.java
deleted file mode 100644
index 4f472a07b..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfcControlLoopTest.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017-2018 Intel Corp. All rights reserved.
- * Modifications Copyright (C) 2018-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.vfc.VfcRequest;
-
-
-public class VfcControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources/"
- + "src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_VFC.yaml",
- "type=operational",
- "CL_VoLTE",
- "v2.0");
- }
-
- @Test
- public void testSuccess() throws IOException {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testNullRequest() throws IOException {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
-
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(pair.first.getControlLoop().getControlLoopName());
- event.setRequestId(UUID.randomUUID());
- event.setClosedLoopEventClient("tca.instance00009");
- event.setTargetType(ControlLoopTargetType.VM);
- event.setTarget("vserver.vserver-name");
- event.setFrom("DCAE");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<String, String>());
- event.getAai().put("vserver.vserver-name", "nullRequest");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- kieSession.insert(event);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=VFC"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("VFC.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=VFC"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("nullRequest".equals(notification.getAai().get("vserver.vserver-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.getNotification());
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof VfcRequest) {
- logger.debug("\n============ VFC received the request!!! ===========\n");
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(UUID.randomUUID());
- event.setClosedLoopEventClient("tca.instance00009");
- event.setTargetType(ControlLoopTargetType.VM);
- event.setTarget("vserver.vserver-name");
- event.setFrom("DCAE");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<String, String>());
- event.getAai().put("vserver.vserver-name", "vserver-name-16102016-aai3255-data-11-1");
- event.getAai().put("vserver.vserver-id", "vserver-id-16102016-aai3255-data-11-1");
- event.getAai().put("generic-vnf.vnf-id", "vnf-id-16102016-aai3255-data-11-1");
- event.getAai().put("service-instance.service-instance-id", "service-instance-id-16102016-aai3255-data-11-1");
- event.getAai().put("vserver.is-closed-loop-disabled", "false");
- event.getAai().put("vserver.prov-status", "ACTIVE");
- event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopCdsTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopCdsTest.java
deleted file mode 100644
index c480db71e..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopCdsTest.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Bell Canada.
- * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import io.grpc.Server;
-import io.grpc.ServerBuilder;
-import io.grpc.stub.StreamObserver;
-
-import java.io.IOException;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader;
-import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType;
-import org.onap.ccsdk.cds.controllerblueprints.common.api.Status;
-import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc;
-import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
-import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.controlloop.util.Serialization;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Test class for vfirewall use case using CDS actor.
- */
-public class VfwControlLoopCdsTest extends ControlLoopBase implements TopicListener {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(VfwControlLoopCdsTest.class);
-
- private final AtomicReference<StreamObserver<ExecutionServiceOutput>> responseObserverRef = new AtomicReference<>();
- private Server server;
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass("../archetype-cl-amsterdam/src/main/resources/archetype-resources/src/"
- + "main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vFW_CDS.yaml",
- "service=ServiceDemo;resource=Res1Demo;type=operational", "CL_vFW",
- "org.onap.closed_loop.ServiceDemo:VNFS:1.0.0");
- SupportUtil.setCustomQuery("true");
- }
-
- @Before
- public void setUp() throws IOException {
- this.startGrpcServer();
- }
-
- @After
- public void tearDown() {
- this.stopGrpcServer();
- }
-
- private void startGrpcServer() throws IOException {
-
- BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase cdsBlueprintServerImpl =
-
- new BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase() {
-
- @Override
- public StreamObserver<ExecutionServiceInput> process(
- final StreamObserver<ExecutionServiceOutput> responseObserver) {
-
- responseObserverRef.set(responseObserver);
-
- return new StreamObserver<ExecutionServiceInput>() {
- @Override
- public void onNext(final ExecutionServiceInput input) {
- LOGGER.info("gRPC server onNext() for input: {} ...", input);
- ExecutionServiceOutput output =
- ExecutionServiceOutput.newBuilder()
- .setCommonHeader(
- CommonHeader.newBuilder().setRequestId(
- input.getCommonHeader().getRequestId()).build())
- .setStatus(
- Status.newBuilder().setEventType(
- EventType.EVENT_COMPONENT_EXECUTED).build())
- .build();
- responseObserver.onNext(output);
- }
-
- @Override
- public void onError(final Throwable throwable) {
- LOGGER.error("gRPC server onError() for throwable: {} ...", throwable);
- }
-
- @Override
- public void onCompleted() {
- LOGGER.info("gRPC server onCompleted() ...");
- responseObserver.onCompleted();
- }
- };
- }
- };
-
- server = ServerBuilder.forPort(SupportUtil.GRPC_SERVER_PORT).addService(cdsBlueprintServerImpl).build().start();
- LOGGER.info("gRPC server is listening for CDS requests on port {}", SupportUtil.GRPC_SERVER_PORT);
-
- }
-
- private void stopGrpcServer() {
- if (server != null) {
- this.server.shutdown();
- LOGGER.info("gRPC server handling CDS requests has been successfully shut down.");
- }
- }
-
- @Test
- public void testSuccess() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET);
-
- kieSession.fireUntilHalt();
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
-
- /*
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNotification
- * of type active
- */
- assertEquals("POLICY-CL-MGT", topic);
- VirtualControlLoopNotification notification =
- Serialization.gsonJunit.fromJson(event, VirtualControlLoopNotification.class);
- assertNotNull(notification);
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=CDS"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("CDS.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertEquals(ControlLoopNotificationType.OPERATION_SUCCESS, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=CDS"));
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ABATED);
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("error".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- assertEquals("Target vnf-id could not be found", notification.getMessage());
- } else if ("getFail".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.getNotification());
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- private void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setTarget("generic-vnf.vnf-name");
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-name", "testGenericVnfID");
- event.getAai().put("vserver.vserver-name", "OzVServer");
- event.setClosedLoopEventStatus(status);
- Map<String, String> map = new HashMap<>();
- map.put("my-key", "my-value");
- event.setAdditionalEventParams(map);
- kieSession.insert(event);
- }
-
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopTest.java
deleted file mode 100644
index 09c5927a8..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VfwControlLoopTest.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-import org.onap.policy.appc.Request;
-import org.onap.policy.appc.Response;
-import org.onap.policy.appc.ResponseCode;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class VfwControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources/src/"
- + "main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vFW.yaml",
- "service=ServiceDemo;resource=Res1Demo;type=operational",
- "CL_vFW",
- "org.onap.closed_loop.ServiceDemo:VNFS:1.0.0");
- }
-
- @Test
- public void testASuccess() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET);
-
- try {
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail("fail");
- }
-
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- @Test
- public void testBAaiFail() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an event ready
- * to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "error");
- try {
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail(e.getMessage());
- }
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off processing
- * through the rules
- */
-
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, "getFail");
-
- try {
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- } catch (Exception e) {
- e.printStackTrace();
- logger.warn(e.toString());
- fail(e.getMessage());
- }
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
- }
-
- /*
- * @see org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a ControlLoopNoticiation
- * of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- } else if ("APPC-CL".equals(topic)) {
- obj = org.onap.policy.appc.util.Serialization.gsonPretty.fromJson(event,
- org.onap.policy.appc.Request.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- if (policyName.endsWith("EVENT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.ACTIVE.equals(notification.getNotification()));
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=APPC"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("APPC.RESPONSE")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- assertTrue(ControlLoopNotificationType.OPERATION_SUCCESS.equals(notification.getNotification()));
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=APPC"));
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ABATED);
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- if ("error".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- assertEquals("Target vnf-id could not be found", notification.getMessage());
- } else if ("getFail".equals(notification.getAai().get("generic-vnf.vnf-name"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- } else {
- assertTrue(ControlLoopNotificationType.FINAL_SUCCESS.equals(notification.getNotification()));
- }
- kieSession.halt();
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- logger.debug("Rule Fired: " + notification.getPolicyName());
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof Request) {
- assertTrue(((Request) obj).getCommonHeader().getSubRequestId().equals("1"));
- assertNotNull(((Request) obj).getPayload().get("generic-vnf.vnf-id"));
-
- logger.debug("\n============ APPC received the request!!! ===========\n");
-
- /*
- * Simulate a success response from APPC and insert the response into the working memory
- */
- Response appcResponse = new Response((Request) obj);
- appcResponse.getStatus().setCode(ResponseCode.SUCCESS.getValue());
- appcResponse.getStatus().setValue("SUCCESS");
- kieSession.insert(appcResponse);
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-name", "testGenericVnfID");
- event.getAai().put("vserver.vserver-name", "testVserverName");
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the control loop (onset
- * message) or end the control loop (abatement message).
- *
- * @param policy the controlLoopName comes from the policy
- * @param requestId the requestId for this event
- * @param status could be onset or abated
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status, String vnfId) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-name");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- event.getAai().put("generic-vnf.vnf-name", vnfId);
- event.getAai().put("vserver.vserver-name", vnfId);
- event.setClosedLoopEventStatus(status);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VpciControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VpciControlLoopTest.java
deleted file mode 100644
index e57af7760..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VpciControlLoopTest.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2018 Wipro Limited Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2018-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.sdnr.PciRequest;
-import org.onap.policy.sdnr.PciRequestWrapper;
-import org.onap.policy.sdnr.PciResponse;
-import org.onap.policy.sdnr.PciResponseWrapper;
-
-public class VpciControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources"
- + "/src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vPCI.yaml",
- "type=operational",
- "CL_vPCI",
- "v3.0.0");
- }
-
- @Test
- public void testSuccess() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an
- * event ready to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off
- * processing through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, true);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
-
- }
-
- @Test
- public void testAaiGetFail() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an
- * event ready to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off
- * processing through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, false);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.
- * String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- logger.debug("\n============ onTopicEvent!!! ===========\n");
- logger.debug("topic: {}, event: {}", topic, event);
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a
- * ControlLoopNoticiation of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- } else if ("SDNR-CL".equals(topic)) {
- obj = org.onap.policy.sdnr.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.sdnr.PciRequestWrapper.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- logger.debug("Rule Fired: {}", policyName);
- if (policyName.endsWith("EVENT")) {
- assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNR"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("SDNR.RESPONSE")) {
- assertEquals(ControlLoopNotificationType.OPERATION_SUCCESS, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNR"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- if ("getFail".equals(notification.getAai().get("generic-vnf.vnf-id"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- kieSession.halt();
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.getNotification());
- kieSession.halt();
- }
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof PciRequestWrapper) {
- /*
- * The request should be of type PciRequestWrapper and the subrequestid should
- * be 1
- */
- PciRequestWrapper dmaapRequest = (PciRequestWrapper) obj;
- PciRequest pciRequest = dmaapRequest.getBody();
- assertEquals("1", pciRequest.getCommonHeader().getSubRequestId());
-
- logger.debug("\n============ SDNR received the request!!! ===========\n");
- logger.debug("\n============ dmaapRequest ===========\n {} ", dmaapRequest);
- logger.debug("\n============ pciRequest ===========\n {}", pciRequest);
-
- /*
- * Simulate a success response from SDNR and insert the response into the
- * working memory
- */
- PciResponse pciResponse = new PciResponse(pciRequest);
- pciResponse.getStatus().setCode(200);
- pciResponse.getStatus().setValue("SUCCESS");
- StringBuilder sb = new StringBuilder();
- sb.append("{ \"Configurations\":[ { \"Status\": { \"Code\": 200, \"Value\":"
- + " \"SUCCESS\" }, \"data\":{ \"FAPService\":{ \"alias\":"
- + "\"Network1\", \"X0005b9Lte\" : { \"PnfName\" : \"cu1\" }, \"CellConfig\":"
- + "{ \"LTE\":{ \"RAN\":{ \"Common\":{ \"CellIdentity\":" + "\"1\" } } } } } } } ] }");
-
- pciResponse.setPayload(sb.toString());
- PciResponseWrapper dmaapResponse = new PciResponseWrapper();
- dmaapResponse.setBody(pciResponse);
- dmaapResponse.setType("response");
- logger.debug("\n============ SDNR sending response!!! ===========\n");
- logger.debug("\n============ dmaapResponse ===========\n {}", dmaapResponse);
- logger.debug("\n============ pciResponse ===========\n {}", pciResponse);
- kieSession.insert(dmaapResponse);
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the
- * control loop (onset message).
- *
- * @param policy
- * the controlLoopName comes from the policy
- * @param requestId
- * the requestId for this event
- * @param status
- * could be onset
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status,
- boolean isEnriched) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-id");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- if (isEnriched) {
- event.getAai().put("generic-vnf.is-closed-loop-disabled", "false");
- event.getAai().put("generic-vnf.prov-status", "ACTIVE");
- event.getAai().put("generic-vnf.vnf-id", "notused");
- event.getAai().put("vserver.vserver-name", "OzVServer");
- } else {
- event.getAai().put("generic-vnf.vnf-id", "getFail");
- }
- event.setClosedLoopEventStatus(status);
- StringBuilder sb = new StringBuilder();
- sb.append("{ \"Configurations\":[ { \"data\":{ \"FAPService\":"
- + " { \"alias\":\"Cell1\", \"X0005b9Lte\" : { \"PhyCellIdInUse\" :"
- + " \"35\", \"PnfName\" : \"cu1\" }, \"CellConfig\":{ \"LTE\":{ \"RAN\":"
- + "{ \"Common\":{ \"CellIdentity\":\"1\" } } } } } } } ] }");
-
- event.setPayload(sb.toString());
- logger.debug("\n============ Policy receiving ONSET event !!! ===========\n");
- logger.debug("\n============ event ===========\n {}", event);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VsonhControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VsonhControlLoopTest.java
deleted file mode 100644
index 5aaab40bb..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VsonhControlLoopTest.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2019 Wipro Limited Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
-import org.onap.policy.common.endpoints.event.comm.TopicListener;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.ControlLoopTargetType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.sdnr.PciRequest;
-import org.onap.policy.sdnr.PciRequestWrapper;
-import org.onap.policy.sdnr.PciResponse;
-import org.onap.policy.sdnr.PciResponseWrapper;
-
-public class VsonhControlLoopTest extends ControlLoopBase implements TopicListener {
-
- /**
- * Setup the simulator.
- */
- @BeforeClass
- public static void setUpBeforeClass() {
- ControlLoopBase.setUpBeforeClass(
- "../archetype-cl-amsterdam/src/main/resources/archetype-resources"
- + "/src/main/resources/__closedLoopControlName__.drl",
- "src/test/resources/yaml/policy_ControlLoop_vSONH.yaml",
- "type=operational",
- "CL_vSONH",
- "v4.0.0");
- }
-
- @Test
- public void testSuccess() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an
- * event ready to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off
- * processing through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, true);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
-
- }
-
- @Test
- public void testAaiGetFailTest() {
-
- /*
- * Allows the PolicyEngine to callback to this object to notify that there is an
- * event ready to be pulled from the queue
- */
- for (TopicSink sink : noopTopics) {
- assertTrue(sink.start());
- sink.register(this);
- }
-
- /*
- * Create a unique requestId
- */
- requestId = UUID.randomUUID();
-
- /*
- * Simulate an onset event the policy engine will receive from DCAE to kick off
- * processing through the rules
- */
- sendEvent(pair.first, requestId, ControlLoopEventStatus.ONSET, false);
-
- kieSession.fireUntilHalt();
-
- // allow object clean-up
- kieSession.fireAllRules();
-
- /*
- * The only fact in memory should be Params
- */
- assertEquals(1, kieSession.getFactCount());
-
- /*
- * Print what's left in memory
- */
- dumpFacts(kieSession);
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.onap.policy.drools.PolicyEngineListener#newEventNotification(java.lang.
- * String)
- */
- @Override
- public void onTopicEvent(CommInfrastructure commType, String topic, String event) {
- logger.debug("\n============ onTopicEvent!!! ===========\n");
- logger.debug("topic: {}, event: {}", topic, event);
- /*
- * Pull the object that was sent out to DMAAP and make sure it is a
- * ControlLoopNoticiation of type active
- */
- Object obj = null;
- if ("POLICY-CL-MGT".equals(topic)) {
- obj = org.onap.policy.controlloop.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.controlloop.VirtualControlLoopNotification.class);
- } else if ("SDNR-CL".equals(topic)) {
- obj = org.onap.policy.sdnr.util.Serialization.gsonJunit.fromJson(event,
- org.onap.policy.sdnr.PciRequestWrapper.class);
- }
- assertNotNull(obj);
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- String policyName = notification.getPolicyName();
- logger.debug("Rule Fired: {}", policyName);
- if (policyName.endsWith("EVENT")) {
- assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
- } else if (policyName.endsWith("GUARD_NOT_YET_QUERIED")) {
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("Sending guard query"));
- } else if (policyName.endsWith("GUARD.RESPONSE")) {
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().toLowerCase().endsWith("permit"));
- } else if (policyName.endsWith("GUARD_PERMITTED")) {
- assertEquals(ControlLoopNotificationType.OPERATION, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNR"));
- } else if (policyName.endsWith("OPERATION.TIMEOUT")) {
- kieSession.halt();
- logger.debug("The operation timed out");
- fail("Operation Timed Out");
- } else if (policyName.endsWith("SDNR.RESPONSE")) {
- assertEquals(ControlLoopNotificationType.OPERATION_SUCCESS, notification.getNotification());
- assertNotNull(notification.getMessage());
- assertTrue(notification.getMessage().startsWith("actor=SDNR"));
- } else if (policyName.endsWith("EVENT.MANAGER")) {
- if ("getFail".equals(notification.getAai().get("generic-vnf.vnf-id"))) {
- assertEquals(ControlLoopNotificationType.FINAL_FAILURE, notification.getNotification());
- kieSession.halt();
- } else {
- assertEquals(ControlLoopNotificationType.FINAL_SUCCESS, notification.getNotification());
- kieSession.halt();
- }
- } else if (policyName.endsWith("EVENT.MANAGER.TIMEOUT")) {
- kieSession.halt();
- logger.debug("The control loop timed out");
- fail("Control Loop Timed Out");
- }
- } else if (obj instanceof PciRequestWrapper) {
- /*
- * The request should be of type PciRequestWrapper and the subrequestid should
- * be 1
- */
- PciRequestWrapper dmaapRequest = (PciRequestWrapper) obj;
- PciRequest pciRequest = dmaapRequest.getBody();
- assertEquals("1", pciRequest.getCommonHeader().getSubRequestId());
-
- logger.debug("\n============ SDNR received the request!!! ===========\n");
- logger.debug("\n============ dmaapRequest ===========\n {} ", dmaapRequest);
- logger.debug("\n============ pciRequest ===========\n {}", pciRequest);
-
- /*
- * Simulate a success response from SDNR and insert the response into the
- * working memory
- */
- PciResponse pciResponse = new PciResponse(pciRequest);
- pciResponse.getStatus().setCode(200);
- pciResponse.getStatus().setValue("SUCCESS");
- StringBuilder sb = new StringBuilder();
- sb.append("{ \"Configurations\":[ { \"Status\": { \"Code\": 200, \"Value\":"
- + " \"SUCCESS\" }, \"data\":{ \"FAPService\":{ \"alias\":"
- + "\"Network1\", \"CellConfig\":{ \"LTE\":{ \"RAN\":{ \"Common\":"
- + "{ \"CellIdentity\":\"1\" }, \"NeighborListInUse\" : "
- + "{ \"LTECellNumberOfEntries\" : \"1\" , \"LTECell\" : "
- + "[ { \"PLMNID\" :\"plmnid1\", \"CID\":\"Chn0001\", \"PhyCellID\":"
- + "\"3\", \"PNFName\":\"ncserver01\", \"Blacklisted\":\"false\" "
- + "} ] } } } } } } } ] }");
-
- pciResponse.setPayload(sb.toString());
- PciResponseWrapper dmaapResponse = new PciResponseWrapper();
- dmaapResponse.setBody(pciResponse);
- dmaapResponse.setType("response");
- logger.debug("\n============ SDNR sending response!!! ===========\n");
- logger.debug("\n============ dmaapResponse ===========\n {}", dmaapResponse);
- logger.debug("\n============ pciResponse ===========\n {}", pciResponse);
- kieSession.insert(dmaapResponse);
- }
- }
-
- /**
- * This method is used to simulate event messages from DCAE that start the
- * control loop (onset message).
- *
- * @param policy
- * the controlLoopName comes from the policy
- * @param requestId
- * the requestId for this event
- * @param status
- * could be onset
- */
- protected void sendEvent(ControlLoopPolicy policy, UUID requestId, ControlLoopEventStatus status,
- boolean isEnriched) {
- VirtualControlLoopEvent event = new VirtualControlLoopEvent();
- event.setClosedLoopControlName(policy.getControlLoop().getControlLoopName());
- event.setRequestId(requestId);
- event.setTarget("generic-vnf.vnf-id");
- event.setTargetType(ControlLoopTargetType.VNF);
- event.setClosedLoopAlarmStart(Instant.now());
- event.setAai(new HashMap<>());
- if (isEnriched) {
- event.getAai().put("generic-vnf.is-closed-loop-disabled", "false");
- event.getAai().put("generic-vnf.prov-status", "ACTIVE");
- event.getAai().put("generic-vnf.vnf-id", "notused");
- event.getAai().put("vserver.vserver-name", "OzVServer");
- } else {
- event.getAai().put("generic-vnf.vnf-id", "getFail");
- }
- event.setClosedLoopEventStatus(status);
- StringBuilder sb = new StringBuilder();
- sb.append("{ \"Configurations\":[ { \"data\":{ \"FAPService\":"
- + " { \"alias\":\"Cell1\", \"CellConfig\":{ \"LTE\":{ \"RAN\":{ \"Common\":"
- + "{ \"CellIdentity\":\"1\" }, \"NeighborListInUse\" : "
- + "{ \"LTECellNumberOfEntries\" : \"1\" , \"LTECell\" : "
- + "[ { \"PLMNID\" :\"plmnid1\", \"CID\":\"Chn0001\", \"PhyCellID\":"
- + "\"3\", \"PNFName\":\"ncserver01\", \"Blacklisted\":\"false\" "
- + "} ] } } } } } } } ] }");
-
- event.setPayload(sb.toString());
- logger.debug("\n============ Policy receiving ONSET event !!! ===========\n");
- logger.debug("\n============ event ===========\n {}", event);
- kieSession.insert(event);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/resources/META-INF/persistence.xml b/controlloop/templates/template.demo/src/test/resources/META-INF/persistence.xml
deleted file mode 100644
index b6d80e099..000000000
--- a/controlloop/templates/template.demo/src/test/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- drools-applications
- ================================================================================
- Copyright (C) 2018-2019 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=========================================================
- -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
-
- <!-- In-mem DB for junit -->
- <persistence-unit name="OperationsHistoryPUTest"
- transaction-type="RESOURCE_LOCAL">
- <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-
- <class>org.onap.policy.database.operationshistory.Dbao</class>
-
- <properties>
- <property name="eclipselink.ddl-generation" value="create-tables" />
- <property name="eclipselink.logging.level" value="FINE" />
- <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
- <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
- <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:testdb;DATABASE_TO_UPPER=FALSE" />
- <property name="javax.persistence.jdbc.user" value="policy" />
- <property name="javax.persistence.jdbc.password" value="P01icY" />
- <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
- <property name="javax.persistence.schema-generation.create-source" value="metadata"/>
- </properties>
- </persistence-unit>
-
-</persistence>
diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard.properties b/controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard.properties
deleted file mode 100644
index 175b9d3d2..000000000
--- a/controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard.properties
+++ /dev/null
@@ -1,72 +0,0 @@
-###
-# ============LICENSE_START=======================================================
-# ONAP
-# ================================================================================
-# Copyright (C) 2017-2018 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 files defines PIPs that will be used by XACML Guard Policies. One PIP per time window (5 min, 10min,...,1 month).
-#
-#
-#
-
-#
-# Default XACML Properties File
-# Standard API Factories
-#
-xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory
-xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory
-xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory
-xacml.pipFinderFactory=com.att.research.xacml.std.pip.StdPIPFinderFactory
-xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory
-#
-# AT&T PDP Implementation Factories
-#
-xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory
-xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory
-xacml.att.functionDefinitionFactory=com.att.research.xacmlatt.pdp.std.StdFunctionDefinitionFactory
-xacml.att.policyFinderFactory=com.att.research.xacmlatt.pdp.std.StdPolicyFinderFactory
-
-
-#
-# NOTE: If you are testing against a RESTful PDP, then the PDP must be configured with the
-# policies and PIP configuration as defined below. Otherwise, this is the configuration that
-# the embedded PDP uses.
-#
-
-# In case we have multiple applicable Guard policies, we will deny if any of them denies.
-xacml.att.policyFinderFactory.combineRootPolicies=urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-unless-deny
-
-
-# Policies to load
-#
-xacml.rootPolicies=p1,p2,p3,p4,p5
-p1.file=src/test/resources/xacml/autogenerated_frequency_limiter_restart.xml
-p2.file=src/test/resources/xacml/autogenerated_frequency_limiter_rebuild.xml
-p3.file=src/test/resources/xacml/autogenerated_frequency_limiter_migrate.xml
-p4.file=src/test/resources/xacml/autogenerated_frequency_limiter_rebuild_1.xml
-p5.file=src/test/resources/xacml/autogenerated_blacklist.xml
-
-
-# PIP Engine Definition
-#
-xacml.pip.engines=count-recent-operations
-count-recent-operations.classname=org.onap.policy.pdp.xacml.application.common.operationshistory.CountRecentOperationsPip
-count-recent-operations.issuer=urn:org:onap:xacml:guard:count-recent-operations
-count-recent-operations.name=CountRecentOperations
-count-recent-operations.description=Returns operation counts based on time window
-count-recent-operations.persistenceunit=OperationsHistoryPUTest
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN.yaml
deleted file mode 100644
index 176c1dc0e..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2018 Huawei. 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b
- trigger_policy: unique-policy-id-16-Reroute
- timeout: 3600
- abatement: false
-
-policies:
- - id: unique-policy-id-16-Reroute
- name: Connectivity Reroute
- description:
- actor: SDNC
- recipe: Reroute
- target:
- type: VM
- retry: 3
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
-
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN_BW.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN_BW.yaml
deleted file mode 100644
index f994d4104..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_CCVPN_BW.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2019 Huawei Technologies Co., Ltd. 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c22b
- trigger_policy: unique-policy-id-16-BandwidthOnDemand
- timeout: 3600
- abatement: false
-
-policies:
- - id: unique-policy-id-16-BandwidthOnDemand
- name: CCVPNBandwidthOnDemand
- description:
- actor: SDNC
- recipe: BandwidthOnDemand
- target:
- type: VM
- retry: 3
- timeout: 1200
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
-
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test-B.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test-B.yaml
deleted file mode 100644
index 498ef766e..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test-B.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-Event-Cleanup-Test-B
- services:
- - serviceInvariantUUID: 5cfe6f4a-41bc-4247-8674-ebd4b98e35cc
- serviceUUID: 0f40bba5-986e-4b3c-803f-ddd1b7b25f24
- serviceName: 57e66ea7-0ed6-45c7-970f
- trigger_policy: unique-policy-id-1-modifyConfig
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-modifyConfig
- name: modify packet gen config
- description:
- actor: APPC
- recipe: ModifyConfig
- target:
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test.yaml
deleted file mode 100644
index a19b0ef6b..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-Event-Cleanup-Test
- services:
- - serviceInvariantUUID: 5cfe6f4a-41bc-4247-8674-ebd4b98e35cc
- serviceUUID: 0f40bba5-986e-4b3c-803f-ddd1b7b25f24
- serviceName: 57e66ea7-0ed6-45c7-970f
- trigger_policy: unique-policy-id-1-modifyConfig
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-modifyConfig
- name: modify packet gen config
- description:
- actor: APPC
- recipe: ModifyConfig
- target:
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test2.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test2.yaml
deleted file mode 100644
index 57062a47a..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_EventCleanup-test2.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2018 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.
-
-#
-# This YAML must be slightly different from test.yaml.
-#
-controlLoop:
- version: 3.0.0
- controlLoopName: ControlLoop-Event-Cleanup-Test
- services:
- - serviceInvariantUUID: 5cfe6f4a-41bc-4247-8674-ebd4b98e35cc
- serviceUUID: 0f40bba5-986e-4b3c-803f-ddd1b7b25f24
- serviceName: 57e66ea7-0ed6-45c7-970f
- trigger_policy: unique-policy-id-1-modifyConfig
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-modifyConfig
- name: modify packet gen config
- description:
- actor: APPC
- recipe: ModifyConfig
- target:
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test-B.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test-B.yaml
deleted file mode 100644
index e19cb498e..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test-B.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-Params-Cleanup-Test-B
- trigger_policy: unique-policy-id-1-scale-up
- timeout: 60
-
-policies:
- - id: unique-policy-id-1-scale-up
- name: Create a new VF Module
- description:
- actor: SO
- recipe: VF Module Create
- target:
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test.yaml
deleted file mode 100644
index 6d89d58c4..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-Params-Cleanup-Test
- trigger_policy: unique-policy-id-1-scale-up
- timeout: 60
-
-policies:
- - id: unique-policy-id-1-scale-up
- name: Create a new VF Module
- description:
- actor: SO
- recipe: VF Module Create
- target:
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test2.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test2.yaml
deleted file mode 100644
index 358bbfbea..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_ParamsCleanup-test2.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 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.
-
-#
-# This YAML must be slightly different from test.yaml.
-#
-controlLoop:
- version: 3.0.0
- controlLoopName: ControlLoop-Params-Cleanup-Test
- trigger_policy: unique-policy-id-1-scale-up
- timeout: 60
-
-policies:
- - id: unique-policy-id-1-scale-up
- name: Create a new VF Module
- description:
- actor: SO
- recipe: VF Module Create
- target:
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO-test.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO-test.yaml
deleted file mode 100644
index d32f55b5d..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO-test.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
- services:
- - serviceName: d4738992-6497-4dca-9db9
- serviceInvariantUUID: dc112d6e-7e73-4777-9c6f-1a7fb5fd1b6f
- serviceUUID: 2eea06c6-e1d3-4c3a-b9c4-478c506eeedf
- trigger_policy: unique-policy-id-1-scale-up
- timeout: 60
-
-policies:
- - id: unique-policy-id-1-scale-up
- name: Create a new VF Module
- description:
- actor: SO
- recipe: VF Module Create
- target:
- type: VFMODULE
- modelInvariantId: e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e
- modelVersionId: 94b18b1d-cc91-4f43-911a-e6348665f292
- modelName: VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0
- modelVersion: 1
- modelCustomizationId: 47958575-138f-452a-8c8d-d89b595f8164
- payload:
- requestParameters: '{"usePreload":true,"userParams":[]}'
- configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[9]","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[16]","enabled":"$.vf-module-topology.vf-module-parameters.param[23]"}]'
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO_Cq-test.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO_Cq-test.yaml
deleted file mode 100644
index 16c031f33..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_SO_Cq-test.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2019 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3
- services:
- - serviceName: d4738992-6497-4dca-9db9
- serviceInvariantUUID: dc112d6e-7e73-4777-9c6f-1a7fb5fd1b6f
- serviceUUID: 2eea06c6-e1d3-4c3a-b9c4-478c506eeedf
- trigger_policy: unique-policy-id-1-scale-up
- timeout: 60
-
-policies:
- - id: unique-policy-id-1-scale-up
- name: Create a new VF Module
- description:
- actor: SO
- recipe: VF Module Create
- target:
- type: VFMODULE
- modelInvariantId: e6130d03-56f1-4b0a-9a1d-e1b2ebc30e0e
- modelVersionId: 94b18b1d-cc91-4f43-911a-e6348665f292
- modelName: VfwclVfwsnkBbefb8ce2bde..base_vfw..module-0
- modelVersion: 1
- modelCustomizationId: 47958575-138f-452a-8c8d-d89b595f8164
- payload:
- requestParameters: '{"usePreload":true,"userParams":[]}'
- configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[9]","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[16]","enabled":"$.vf-module-topology.vf-module-parameters.param[23]"}]'
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_Service123.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_Service123.yaml
deleted file mode 100644
index 3892c3bb2..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_Service123.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-Service123-cbed919f-2212-4ef7-8051-fe6308da1bda
- services:
- - serviceName: Service123
- resources:
- - resourceName: res1
- resourceType: VFC
- - resourceName: res2
- resourceType: VFC
- trigger_policy: unique-policy-id-1-restart
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-restart
- name: Restart Policy
- description:
- actor: APPC
- recipe: Restart
- target:
- type: VM
- retry: 3
- timeout: 20
- success: final_success
- failure: unique-policy-id-2-rebuild
- failure_timeout: unique-policy-id-2-rebuild
- failure_retries: unique-policy-id-2-rebuild
- failure_guard: unique-policy-id-2-rebuild
- failure_exception: final_failure_exception
-
- - id: unique-policy-id-2-rebuild
- name: Rebuild Policy
- description:
- actor: APPC
- recipe: Rebuild
- target:
- type: VM
- retry: 0
- timeout: 10
- success: final_success
- failure: unique-policy-id-3-migrate
- failure_timeout: unique-policy-id-3-migrate
- failure_retries: unique-policy-id-3-migrate
- failure_guard: unique-policy-id-3-migrate
- failure_exception: final_failure_exception
-
- - id: unique-policy-id-3-migrate
- name: Migrate Policy
- description:
- actor: APPC
- recipe: Migrate
- target:
- type: VM
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_guard: final_failure_guard
- failure_exception: final_failure_exception
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_VFC.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_VFC.yaml
deleted file mode 100644
index ea9c7ded2..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_VFC.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b
-
- trigger_policy: unique-policy-id-1-restart
- timeout: 60
-
-policies:
- - id: unique-policy-id-1-restart
- name: Restart the VM
- description:
- actor: VFC
- recipe: Restart
- target:
- type: VM
- retry: 3
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
-
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vCPE.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vCPE.yaml
deleted file mode 100644
index 26fc5c81b..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vCPE.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e
- trigger_policy: unique-policy-id-1-restart
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-restart
- name: Restart the VM
- description:
- actor: APPC
- recipe: Restart
- target:
- type: VNF
- retry: 3
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW.yaml
deleted file mode 100644
index 8c94b1adc..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2018 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
- services:
- - serviceInvariantUUID: f6937c86-584c-47ae-ad29-8d41d6f0cc7c
- serviceUUID: 7be584e2-0bb2-4126-adaf-ced2c77ca0b3
- serviceName: Service_Ete_Name7ba1fbde-6187-464a-a62d-d9dd25bdf4e8
- trigger_policy: unique-policy-id-1-modifyConfig
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-modifyConfig
- name: modify packet gen config
- description:
- actor: APPC
- recipe: ModifyConfig
- target:
- resourceID: bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38
- type: VNF
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW_CDS.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW_CDS.yaml
deleted file mode 100644
index 511a9694b..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vFW_CDS.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2019 Bell Canada.
-#
-# 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.
-controlLoop:
- version: 2.0.0
- controlLoopName: ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a
- services:
- - serviceInvariantUUID: 5cfe6f4a-41bc-4247-8674-ebd4b98e35cc
- serviceUUID: 0f40bba5-986e-4b3c-803f-ddd1b7b25f24
- serviceName: 57e66ea7-0ed6-45c7-970f
- trigger_policy: unique-policy-id-1-modifyConfig
- timeout: 60
- abatement: true
-
-policies:
- - id: unique-policy-id-1-modifyConfig
- name: modify packet gen config
- description:
- actor: CDS
- recipe: ModifyConfig
- target:
- resourceID: bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38
- type: VNF
- payload:
- artifact_name: vfw-cds
- artifact_version: 1.0.0
- mode: async
- data: '{"mapInfo":{"key":"val"},"arrayInfo":["one","two"],"paramInfo":"val"}'
- retry: 0
- timeout: 30
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vPCI.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vPCI.yaml
deleted file mode 100644
index 42e2000db..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vPCI.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2018 Wipro Limited 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.
-controlLoop:
- version: 3.0.0
- controlLoopName: ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459
- trigger_policy: unique-policy-id-123-modifyconfig
- timeout: 1200
- abatement: false
-
-policies:
- - id: unique-policy-id-123-modifyconfig
- name: modify PCI config
- description:
- actor: SDNR
- recipe: ModifyConfig
- target:
- # These fields are not used
- resourceID: bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38
- type: VNF
- retry: 0
- timeout: 300
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vSONH.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vSONH.yaml
deleted file mode 100644
index 4cdf8ff40..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_ControlLoop_vSONH.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2019 Wipro Limited 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.
-controlLoop:
- version: 3.0.0
- controlLoopName: ControlLoop-vSONH-7d4baf04-8875-4d1f-946d-06b874048b61
- trigger_policy: unique-policy-id-456-modifyconfig
- timeout: 1200
- abatement: false
-
-policies:
- - id: unique-policy-id-456-modifyconfig
- name: modify ANR config
- description:
- actor: SDNR
- recipe: ModifyConfigANR
- target:
- # These fields are not used
- resourceID: Eace933104d443b496b8.nodes.heat.vpg
- type: VNF
- retry: 0
- timeout: 300
- success: final_success
- failure: final_failure
- failure_timeout: final_failure_timeout
- failure_retries: final_failure_retries
- failure_exception: final_failure_exception
- failure_guard: final_failure_guard
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_migrate.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_migrate.yaml
deleted file mode 100644
index 1e84f391a..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_migrate.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 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.
-guard:
- version: 2.0.0
-
-guards:
- - id: unique_guard_1
- name: APPC 5 Migrate
- description: |
- We only allow 2 restarts over 10 minute window during the day time hours (avoid midnight to 5am)
- match_parameters:
- #controlLoopName: ControlLoop-Service123-cbed919f-2212-4ef7-8051-fe6308da1bda
- actor: APPC
- recipe: Migrate
- limit_constraints:
- - freq_limit_per_target: 1
- time_window:
- value: 10
- units: minute
- active_time_range:
- start: 00:00:00-05:00
- end: 23:59:59-05:00
-
-
-
-
-
- \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_modifyconfig.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_modifyconfig.yaml
deleted file mode 100644
index 9a1fd884c..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_modifyconfig.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 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.
-guard:
- version: 2.0.0
-
-guards:
- - id: unique_guard_6
- name: APPC 6 ModifyConfig
- description: |
- We only allow 2 ModifyConfig over 10 minute window during the day time hours (avoid midnight to 5am)
- match_parameters:
- controlLoopName: ControlLoop-Service123-cbed919f-2212-4ef7-8051-fe6308da1bda
- actor: APPC
- recipe: ModifyConfig
- targets:
- - s1
- - s2
- - foobartriggersource36
- - s3
- - testGenericVnfName
- limit_constraints:
- - freq_limit_per_target: 1
- time_window:
- value: 10
- units: minute
- active_time_range:
- start: 00:00:00-05:00
- end: 23:59:59-05:00 \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild.yaml
deleted file mode 100644
index 1e4988636..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 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.
-guard:
- version: 2.0.0
-
-guards:
- - id: unique_guard_3
- name: APPC 5 Rebuild
- description: |
- We only allow 2 restarts over 10 minute window during the day time hours (avoid midnight to 5am)
- match_parameters:
- controlLoopName: ControlLoop-Service123-cbed919f-2212-4ef7-8051-fe6308da1bda
- actor: APPC
- recipe: Rebuild
- limit_constraints:
- - freq_limit_per_target: 2
- time_window:
- value: 10
- units: minute
- active_time_range:
- start: 00:00:00-05:00
- end: 23:59:59-05:00
-
-
-
-
-
- \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild_1.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild_1.yaml
deleted file mode 100644
index 57205132e..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_rebuild_1.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 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.
-guard:
- version: 2.0.0
-
-guards:
- - id: unique_guard_2
- name: APPC 5 Rebuild
- description: |
- We only allow 2 restarts over 10 minute window during the day time hours (avoid midnight to 5am)
- match_parameters:
- controlLoopName: ControlLoop-Service123-cbed919f-2212-4ef7-8051-fe6308da1bda
- actor:
- recipe: Rebuild
- limit_constraints:
- - freq_limit_per_target: 25
- time_window:
- value: 1
- units: week
- active_time_range:
- start: 00:00:00-05:00
- end: 23:59:59-05:00
-
-
-
-
-
- \ No newline at end of file
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart.yaml
deleted file mode 100644
index c10050b7f..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2018 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.
-guard:
- version: 2.0.0
-
-guards:
- - id: unique_guard_5
- name: APPC 5 Restart
- description: |
- We only allow 2 restarts over 10 minute window during the day time hours (avoid midnight to 5am)
- match_parameters:
- controlLoopName: ControlLoop-Service123-cbed919f-2212-4ef7-8051-fe6308da1bda
- actor: APPC
- recipe: Restart
- targets:
- - s1
- - s2
- - foobartriggersource36
- - s3
- - testGenericVnfName
- limit_constraints:
- - freq_limit_per_target: 1
- time_window:
- value: 10
- units: minute
- active_time_range:
- start: 00:00:00-05:00
- end: 23:59:59-05:00
-
diff --git a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart_blacklist.yaml b/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart_blacklist.yaml
deleted file mode 100644
index d89577182..000000000
--- a/controlloop/templates/template.demo/src/test/resources/yaml/policy_guard_appc_restart_blacklist.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2018 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.
-guard:
- version: 2.0.0
-
-guards:
- - id: unique_guard_4_Blacklist
- name: APPC Restart Blacklist
- description: |
- We deny restart of the blacklisted targets (avoid midnight to 5am)
- match_parameters:
- actor: APPC
- recipe: Restart
- limit_constraints:
- - blacklist:
- - server123
- - server2234
- - vserver.vserver-name22
- - aaabbbccc
- - foobartriggersource35
- active_time_range:
- start: 00:00:00-05:00
- end: 23:59:59-05:00
-
-
-
-
-
- \ No newline at end of file