diff options
author | 2018-08-02 16:40:41 -0400 | |
---|---|---|
committer | 2018-08-03 13:39:58 -0400 | |
commit | 93fc6343de11bde4de4e7533241123a7dcc83e70 (patch) | |
tree | e807011b797639deb5a8a20df085433abdcadd9e /controlloop/templates/archetype-cl-beijing/src | |
parent | 6a9ba373f3eb85e160dc30a54c4d82cff8542a36 (diff) |
rename rule template from beijing to casablanca
Changed assertTrue to assertEquals in CasablancaFeatureTest.
Change-Id: I3bec009ddde2f10468575b4b7bf9c08c24748aae
Issue-ID: POLICY-955
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'controlloop/templates/archetype-cl-beijing/src')
23 files changed, 0 insertions, 2004 deletions
diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/META-INF/maven/archetype-metadata.xml b/controlloop/templates/archetype-cl-beijing/src/main/resources/META-INF/maven/archetype-metadata.xml deleted file mode 100644 index 2acec10dd..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/META-INF/maven/archetype-metadata.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ============LICENSE_START======================================================= - archetype-closed-loop-demo-rules - ================================================================================ - Copyright (C) 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========================================================= - --> - -<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="vcpeClosedLoopControlName"> - <defaultValue>ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e</defaultValue> - </requiredProperty> - <requiredProperty key="vcpePolicyName"> - <defaultValue>vcpe</defaultValue> - </requiredProperty> - <requiredProperty key="vcpeControlLoopYaml"> - <defaultValue>controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard</defaultValue> - </requiredProperty> - <requiredProperty key="vfwClosedLoopControlName"> - <defaultValue>ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a</defaultValue> - </requiredProperty> - <requiredProperty key="vfwPolicyName"> - <defaultValue>vfw</defaultValue> - </requiredProperty> - <requiredProperty key="vfwControlLoopYaml"> - <defaultValue>controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a%0D%0A++trigger_policy%3A+unique-policy-id-1-modifyConfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-modifyConfig%0D%0A++++name%3A+modify+packet+gen+config%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+TBD+-+Cannot+be+known+until+instantiation+is+done%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard</defaultValue> - </requiredProperty> - <requiredProperty key="vdnsClosedLoopControlName"> - <defaultValue>ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3</defaultValue> - </requiredProperty> - <requiredProperty key="vdnsPolicyName"> - <defaultValue>vdns</defaultValue> - </requiredProperty> - <requiredProperty key="vdnsControlLoopYaml"> - <defaultValue>controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard</defaultValue> - </requiredProperty> - <requiredProperty key="volteClosedLoopControlName"> - <defaultValue>ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b</defaultValue> - </requiredProperty> - <requiredProperty key="voltePolicyName"> - <defaultValue>volte</defaultValue> - </requiredProperty> - <requiredProperty key="volteControlLoopYaml"> - <defaultValue>controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+VFC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard</defaultValue> - </requiredProperty> - <requiredProperty key="policyScope"> - <defaultValue>DCAE</defaultValue> - </requiredProperty> - <requiredProperty key="policyVersion"> - <defaultValue>1.2.0</defaultValue> - </requiredProperty> - <requiredProperty key="dmaapServers"> - <defaultValue>vm1.mr.simpledemo.openecomp.org</defaultValue> - </requiredProperty> - <requiredProperty key="brmsgwTopic"> - <defaultValue>BRMSGW-POLICY</defaultValue> - </requiredProperty> - <requiredProperty key="brmsgwServers"> - <defaultValue>vm1.mr.simpledemo.openecomp.org</defaultValue> - </requiredProperty> - <requiredProperty key="dcaeTopic"> - <defaultValue>unauthenticated.DCAE_CL_OUTPUT</defaultValue> - </requiredProperty> - <requiredProperty key="dcaeServers"> - <defaultValue>vm1.mr.simpledemo.openecomp.org</defaultValue> - </requiredProperty> - <requiredProperty key="dependenciesVersion"> - <defaultValue>1.2.0</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-beijing/src/main/resources/archetype-resources/pom.xml b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/pom.xml deleted file mode 100644 index fae94aecb..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/pom.xml +++ /dev/null @@ -1,144 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ============LICENSE_START======================================================= - ONAP - ================================================================================ - Copyright (C) 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========================================================= - --> - -<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 Beijing 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> - <version>6.5.0.Final</version> - <extensions>true</extensions> - </plugin> - </plugins> - </build> - - <dependencies> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>events</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>appc</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>appclcm</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>vfc</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>so</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>aai</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>sdc</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.model-impl</groupId> - <artifactId>trafficgenerator</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.drools-applications.controlloop.common.actors</groupId> - <artifactId>actorServiceProvider</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.actors</groupId> - <artifactId>actor.appc</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.actors</groupId> - <artifactId>actor.appclcm</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.actors</groupId> - <artifactId>actor.so</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common.actors</groupId> - <artifactId>actor.vfc</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.drools-applications.controlloop.common</groupId> - <artifactId>policy-yaml</artifactId> - <version>${dependenciesVersion}</version> - </dependency> - <dependency> - <groupId>com.att.research.xacml</groupId> - <artifactId>xacml-pdp</artifactId> - <version>1.0.1</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-beijing/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml deleted file mode 100644 index 03001520b..000000000 --- a/controlloop/templates/archetype-cl-beijing/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: ${volteClosedLoopControlName} - 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-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties deleted file mode 100644 index 390a946fe..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties +++ /dev/null @@ -1,74 +0,0 @@ -### -# ============LICENSE_START======================================================= -# archetype-closed-loop-demo-rules -# ================================================================================ -# Copyright (C) 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========================================================= -### - -controller.name=${artifactId} - -ueb.source.topics=${brmsgwTopic},${dcaeTopic},APPC-CL,APPC-LCM-WRITE - -ueb.source.topics.${brmsgwTopic}.servers=${brmsgwServers} -ueb.source.topics.${brmsgwTopic}.apiKey= -ueb.source.topics.${brmsgwTopic}.apiSecret= -ueb.source.topics.${brmsgwTopic}.events=org.onap.policy.controlloop.params.ControlLoopParams -ueb.source.topics.${brmsgwTopic}.events.org.onap.policy.controlloop.params.ControlLoopParams.filter=closedLoopControlName=.*,controlLoopYaml=.* - -ueb.source.topics.${dcaeTopic}.servers=${dcaeServers} -ueb.source.topics.${dcaeTopic}.apiKey= -ueb.source.topics.${dcaeTopic}.apiSecret= -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.apiKey= -ueb.source.topics.APPC-CL.apiSecret= -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.apiKey= -ueb.source.topics.APPC-LCM-WRITE.apiSecret= -ueb.source.topics.APPC-LCM-WRITE.events=org.onap.policy.appclcm.LcmResponseWrapper -ueb.source.topics.APPC-LCM-WRITE.events.org.onap.policy.appclcm.LcmResponseWrapper.filter=type\=response -ueb.source.topics.APPC-LCM-WRITE.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson - -noop.sink.topics=APPC-CL,APPC-LCM-READ,POLICY-CL-MGT - -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.LcmRequestWrapper -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 - -rules.groupId=${groupId} -rules.artifactId=${artifactId} -rules.version=${version} diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json deleted file mode 100644 index 148e35562..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "controller.name": "${artifactId}", - - "ueb.source.topics": "${brmsgwTopic},${dcaeTopic},APPC-CL,APPC-LCM-WRITE", - - "ueb.source.topics.${brmsgwTopic}.servers": "${brmsgwServers}", - "ueb.source.topics.${brmsgwTopic}.events": "org.onap.policy.controlloop.params.ControlLoopParams", - "ueb.source.topics.${brmsgwTopic}.events.org.onap.policy.controlloop.params.ControlLoopParams.filter": "closedLoopControlName=.*,controlLoopYaml=.*", - - "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.appclcm.LcmResponseWrapper.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.LcmResponseWrapper", - "ueb.source.topics.APPC-LCM-WRITE.events.org.onap.policy.appclcm.LcmResponseWrapper.filter": "type=response", - "ueb.source.topics.APPC-LCM-WRITE.events.custom.gson": "org.onap.policy.appclcm.util.Serialization,gson", - - "noop.sink.topics": "APPC-CL,APPC-LCM-READ,POLICY-CL-MGT", - - "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.LcmRequestWrapper", - "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", - - "rules.groupId": "${groupId}", - "rules.artifactId": "${artifactId}", - "rules.version": "${version}" -} diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json deleted file mode 100644 index 985685000..000000000 --- a/controlloop/templates/archetype-cl-beijing/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-beijing/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json deleted file mode 100644 index 2c6570d03..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json +++ /dev/null @@ -1,41 +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", - "pg-streams": { - "pg-stream": [ - { - "id": "fw_udp1", - "is-enabled": "true" - }, - { - "id": "fw_udp2", - "is-enabled": "true" - }, - { - "id": "fw_udp3", - "is-enabled": "true" - }, - { - "id": "fw_udp4", - "is-enabled": "true" - }, - { - "id": "fw_udp5", - "is-enabled": "true" - } - ] - } - } -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json deleted file mode 100644 index 3d6dc4ae1..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "closedLoopControlName": "${vcpeClosedLoopControlName}", - "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": { - "generic-vnf.is-closed-loop-disabled": "false", - "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app" - }, - "from": "DCAE", - "version": "1.0.2" -} diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json deleted file mode 100644 index 98403b034..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "closedLoopControlName": "${vcpeClosedLoopControlName}", - "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": { - "generic-vnf.is-closed-loop-disabled": "false", - "generic-vnf.vnf-id": "vCPE_Infrastructure_vGMUX_demo_app" - }, - "from": "DCAE", - "version": "1.0.2" -} diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json deleted file mode 100644 index 80730e9e3..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "closedLoopControlName": "${vdnsClosedLoopControlName}", - "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.vserver-name": "dfw1lb01lb01" - }, - "from": "DCAE", - "version": "1.0.2" -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json deleted file mode 100644 index 0aa0effa6..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "closedLoopControlName": "${vfwClosedLoopControlName}", - "closedLoopAlarmStart": 1463679805324, - "closedLoopEventClient": "microservice.stringmatcher", - "closedLoopEventStatus": "ONSET", - "requestID": "c7c6a4aa-bb61-4a15-b831-ba1472dd4a65", - "target_type": "VNF", - "target": "generic-vnf.vnf-id", - "AAI": { - "generic-vnf.is-closed-loop-disabled": "false", - "generic-vnf.vnf-id": "fw0002vm002fw002" - }, - "from": "DCAE", - "version": "1.0.2" -} diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json deleted file mode 100644 index 2cf28fb3f..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "closedLoopControlName": "${volteClosedLoopControlName}", - "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.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-beijing/src/main/resources/archetype-resources/src/main/config/so.success.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/so.success.json deleted file mode 100644 index 8f3387e4d..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/so.success.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "requestReferences": { - "instanceId": "ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff", - "requestId": "e4f95e0c-a013-4530-8e59-c5c5f9e539b6" - }, - "httpResponseCode": 200 -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vCPE.yaml b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vCPE.yaml deleted file mode 100644 index 2838b6127..000000000 --- a/controlloop/templates/archetype-cl-beijing/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: ${vcpeClosedLoopControlName} - 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-beijing/src/main/resources/archetype-resources/src/main/config/vDNS.yaml b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vDNS.yaml deleted file mode 100644 index d4ed17396..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vDNS.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: ${vdnsClosedLoopControlName} - trigger_policy: unique-policy-id-1-scale-up - timeout: 3600 - 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 - 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-beijing/src/main/resources/archetype-resources/src/main/config/vFW.yaml b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vFW.yaml deleted file mode 100644 index dcbdf5459..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vFW.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: ${vfwClosedLoopControlName} - 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 - 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-beijing/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json deleted file mode 100644 index 6b0ebd227..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "closedLoopControlName": "${vcpeClosedLoopControlName}", - "controlLoopYaml": "${vcpeControlLoopYaml}", - "policyName": "${vcpePolicyName}", - "policyScope": "${policyScope}", - "policyVersion": "${policyVersion}" -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json deleted file mode 100644 index 744723c87..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "closedLoopControlName": "${vdnsClosedLoopControlName}", - "controlLoopYaml": "${vdnsControlLoopYaml}", - "policyName": "${vdnsPolicyName}", - "policyScope": "${policyScope}", - "policyVersion": "${policyVersion}" -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json deleted file mode 100644 index 353c19c59..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "closedLoopControlName": "${vfwClosedLoopControlName}", - "controlLoopYaml": "${vfwControlLoopYaml}", - "policyName": "${vfwPolicyName}", - "policyScope": "${policyScope}", - "policyVersion": "${policyVersion}" -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json deleted file mode 100644 index c20b25adc..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "closedLoopControlName": "${volteClosedLoopControlName}", - "controlLoopYaml": "${volteControlLoopYaml}", - "policyName": "${voltePolicyName}", - "policyScope": "${policyScope}", - "policyVersion": "${policyVersion}" -}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml deleted file mode 100644 index 0e6660e5c..000000000 --- a/controlloop/templates/archetype-cl-beijing/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) 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========================================================= - --> - -<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> - <kbase name="rules"> - <ksession name="beijing"/> - </kbase> -</kmodule> diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl b/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl deleted file mode 100644 index 7e0d7e1a0..000000000 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl +++ /dev/null @@ -1,1238 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * ONAP - * ================================================================================ - * Copyright (C) 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========================================================= - */ - -package org.onap.policy.controlloop; - -import org.onap.policy.controlloop.params.ControlLoopParams; -import org.onap.policy.controlloop.VirtualControlLoopEvent; -import org.onap.policy.controlloop.VirtualControlLoopNotification; -import org.onap.policy.controlloop.ControlLoopEventStatus; -import org.onap.policy.controlloop.ControlLoopNotificationType; -import org.onap.policy.controlloop.ControlLoopLogger; -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.NEW_EVENT_STATUS; -import org.onap.policy.controlloop.eventmanager.ControlLoopOperationManager; -import org.onap.policy.controlloop.actor.so.SOActorServiceProvider; -import org.onap.policy.appc.Request; -import org.onap.policy.appc.Response; -import org.onap.policy.appc.CommonHeader; -import org.onap.policy.appclcm.LcmRequestWrapper; -import org.onap.policy.appclcm.LcmResponseWrapper; -import org.onap.policy.appclcm.LcmRequest; -import org.onap.policy.appclcm.LcmResponse; -import org.onap.policy.appclcm.LcmCommonHeader; -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.SORequestStatus; -import org.onap.policy.so.SORequestDetails; -import org.onap.policy.so.SOModelInfo; -import org.onap.policy.so.SOCloudConfiguration; -import org.onap.policy.so.SORequestInfo; -import org.onap.policy.so.SORequestParameters; -import org.onap.policy.so.SORelatedInstanceListElement; -import org.onap.policy.so.SORelatedInstance; -import org.onap.policy.so.SOResponse; -import org.onap.policy.so.SOResponseWrapper; -import org.onap.policy.guard.PolicyGuard; -import org.onap.policy.guard.PolicyGuard.LockResult; -import org.onap.policy.guard.TargetLock; -import org.onap.policy.guard.GuardResult; -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.PolicyEngine; - -/* - * Operation Timer - */ -declare OperationTimer - closedLoopControlName : String - requestID : String - delay : String -end - -/* - * Control Loop Timer - */ -declare ControlLoopTimer - closedLoopControlName : String - requestID : String - delay : String -end - -/* -* -* Called to insert the ControlLoopParams object into working memory from the BRMSGW. -* -*/ -rule "INSERT.PARAMS" - when - $params : ControlLoopParams() - then - - insert($params); - - // 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(), $params.getPolicyName() + "." + 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 "EVENT" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName ) - not ( ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + 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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - // - // Let interested parties know - // - PolicyEngine.manager.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($clName, $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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - // - // 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 - // - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - // - // Setup the Overall Control Loop timer - // - ControlLoopTimer clTimer = new ControlLoopTimer(); - clTimer.setClosedLoopControlName($event.getClosedLoopControlName()); - clTimer.setRequestID($event.getRequestId().toString()); - clTimer.setDelay(manager.getControlLoopTimeout(1500) + "s"); - // - // Insert it - // - insert(clTimer); - } else { - // - // Let interested parties know - // - PolicyEngine.manager.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("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), e); - - VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event); - notification.setNotification(ControlLoopNotificationType.REJECTED); - notification.setMessage("Exception occurred: " + e.getMessage()); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - // - // - // - PolicyEngine.manager.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 "EVENT.MANAGER" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $clTimer : ControlLoopTimer ( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} clTimer={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $clTimer); - - try { - // - // Check which event this is. - // - ControlLoopEventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event); - // - // Check what kind of event this is - // - if (eventStatus == NEW_EVENT_STATUS.SUBSEQUENT_ONSET) { - // - // We don't care about subsequent onsets - // - logger.info("{}: {}: subsequent onset", - $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - retract($event); - return; - } - if (eventStatus == NEW_EVENT_STATUS.SYNTAX_ERROR) { - // - // Ignore any bad syntax events - // - logger.warn("{}: {}: syntax error", - $clName, $params.getPolicyName() + "." + 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 != NEW_EVENT_STATUS.FIRST_ONSET) { - logger.warn("{}: {}: no first onset", - $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - retract($event); - } - - logger.debug("{}: {}: target={}", $clName, - $params.getPolicyName() + "." + 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", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event.getRequestId()); - notification.setFrom("policy"); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - // - // In this case, we are done - // - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - // - // Unlock the target - // - TargetLock lock = $manager.unlockCurrentOperation(); - if (lock != null) { - logger.debug("{}: {}: retracting lock=", $clName, - $params.getPolicyName() + "." + drools.getRule().getName(), lock); - retract(lock); - } - // - // Retract everything from memory - // - logger.info("{}: {}: retracting onset, manager, and timer", - $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - - retract($manager.getOnsetEvent()); - retract($manager); - retract($clTimer); - // - // 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 ..", - $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - } else { - logger.info("{}: {}: no abatement expect for {}. Closing the control loop", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event.getRequestId()); - - notification.setFrom("policy"); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - // - // In this case, we are done - // - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - // - // Unlock the target - // - TargetLock lock = $manager.unlockCurrentOperation(); - if (lock != null) { - logger.debug("{}: {}: retracting lock=", $clName, - $params.getPolicyName() + "." + drools.getRule().getName(), lock); - retract(lock); - } - // - // Retract everything from memory - // - logger.info("{}: {}: retracting onset, manager, and timer", - $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - - retract($manager.getOnsetEvent()); - retract($manager); - retract($clTimer); - } - } - } 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 - // - LockResult<GuardResult, TargetLock> result = $manager.lockCurrentOperation(); - logger.info("{}: {}: guard lock acquired={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - result.getB()); - if (result.getA().equals(GuardResult.LOCK_ACQUIRED)) { - // - // insert the operation into memory - // - insert(operation); - - // - // insert operation timeout object - // - OperationTimer opTimer = new OperationTimer(); - opTimer.setClosedLoopControlName($event.getClosedLoopControlName()); - opTimer.setRequestID($event.getRequestId().toString()); - opTimer.setDelay(operation.getOperationTimeout().toString() + "s"); - insert(opTimer); - - // - // Insert lock into memory - // - insert(result.getB()); - } - else { - logger.debug("The target resource {} is already processing", - $event.getAai().get($event.getTarget())); - 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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - - retract($event); - retract($manager); - retract($clTimer); - } - logger.info("{}: {}: starting operation={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - operation); - } else { - // - // Probably waiting for abatement - // - logger.info("{}: {}: no operation, probably waiting for abatement", - $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - } - } - } catch (Exception e) { - logger.warn("{}: {}: unexpected", - $clName, - $params.getPolicyName() + "." + drools.getRule().getName(), e); - - VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event); - notification.setNotification(ControlLoopNotificationType.FINAL_FAILURE); - notification.setMessage(e.getMessage()); - notification.setFrom("policy"); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - - retract($event); - retract($manager); - retract($clTimer); - } - -end - -/* -* -* Guard Permitted, let's send request to the actor. -* -*/ -rule "EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId(), "Permit".equalsIgnoreCase(getGuardApprovalStatus()) ) - $lock : TargetLock (requestID == $event.getRequestId()) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} operation={} lock={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock); - - Object request = null; - boolean caughtException = false; - try { - request = $operation.startOperation($event); - } - catch (ControlLoopException e) { - String msg = e.getMessage(); - logger.warn("{}: {}: operation={}: AAI failure: {}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $operation, msg, e); - $operation.setOperationHasException(msg); - 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)}; - } - else if (request != null) { - logger.debug("{}: {}: starting operation ..", - $clName, $params.getPolicyName() + "." + 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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - - switch ($operation.policy.getActor()){ - - case "APPC": - - if (request instanceof Request) { - PolicyEngine.manager.deliver("APPC-CL", request); - } - else if (request instanceof LcmRequestWrapper) { - PolicyEngine.manager.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 - SOActorServiceProvider.sendRequest($event.getRequestId().toString(), drools.getWorkingMemory(), request); - } - break; - case "VFC": - if (request instanceof VFCRequest) { - // Start VFC thread - Thread t = new Thread(new VFCManager(drools.getWorkingMemory(), (VFCRequest)request)); - t.start(); - } - break; - } - } else { - // - // What happens if its null? - // - logger.warn("{}: {}: unexpected null operation request", - $clName, - $params.getPolicyName() + "." + 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)}; - } - - } -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 "EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId(), getGuardApprovalStatus() == "NONE" ) - $lock : TargetLock (requestID == $event.getRequestId()) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} operation={} lock={}", - $clName, $params.getPolicyName() + "." + 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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - PolicyEngine.manager.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(PolicyEngine.manager.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() - )); - 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 "GUARD.RESPONSE" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) - $lock : TargetLock (requestID == $event.getRequestId()) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - $guardResponse : PolicyGuardResponse(requestID == $event.getRequestId(), $operation.policy.recipe == operation) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} operation={} lock={} opTimer={} guardResponse={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock, $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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - - PolicyEngine.manager.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 "APPC.RESPONSE" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - $lock : TargetLock (requestID == $event.getRequestId()) - $response : Response( getCommonHeader().RequestId == $event.getRequestId() ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock, $opTimer, $response); - // - // Get the result of the operation - // - PolicyResult policyResult = $operation.onResponse($response); - if (policyResult != null) { - logger.debug("{}: {}: operation finished - result={}", - $clName, $params.getPolicyName() + "." + 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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - notification.setMessage($operation.getOperationHistory()); - notification.setHistory($operation.getHistory()); - if (policyResult.equals(PolicyResult.SUCCESS)) { - notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS); - // - // Let interested parties know - // - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - } else { - notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE); - // - // Let interested parties know - // - PolicyEngine.manager.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 "APPC.RESPONSE.CLEANUP" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $response : Response($id : getCommonHeader().RequestId ) - not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: orphan appc response={}", - $clName, $params.getPolicyName() + "." + 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 "APPC.LCM.RESPONSE" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - $lock : TargetLock (requestID == $event.getRequestId()) - $response : LcmResponseWrapper( getBody().getCommonHeader().getRequestId() == $event.getRequestId() ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock, $operation, $opTimer, $response); - - // - // Get the result of the operation - // - PolicyResult policyResult = $operation.onResponse($response); - if (policyResult != null) { - logger.debug("{}: {}: operation finished - result={}", - $clName, $params.getPolicyName() + "." + 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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - notification.setMessage($operation.getOperationHistory()); - notification.setHistory($operation.getHistory()); - if (policyResult.equals(PolicyResult.SUCCESS)) { - notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS); - } else { - notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE); - } - PolicyEngine.manager.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 "APPC.LCM.RESPONSE.CLEANUP" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $response : LcmResponseWrapper($id : getBody().getCommonHeader().getRequestId ) - not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: orphan appc response={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), $id); - // - // Retract it - // - retract($response); -end - -/* -* -* This rule responds to SO Response Events -* -*/ -rule "SO.RESPONSE" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - $lock : TargetLock (requestID == $event.getRequestId()) - $response : SOResponseWrapper(requestID.toString() == $event.getRequestId().toString() ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock, $operation, $opTimer, $response); - - // Get the result of the operation - // - PolicyResult policyResult = $operation.onResponse($response); - if (policyResult != null) { - logger.debug("{}: {}: operation finished - result={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - policyResult); - - // - // This Operation has completed, construct a notification showing our results - // - VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event); - notification.setFrom("policy"); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - notification.setMessage($operation.getOperationHistory()); - notification.setHistory($operation.getHistory()); - if (policyResult.equals(PolicyResult.SUCCESS)) { - notification.setNotification(ControlLoopNotificationType.OPERATION_SUCCESS); - } else { - notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE); - - } - PolicyEngine.manager.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 "VFC.RESPONSE" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) - $lock : TargetLock (requestID == $event.getRequestId()) - $response : VFCResponse( requestId.toString() == $event.getRequestId().toString() ) - then - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock, $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($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - 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 is the timer that manages the timeout for an individual operation. -* -*/ -rule "EVENT.MANAGER.OPERATION.TIMEOUT" - timer (expr: $to ) - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) - $opTimer : OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString(), $to : getDelay() ) - $lock : TargetLock (requestID == $event.getRequestId()) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock, $operation, $opTimer); - - // - // Tell it its timed out - // - $operation.setOperationHasTimedOut(); - // - // Create a notification for it ("DB Write - end operation") - // - VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event); - notification.setFrom("policy"); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - notification.setNotification(ControlLoopNotificationType.OPERATION_FAILURE); - notification.setMessage($operation.getOperationHistory()); - notification.setHistory($operation.getHistory()); - // - // Let interested parties know - // - PolicyEngine.manager.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 "EVENT.MANAGER.TIMEOUT" - timer (expr: $to ) - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId() ) - $clTimer : ControlLoopTimer ( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString(), $to : getDelay() ) - $operations : LinkedList() - from collect( ControlLoopOperationManager( onset.closedLoopControlName == $event.getClosedLoopControlName(), onset.getRequestId() == $event.getRequestId() ) ) - $opTimers : LinkedList() - from collect( OperationTimer( closedLoopControlName == $event.getClosedLoopControlName(), requestID == $event.getRequestId().toString() ) ) - $locks : LinkedList() - from collect( TargetLock (requestID == $event.getRequestId()) ) - then - - Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - - if ($operations == null) { - logger.debug("{}: {}: event={} manager={} clTimer={} operations=0", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $clTimer); - } else { - logger.debug("{}: {}: event={} manager={} clTimer={} operations={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $clTimer, $operations.size()); - } - // - // Tell the Event Manager it has timed out - // - VirtualControlLoopNotification notification = $manager.setControlLoopTimedOut(); - if (notification != null) { - notification.setFrom("policy"); - notification.setPolicyName($params.getPolicyName() + "." + drools.getRule().getName()); - notification.setPolicyScope($params.getPolicyScope()); - notification.setPolicyVersion($params.getPolicyVersion()); - // - // Let interested parties know - // - PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); - } - // - // Retract EVERYTHING - // - retract($event); - retract($manager); - retract($clTimer); - if ($operations != null && $operations.size() > 0) { - Iterator<ControlLoopOperationManager> iter = $operations.iterator(); - while (iter.hasNext()) { - ControlLoopOperationManager manager = iter.next(); - retract(manager); - } - } - if ($opTimers != null && $opTimers.size() > 0) { - Iterator<OperationTimer> iter = $opTimers.iterator(); - while (iter.hasNext()) { - OperationTimer opTimer = iter.next(); - retract(opTimer); - } - } - if ($locks != null && $locks.size() > 0) { - Iterator<TargetLock> iter = $locks.iterator(); - while (iter.hasNext()) { - TargetLock lock = iter.next(); - // - // Ensure we release the lock - // - PolicyGuard.unlockTarget(lock); - // - // - // - retract(lock); - } - } -end - -/* -* -* This rule will clean up any rogue onsets where there is no -* ControlLoopParams object corresponding to the onset event. -* -*/ -rule "EVENT.CLEANUP" - when - $event : VirtualControlLoopEvent( $clName: closedLoopControlName ) - not ( ControlLoopParams( 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 diff --git a/controlloop/templates/archetype-cl-beijing/src/test/resources/projects/basic/archetype.properties b/controlloop/templates/archetype-cl-beijing/src/test/resources/projects/basic/archetype.properties deleted file mode 100644 index 8cc10c97c..000000000 --- a/controlloop/templates/archetype-cl-beijing/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 |