diff options
-rw-r--r-- | controlloop/common/controller-beijing/.gitignore | 1 | ||||
-rw-r--r-- | controlloop/common/controller-casablanca/.gitignore | 1 | ||||
-rw-r--r-- | controlloop/common/controller-casablanca/pom.xml (renamed from controlloop/common/controller-beijing/pom.xml) | 8 | ||||
-rw-r--r-- | controlloop/common/controller-casablanca/src/main/resources/META-INF/kmodule.xml (renamed from controlloop/common/controller-beijing/src/main/resources/META-INF/kmodule.xml) | 2 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-beijing/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI | 1 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-casablanca/pom.xml (renamed from controlloop/common/feature-controlloop-beijing/pom.xml) | 4 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-casablanca/src/assembly/assemble_zip.xml (renamed from controlloop/common/feature-controlloop-beijing/src/assembly/assemble_zip.xml) | 4 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties (renamed from controlloop/common/feature-controlloop-beijing/src/main/feature/config/beijing-controller.properties) | 4 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-casablanca/src/main/java/org/onap/policy/drools/apps/controlloop/feature/casablanca/CasablancaFeature.java (renamed from controlloop/common/feature-controlloop-beijing/src/main/java/org/onap/policy/drools/apps/controlloop/feature/beijing/BeijingFeature.java) | 8 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-casablanca/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI | 1 | ||||
-rw-r--r-- | controlloop/common/feature-controlloop-casablanca/src/test/java/org/onap/policy/drools/apps/controlloop/feature/casablanca/CasablancaFeatureTest.java (renamed from controlloop/common/feature-controlloop-beijing/src/test/java/org/onap/policy/drools/apps/controlloop/feature/beijing/BeijingFeatureTest.java) | 10 | ||||
-rw-r--r-- | controlloop/common/pom.xml | 4 | ||||
-rw-r--r-- | controlloop/packages/apps-controlloop/pom.xml | 2 | ||||
-rw-r--r-- | controlloop/packages/apps-controlloop/src/files/apps-controlloop-installer | 2 | ||||
-rw-r--r-- | controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca (renamed from controlloop/packages/basex-controlloop/src/files/bin/create-cl-beijing) | 14 | ||||
-rw-r--r-- | controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca (renamed from controlloop/packages/basex-controlloop/src/files/bin/push-policies-beijing) | 2 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/pom.xml (renamed from controlloop/templates/archetype-cl-beijing/pom.xml) | 4 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/META-INF/maven/archetype-metadata.xml) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/pom.xml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/pom.xml) | 2 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/so.success.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/so.success.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vCPE.yaml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vCPE.yaml) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vDNS.yaml) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vFW.yaml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vFW.yaml) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json) | 0 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml) | 2 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl (renamed from controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl) | 720 | ||||
-rw-r--r-- | controlloop/templates/archetype-cl-casablanca/src/test/resources/projects/basic/archetype.properties (renamed from controlloop/templates/archetype-cl-beijing/src/test/resources/projects/basic/archetype.properties) | 0 | ||||
-rw-r--r-- | controlloop/templates/pom.xml | 2 |
41 files changed, 412 insertions, 386 deletions
diff --git a/controlloop/common/controller-beijing/.gitignore b/controlloop/common/controller-beijing/.gitignore deleted file mode 100644 index 2e1b1149f..000000000 --- a/controlloop/common/controller-beijing/.gitignore +++ /dev/null @@ -1 +0,0 @@ -src/main/resources/beijing.drl diff --git a/controlloop/common/controller-casablanca/.gitignore b/controlloop/common/controller-casablanca/.gitignore new file mode 100644 index 000000000..f4e96567c --- /dev/null +++ b/controlloop/common/controller-casablanca/.gitignore @@ -0,0 +1 @@ +src/main/resources/casablanca.drl diff --git a/controlloop/common/controller-beijing/pom.xml b/controlloop/common/controller-casablanca/pom.xml index 7fe97a994..deeb5b346 100644 --- a/controlloop/common/controller-beijing/pom.xml +++ b/controlloop/common/controller-casablanca/pom.xml @@ -29,11 +29,11 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>controller-beijing</artifactId> + <artifactId>controller-casablanca</artifactId> <packaging>kjar</packaging> <name>${project.artifactId}</name> - <description>Beijing Experimental Controller</description> + <description>Casablanca Experimental Controller</description> <properties> <maven.compiler.source>1.8</maven.compiler.source> @@ -62,9 +62,9 @@ </goals> <configuration> <sourceFile> - ../../templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl + ../../templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl </sourceFile> - <destinationFile>src/main/resources/beijing.drl</destinationFile> + <destinationFile>src/main/resources/casablanca.drl</destinationFile> </configuration> </execution> </executions> diff --git a/controlloop/common/controller-beijing/src/main/resources/META-INF/kmodule.xml b/controlloop/common/controller-casablanca/src/main/resources/META-INF/kmodule.xml index fb96d70fd..3c2030da9 100644 --- a/controlloop/common/controller-beijing/src/main/resources/META-INF/kmodule.xml +++ b/controlloop/common/controller-casablanca/src/main/resources/META-INF/kmodule.xml @@ -20,6 +20,6 @@ --> <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> <kbase name="rules"> - <ksession name="beijing"/> + <ksession name="casablanca"/> </kbase> </kmodule> diff --git a/controlloop/common/feature-controlloop-beijing/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI b/controlloop/common/feature-controlloop-beijing/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI deleted file mode 100644 index 93439489c..000000000 --- a/controlloop/common/feature-controlloop-beijing/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI +++ /dev/null @@ -1 +0,0 @@ -org.onap.policy.drools.apps.controlloop.feature.beijing.BeijingFeature diff --git a/controlloop/common/feature-controlloop-beijing/pom.xml b/controlloop/common/feature-controlloop-casablanca/pom.xml index 33aca1772..dd60243c0 100644 --- a/controlloop/common/feature-controlloop-beijing/pom.xml +++ b/controlloop/common/feature-controlloop-casablanca/pom.xml @@ -28,10 +28,10 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>feature-controlloop-beijing</artifactId> + <artifactId>feature-controlloop-casablanca</artifactId> <description> - Load Experimental Beijing Control Loop Use Cases Controller as a feature. + Load Experimental Casablanca Control Loop Use Cases Controller as a feature. </description> <properties> diff --git a/controlloop/common/feature-controlloop-beijing/src/assembly/assemble_zip.xml b/controlloop/common/feature-controlloop-casablanca/src/assembly/assemble_zip.xml index f549cfc91..7cb637918 100644 --- a/controlloop/common/feature-controlloop-beijing/src/assembly/assemble_zip.xml +++ b/controlloop/common/feature-controlloop-casablanca/src/assembly/assemble_zip.xml @@ -24,7 +24,7 @@ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> - <id>feature-controlloop-beijing-package</id> + <id>feature-controlloop-casablanca-package</id> <formats> <format>zip</format> </formats> @@ -36,7 +36,7 @@ <directory>target</directory> <outputDirectory>lib/feature</outputDirectory> <includes> - <include>feature-controlloop-beijing-${project.version}.jar</include> + <include>feature-controlloop-casablanca-${project.version}.jar</include> </includes> </fileSet> <fileSet> diff --git a/controlloop/common/feature-controlloop-beijing/src/main/feature/config/beijing-controller.properties b/controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties index 787e90f0c..5d1a0a3c6 100644 --- a/controlloop/common/feature-controlloop-beijing/src/main/feature/config/beijing-controller.properties +++ b/controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties @@ -18,7 +18,7 @@ # ============LICENSE_END========================================================= ### -controller.name=beijing +controller.name=casablanca ueb.source.topics=${{PDPD_CONFIGURATION_TOPIC}},${{DCAE_TOPIC}},APPC-CL,APPC-LCM-WRITE @@ -71,5 +71,5 @@ ueb.sink.topics.POLICY-CL-MGT.events=org.onap.policy.controlloop.VirtualControlL ueb.sink.topics.POLICY-CL-MGT.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty rules.groupId=${project.groupId} -rules.artifactId=controller-beijing +rules.artifactId=controller-casablanca rules.version=${project.version} diff --git a/controlloop/common/feature-controlloop-beijing/src/main/java/org/onap/policy/drools/apps/controlloop/feature/beijing/BeijingFeature.java b/controlloop/common/feature-controlloop-casablanca/src/main/java/org/onap/policy/drools/apps/controlloop/feature/casablanca/CasablancaFeature.java index 6f2a03c77..79bef2326 100644 --- a/controlloop/common/feature-controlloop-beijing/src/main/java/org/onap/policy/drools/apps/controlloop/feature/beijing/BeijingFeature.java +++ b/controlloop/common/feature-controlloop-casablanca/src/main/java/org/onap/policy/drools/apps/controlloop/feature/casablanca/CasablancaFeature.java @@ -18,13 +18,13 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.drools.apps.controlloop.feature.beijing; +package org.onap.policy.drools.apps.controlloop.feature.casablanca; import org.onap.policy.drools.features.PolicyEngineFeatureAPI; /** - * Beijing installation as a feature saves time - * loading the Beijing controller at runtime over the + * Casablanca installation as a feature saves time + * loading the Casablanca controller at runtime over the * usual installation from nexus. It also reduces * potential for errors in the pom.xml generated in * the brmsgw side. @@ -36,7 +36,7 @@ import org.onap.policy.drools.features.PolicyEngineFeatureAPI; * functionality * */ -public class BeijingFeature implements PolicyEngineFeatureAPI { +public class CasablancaFeature implements PolicyEngineFeatureAPI { public static final int SEQNO = 1000; diff --git a/controlloop/common/feature-controlloop-casablanca/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI b/controlloop/common/feature-controlloop-casablanca/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI new file mode 100644 index 000000000..5252ca115 --- /dev/null +++ b/controlloop/common/feature-controlloop-casablanca/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureAPI @@ -0,0 +1 @@ +org.onap.policy.drools.apps.controlloop.feature.casablanca.CasablancaFeature diff --git a/controlloop/common/feature-controlloop-beijing/src/test/java/org/onap/policy/drools/apps/controlloop/feature/beijing/BeijingFeatureTest.java b/controlloop/common/feature-controlloop-casablanca/src/test/java/org/onap/policy/drools/apps/controlloop/feature/casablanca/CasablancaFeatureTest.java index 66e5a3e02..8960603ae 100644 --- a/controlloop/common/feature-controlloop-beijing/src/test/java/org/onap/policy/drools/apps/controlloop/feature/beijing/BeijingFeatureTest.java +++ b/controlloop/common/feature-controlloop-casablanca/src/test/java/org/onap/policy/drools/apps/controlloop/feature/casablanca/CasablancaFeatureTest.java @@ -17,16 +17,14 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.policy.drools.apps.controlloop.feature.beijing; +package org.onap.policy.drools.apps.controlloop.feature.casablanca; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; -import org.onap.policy.drools.apps.controlloop.feature.beijing.BeijingFeature; - -public class BeijingFeatureTest { +public class CasablancaFeatureTest { @org.junit.Test public void getSequenceNumber() { - assertTrue(new BeijingFeature().getSequenceNumber() == BeijingFeature.SEQNO); + assertEquals(CasablancaFeature.SEQNO, new CasablancaFeature().getSequenceNumber()); } } diff --git a/controlloop/common/pom.xml b/controlloop/common/pom.xml index ae318d626..5e3b3de37 100644 --- a/controlloop/common/pom.xml +++ b/controlloop/common/pom.xml @@ -39,11 +39,11 @@ <module>model-impl</module> <module>policy-yaml</module> <module>simulators</module> - <module>controller-beijing</module> + <module>controller-casablanca</module> <module>feature-controlloop-utils</module> <module>feature-controlloop-trans</module> <module>feature-controlloop-amsterdam</module> - <module>feature-controlloop-beijing</module> + <module>feature-controlloop-casablanca</module> <module>msb</module> </modules> diff --git a/controlloop/packages/apps-controlloop/pom.xml b/controlloop/packages/apps-controlloop/pom.xml index d345d8f5f..9773ee6f6 100644 --- a/controlloop/packages/apps-controlloop/pom.xml +++ b/controlloop/packages/apps-controlloop/pom.xml @@ -90,7 +90,7 @@ </dependency> <dependency> <groupId>org.onap.policy.drools-applications.controlloop.common</groupId> - <artifactId>feature-controlloop-beijing</artifactId> + <artifactId>feature-controlloop-casablanca</artifactId> <version>${project.version}</version> <type>zip</type> </dependency> diff --git a/controlloop/packages/apps-controlloop/src/files/apps-controlloop-installer b/controlloop/packages/apps-controlloop/src/files/apps-controlloop-installer index b50f6efea..4d75ec8e3 100644 --- a/controlloop/packages/apps-controlloop/src/files/apps-controlloop-installer +++ b/controlloop/packages/apps-controlloop/src/files/apps-controlloop-installer @@ -37,7 +37,7 @@ source ${POLICY_HOME}/etc/build.info features install controlloop-trans features install controlloop-amsterdam -features install controlloop-beijing +features install controlloop-casablanca features enable controlloop-trans features enable controlloop-amsterdam diff --git a/controlloop/packages/basex-controlloop/src/files/bin/create-cl-beijing b/controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca index 6972fd0fb..d32657444 100644 --- a/controlloop/packages/basex-controlloop/src/files/bin/create-cl-beijing +++ b/controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca @@ -25,14 +25,14 @@ source "${POLICY_HOME}"/etc/build.info -echo "Control Loop CLI Generator for R2 Beijing Release" +echo "Control Loop CLI Generator for R2 Casablanca Release" echo "---------------------------------------------------" echo -GROUP_ID="org.onap.policy.rules.beijing" -ARTIFACT_ID="beijing" +GROUP_ID="org.onap.policy.rules.casablanca" +ARTIFACT_ID="casablanca" VERSION="${version:-1.2.0}" -PACKAGE="org.onap.policy.rules.beijing" +PACKAGE="org.onap.policy.rules.casablanca" # vCPE Policy Parameters VCPE_CONTROL_LOOP_NAME="ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e" @@ -55,7 +55,7 @@ VOLTE_POLICY_NAME="volte" VOLTE_CONTROL_LOOP_YAML="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" # Generic Scope and Version -POLICY_SCOPE="beijing" +POLICY_SCOPE="casablanca" POLICY_VERSION="v0.0.1" BRMSGW_TOPIC="BRMSGW-POLICY" @@ -196,7 +196,7 @@ if [ ! -w "${DIR_TMP}" ]; then fi ARCHETYPE_GROUP_ID="org.onap.policy.drools-applications.controlloop.templates" -ARCHETYPE_ARTIFACT_ID="archetype-cl-beijing" +ARCHETYPE_ARTIFACT_ID="archetype-cl-casablanca" ARCHETYPE_VERSION="${VERSION}" if [ -d "${DIR_TMP}/${ARTIFACT_ID}/" ]; then @@ -310,7 +310,7 @@ echo "1. copy ${DIR_TMP}/${ARTIFACT_ID}/${ARTIFACT_ID}-controller.properties und echo " and restart the pdp-d (policy stop; policy start)" echo "2. cd ${DIR_TMP}/${ARTIFACT_ID}/; rest-add-controller ${ARTIFACT_ID}" echo -echo "Once this Control Loop is deployed, you can run the push-policies-beijing script" +echo "Once this Control Loop is deployed, you can run the push-policies-casablanca script" echo "to automatically insert the policies for all use cases supported in this release" echo ) diff --git a/controlloop/packages/basex-controlloop/src/files/bin/push-policies-beijing b/controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca index 92259790a..685deb1c3 100644 --- a/controlloop/packages/basex-controlloop/src/files/bin/push-policies-beijing +++ b/controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca @@ -119,4 +119,4 @@ echo "Policy insertions completed." echo echo "The working memory is now: " -curl --silent --user @1b3rt:31nst31n -X GET http://localhost:9696/policy/pdp/engine/controllers/${CONTROLLER_NAME}/drools/facts/beijing | python -m json.tool +curl --silent --user @1b3rt:31nst31n -X GET http://localhost:9696/policy/pdp/engine/controllers/${CONTROLLER_NAME}/drools/facts/casablanca | python -m json.tool diff --git a/controlloop/templates/archetype-cl-beijing/pom.xml b/controlloop/templates/archetype-cl-casablanca/pom.xml index e98eab18c..dd9ef5abe 100644 --- a/controlloop/templates/archetype-cl-beijing/pom.xml +++ b/controlloop/templates/archetype-cl-casablanca/pom.xml @@ -30,10 +30,10 @@ <version>1.3.0-SNAPSHOT</version> </parent> - <artifactId>archetype-cl-beijing</artifactId> + <artifactId>archetype-cl-casablanca</artifactId> <name>${project.artifactId}</name> - <description>Archetype to generate a yaml based control loop for ONAP Beijing release</description> + <description>Archetype to generate a yaml based control loop for ONAP Casablanca release</description> <build> <extensions> diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/META-INF/maven/archetype-metadata.xml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml index 2acec10dd..2acec10dd 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/pom.xml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/pom.xml index fae94aecb..1fc31bae2 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/pom.xml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/pom.xml @@ -29,7 +29,7 @@ <packaging>kjar</packaging> <name>${artifactId}</name> - <description>Control Loop Beijing Release Rules</description> + <description>Control Loop Casablanca Release Rules</description> <properties> <maven.compiler.source>1.8</maven.compiler.source> diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml index 03001520b..03001520b 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/VoLTE.yaml diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties index 390a946fe..390a946fe 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties 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-casablanca/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json index 148e35562..148e35562 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json index 985685000..985685000 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/appc.lcm.success.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json index 2c6570d03..2c6570d03 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/appc.legacy.success.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json index 3d6dc4ae1..3d6dc4ae1 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.abatement.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json index 98403b034..98403b034 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vcpe.onset.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json index 80730e9e3..80730e9e3 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vdns.onset.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json index 0aa0effa6..0aa0effa6 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.vfw.onset.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json index 2cf28fb3f..2cf28fb3f 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/dcae.volte.onset.json diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/so.success.json b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/so.success.json index 8f3387e4d..8f3387e4d 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/so.success.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/so.success.json diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vCPE.yaml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vCPE.yaml index 2838b6127..2838b6127 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vCPE.yaml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vCPE.yaml diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vDNS.yaml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml index d4ed17396..d4ed17396 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vDNS.yaml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml diff --git a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vFW.yaml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vFW.yaml index dcbdf5459..dcbdf5459 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vFW.yaml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vFW.yaml 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-casablanca/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json index 6b0ebd227..6b0ebd227 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vcpe.brmsgw.params.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json index 744723c87..744723c87 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vdns.brmsgw.params.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json index 353c19c59..353c19c59 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vfw.brmsgw.params.json 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-casablanca/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json index c20b25adc..c20b25adc 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/volte.brmsgw.params.json 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-casablanca/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml index 0e6660e5c..d30e3c525 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/resources/META-INF/kmodule.xml @@ -24,6 +24,6 @@ <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> <kbase name="rules"> - <ksession name="beijing"/> + <ksession name="casablanca"/> </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-casablanca/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl index 7e0d7e1a0..24cb7f86a 100644 --- a/controlloop/templates/archetype-cl-beijing/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl +++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl @@ -7,9 +7,9 @@ * 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. @@ -97,19 +97,17 @@ end /* * -* Called to insert the ControlLoopParams object into working memory from the BRMSGW. +* Called when the ControlLoopParams object has been inserted 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 @@ -126,12 +124,12 @@ rule "EVENT" $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 @@ -145,18 +143,18 @@ rule "EVENT" 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"); + throw new ControlLoopException($event.getClosedLoopEventStatus() + " received with no prior onset"); } else { // // Create an EventManager @@ -203,7 +201,7 @@ rule "EVENT" // 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 @@ -212,7 +210,7 @@ rule "EVENT" } } 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()); @@ -245,66 +243,66 @@ rule "EVENT.MANAGER" then Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} clTimer={}", + 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 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(), + 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()); @@ -319,16 +317,16 @@ rule "EVENT.MANAGER" // TargetLock lock = $manager.unlockCurrentOperation(); if (lock != null) { - logger.debug("{}: {}: retracting lock=", $clName, + logger.debug("{}: {}: retracting lock=", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), lock); retract(lock); } // // Retract everything from memory // - logger.info("{}: {}: retracting onset, manager, and timer", + logger.info("{}: {}: retracting onset, manager, and timer", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - + retract($manager.getOnsetEvent()); retract($manager); retract($clTimer); @@ -342,18 +340,18 @@ rule "EVENT.MANAGER" // Check whether we need to wait for abatement // if ($manager.getProcessor().getControlLoop().getAbatement() == true && notification.getNotification() == ControlLoopNotificationType.FINAL_SUCCESS) { - logger.info("{}: {}: waiting for abatement ..", + 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(), + 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 // @@ -363,16 +361,16 @@ rule "EVENT.MANAGER" // TargetLock lock = $manager.unlockCurrentOperation(); if (lock != null) { - logger.debug("{}: {}: retracting lock=", $clName, + logger.debug("{}: {}: retracting lock=", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), lock); retract(lock); } // // Retract everything from memory // - logger.info("{}: {}: retracting onset, manager, and timer", + logger.info("{}: {}: retracting onset, manager, and timer", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - + retract($manager.getOnsetEvent()); retract($manager); retract($clTimer); @@ -388,77 +386,81 @@ rule "EVENT.MANAGER" // 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(), + 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()); + // + // 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.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); + + if(result.getB() != null) { + retract(result.getB()); + } } - logger.info("{}: {}: starting operation={}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), + logger.info("{}: {}: starting operation={}", + $clName, $params.getPolicyName() + "." + drools.getRule().getName(), operation); } else { - // - // Probably waiting for abatement - // - logger.info("{}: {}: no operation, probably waiting for abatement", + // + // 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()); + 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); - + + PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); + retract($event); retract($manager); retract($clTimer); } - + end /* @@ -477,100 +479,120 @@ rule "EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED" then Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} operation={} lock={}", + logger.info("{}: {}: event={} manager={} operation={} lock={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), - $event, $manager, $operation, $lock); + $event, $manager, $operation, $lock); Object request = null; boolean caughtException = false; + try { request = $operation.startOperation($event); - } - catch (ControlLoopException e) { + + 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)}; + } + } + + } catch (Exception e) { String msg = e.getMessage(); - logger.warn("{}: {}: operation={}: AAI failure: {}", - $clName, $params.getPolicyName() + "." + drools.getRule().getName(), + logger.warn("{}: {}: operation={}: AAI failure: {}", + $clName, + $params.getPolicyName() + "." + 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($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()); + + PolicyEngine.manager.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)}; } - 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 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. * */ @@ -584,10 +606,10 @@ rule "EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED" then Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} operation={} lock={}", + 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") // @@ -599,23 +621,23 @@ rule "EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED" 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, + // 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 + // + // 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(), @@ -633,14 +655,14 @@ rule "EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED" end // -// This rule will be triggered when a thread talking to the XACML Guard inserts a +// 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() ) + $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() ) @@ -648,16 +670,16 @@ rule "GUARD.RESPONSE" then Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); - logger.info("{}: {}: event={} manager={} operation={} lock={} opTimer={} guardResponse={}", + 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") // @@ -669,11 +691,11 @@ rule "GUARD.RESPONSE" 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 { @@ -684,9 +706,9 @@ rule "GUARD.RESPONSE" retract($operation); modify($manager) {finishOperation($operation)}; } - + retract($guardResponse); - + end /* @@ -703,7 +725,7 @@ end rule "APPC.RESPONSE" when $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) + $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() ) @@ -713,7 +735,7 @@ rule "APPC.RESPONSE" Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", + logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), $event, $manager, $operation, $lock, $opTimer, $response); // @@ -721,7 +743,7 @@ rule "APPC.RESPONSE" // PolicyResult policyResult = $operation.onResponse($response); if (policyResult != null) { - logger.debug("{}: {}: operation finished - result={}", + logger.debug("{}: {}: operation finished - result={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), policyResult); // @@ -795,14 +817,14 @@ rule "APPC.RESPONSE.CLEANUP" when $params : ControlLoopParams( $clName : getClosedLoopControlName() ) $response : Response($id : getCommonHeader().RequestId ) - not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) + 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={}", + logger.debug("{}: {}: orphan appc response={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), $id); - + // // Retract it // @@ -817,7 +839,7 @@ end rule "APPC.LCM.RESPONSE" when $params : ControlLoopParams( $clName : getClosedLoopControlName() ) - $event : VirtualControlLoopEvent( closedLoopControlName == $clName, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) + $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() ) @@ -827,19 +849,19 @@ rule "APPC.LCM.RESPONSE" Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); logger.info("{}: {}", $clName, $params.getPolicyName() + "." + drools.getRule().getName()); - logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={} response={}", + 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={}", + 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) // @@ -901,12 +923,12 @@ rule "APPC.LCM.RESPONSE.CLEANUP" when $params : ControlLoopParams( $clName : getClosedLoopControlName() ) $response : LcmResponseWrapper($id : getBody().getCommonHeader().getRequestId ) - not ( VirtualControlLoopEvent( requestId == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) + 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={}", + logger.debug("{}: {}: orphan appc response={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), $id); // // Retract it @@ -929,21 +951,21 @@ rule "SO.RESPONSE" $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={}", + 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={}", + logger.debug("{}: {}: operation finished - result={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), policyResult); - + // // This Operation has completed, construct a notification showing our results // @@ -1004,69 +1026,69 @@ end * */ rule "VFC.RESPONSE" - when - $params : ControlLoopParams( $clName : getClosedLoopControlName() ) + 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() ) + $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()); + $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); + 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 @@ -1085,13 +1107,13 @@ rule "EVENT.MANAGER.OPERATION.TIMEOUT" $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={}", + logger.debug("{}: {}: event={} manager={} operation={} lock={} opTimer={}", $clName, $params.getPolicyName() + "." + drools.getRule().getName(), $event, $manager, $operation, $lock, $operation, $opTimer); - + // // Tell it its timed out // @@ -1147,26 +1169,14 @@ rule "EVENT.MANAGER.TIMEOUT" $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()); - } + logger.debug("{}: {}: event={}", + $clName, $params.getPolicyName() + "." + drools.getRule().getName(), + $event); // // Tell the Event Manager it has timed out // @@ -1182,44 +1192,62 @@ rule "EVENT.MANAGER.TIMEOUT" PolicyEngine.manager.deliver("POLICY-CL-MGT", notification); } // - // Retract EVERYTHING + // Retract the event // retract($event); +end + +/* +* +* This rule cleans up the manager and other objects after an event has +* been retracted. +* +*/ +rule "EVENT.MANAGER.CLEANUP" + when + $manager : ControlLoopEventManager( $clName : getClosedLoopControlName(), $requestId : getRequestID() ) + $clTimer : ControlLoopTimer ( closedLoopControlName == $clName, requestID == $requestId.toString() ) + $operations : LinkedList() + from collect( ControlLoopOperationManager( onset.closedLoopControlName == $clName, onset.getRequestId() == $requestId ) ) + $opTimers : LinkedList() + from collect( OperationTimer( closedLoopControlName == $clName, requestID == $requestId.toString() ) ) + $locks : LinkedList() + from collect( TargetLock (requestID == $requestId) ) + not( VirtualControlLoopEvent( closedLoopControlName == $clName, requestId == $requestId ) ) + then + + Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage()); + logger.info("{}: {}", $clName, drools.getRule().getName()); + + logger.debug("{}: {}: manager={} clTimer={} operations={}", + $clName, drools.getRule().getName(), + $manager, $clTimer, $operations.size()); + + // + // Retract EVERYTHING + // retract($manager); retract($clTimer); - if ($operations != null && $operations.size() > 0) { - Iterator<ControlLoopOperationManager> iter = $operations.iterator(); - while (iter.hasNext()) { - ControlLoopOperationManager manager = iter.next(); - retract(manager); - } + + for(Object manager: $operations) { + retract((ControlLoopOperationManager) manager); } - if ($opTimers != null && $opTimers.size() > 0) { - Iterator<OperationTimer> iter = $opTimers.iterator(); - while (iter.hasNext()) { - OperationTimer opTimer = iter.next(); - retract(opTimer); - } + for(Object opTimer: $opTimers) { + retract((OperationTimer) 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); - } + for(Object lock: $locks) { + TargetLock tgt = (TargetLock) lock; + // + // Ensure we release the lock + // + PolicyGuard.unlockTarget(tgt); + retract(tgt); } end /* * -* This rule will clean up any rogue onsets where there is no +* This rule will clean up any rogue onsets where there is no * ControlLoopParams object corresponding to the onset event. * */ @@ -1228,10 +1256,10 @@ rule "EVENT.CLEANUP" $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={}", + logger.debug("{}: {}: orphan onset event={}", $clName, drools.getRule().getName(), $event); retract($event); diff --git a/controlloop/templates/archetype-cl-beijing/src/test/resources/projects/basic/archetype.properties b/controlloop/templates/archetype-cl-casablanca/src/test/resources/projects/basic/archetype.properties index 8cc10c97c..8cc10c97c 100644 --- a/controlloop/templates/archetype-cl-beijing/src/test/resources/projects/basic/archetype.properties +++ b/controlloop/templates/archetype-cl-casablanca/src/test/resources/projects/basic/archetype.properties diff --git a/controlloop/templates/pom.xml b/controlloop/templates/pom.xml index a614ade0b..10a4a24d2 100644 --- a/controlloop/templates/pom.xml +++ b/controlloop/templates/pom.xml @@ -35,7 +35,7 @@ <modules> <module>template.demo</module> <module>archetype-cl-amsterdam</module> - <module>archetype-cl-beijing</module> + <module>archetype-cl-casablanca</module> </modules> |