From a6d4077e3639a0f3478f0cbf51e06ef46517a10d Mon Sep 17 00:00:00 2001 From: "Straubs, Ralph (rs8887)" Date: Fri, 17 Jul 2020 10:38:02 -0400 Subject: Add tdjam-controller the details is on wiki: https://wiki.onap.org/display/DW/tdjam+Feature+for+Tosca-Driven+Control+Loops Fixed some eclipse warnings. Revised the interaction between a manager and its SerialWorkQueue to address some threading issues. The original code started processing the event as soon as the manager was created, WHILE it was still being added to the map. During junit tests, the event responses came back, within the same thread, which then attempted to remove the manager from the map. This resulted in a ConcurrentHashMap exception. Issue-ID: POLICY-2415 Change-Id: I94a4152637be76e5b2aea2d869afd84dfb413a0e Signed-off-by: Straubs, Ralph (rs8887) Signed-off-by: jhh Signed-off-by: Taka Cho Signed-off-by: Jim Hahn --- .../common/feature-controlloop-tdjam/pom.xml | 113 +++++++++++++++++++++ .../src/assembly/assemble_zip.xml | 84 +++++++++++++++ .../main/feature/config/logback-include-tdjam.xml | 56 ++++++++++ .../feature/config/tdjam-controller.properties | 61 +++++++++++ .../controlloop/feature/tdjam/TdjamFeature.java | 46 +++++++++ ...p.policy.drools.features.PolicyEngineFeatureApi | 1 + .../feature/tdjam/TdjamFeatureTest.java | 34 +++++++ 7 files changed, 395 insertions(+) create mode 100644 controlloop/common/feature-controlloop-tdjam/pom.xml create mode 100644 controlloop/common/feature-controlloop-tdjam/src/assembly/assemble_zip.xml create mode 100644 controlloop/common/feature-controlloop-tdjam/src/main/feature/config/logback-include-tdjam.xml create mode 100644 controlloop/common/feature-controlloop-tdjam/src/main/feature/config/tdjam-controller.properties create mode 100644 controlloop/common/feature-controlloop-tdjam/src/main/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeature.java create mode 100644 controlloop/common/feature-controlloop-tdjam/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureApi create mode 100644 controlloop/common/feature-controlloop-tdjam/src/test/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeatureTest.java (limited to 'controlloop/common/feature-controlloop-tdjam') diff --git a/controlloop/common/feature-controlloop-tdjam/pom.xml b/controlloop/common/feature-controlloop-tdjam/pom.xml new file mode 100644 index 000000000..d5c6f4f5f --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/pom.xml @@ -0,0 +1,113 @@ + + + + 4.0.0 + + + org.onap.policy.drools-applications.controlloop.common + drools-applications-common + 1.7.1-SNAPSHOT + + + feature-controlloop-tdjam + + + Load Experimental TDJAM Control Loop Controller as a feature. + + + + + + src/main/feature + true + + + src/main/resources + + + + + maven-assembly-plugin + + + zipfile + + single + + package + + true + ${project.artifactId}-${project.version} + + src/assembly/assemble_zip.xml + + false + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + + copy-dependencies + + prepare-package + + ${project.build.directory}/assembly/lib + false + true + true + false + false + false + runtime + true + + + + + + + + + + org.onap.policy.drools-applications.controlloop.common + controller-tdjam + ${project.version} + + + org.onap.policy.drools-pdp + policy-management + ${version.policy.drools-pdp} + provided + + + junit + junit + test + + + diff --git a/controlloop/common/feature-controlloop-tdjam/src/assembly/assemble_zip.xml b/controlloop/common/feature-controlloop-tdjam/src/assembly/assemble_zip.xml new file mode 100644 index 000000000..746754952 --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/src/assembly/assemble_zip.xml @@ -0,0 +1,84 @@ + + + + + + feature-controlloop-tdjam-package + + zip + + + false + + + + target + lib/feature + + feature-controlloop-tdjam-${project.version}.jar + + + + target/assembly/lib + artifacts + + controller-tdjam-${project.version}.jar + + + + target/assembly/lib + lib/dependencies + + *.jar + + + controller-tdjam-${project.version}.jar + + + + target/classes/config + config + 0644 + + + + src/main/feature/bin + bin + 0755 + + + + src/main/feature/db + db + 0744 + + + + src/main/feature/install + install + 0755 + + + + diff --git a/controlloop/common/feature-controlloop-tdjam/src/main/feature/config/logback-include-tdjam.xml b/controlloop/common/feature-controlloop-tdjam/src/main/feature/config/logback-include-tdjam.xml new file mode 100644 index 000000000..ae0384c60 --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/src/main/feature/config/logback-include-tdjam.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + ${logDir}/${tdjamLog}.log + + ${logDir}/${tdjamLog}.%d{yyyy-MM-dd}.%i.log.zip + 50MB + 30 + 10GB + + + ${networkPattern} + + + + + + + + + + + + diff --git a/controlloop/common/feature-controlloop-tdjam/src/main/feature/config/tdjam-controller.properties b/controlloop/common/feature-controlloop-tdjam/src/main/feature/config/tdjam-controller.properties new file mode 100644 index 000000000..d507998c0 --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/src/main/feature/config/tdjam-controller.properties @@ -0,0 +1,61 @@ +### +# ============LICENSE_START======================================================= +# ONAP +# ================================================================================ +# Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +controller.name=tdjam +controller.type=tdjam + +rules.groupId=${project.groupId} +rules.artifactId=controller-tdjam +rules.version=${project.version} + +dmaap.source.topics=DCAE_TOPIC,APPC-CL,APPC-LCM-WRITE,SDNR-CL-RSP +dmaap.sink.topics=APPC-CL,APPC-LCM-READ,POLICY-CL-MGT,SDNR-CL,DCAE_CL_RSP + +dmaap.source.topics.DCAE_TOPIC.events=\ + org.onap.policy.controlloop.CanonicalOnset,org.onap.policy.controlloop.CanonicalAbated +dmaap.source.topics.DCAE_TOPIC.events.org.onap.policy.controlloop.CanonicalOnset.filter=\ + [?($.closedLoopEventStatus == 'ONSET')] +dmaap.source.topics.DCAE_TOPIC.events.org.onap.policy.controlloop.CanonicalAbated.filter=\ + [?($.closedLoopEventStatus == 'ABATED')] +dmaap.source.topics.DCAE_TOPIC.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gson + +dmaap.source.topics.APPC-CL.events=org.onap.policy.appc.Response +dmaap.source.topics.APPC-CL.events.org.onap.policy.appc.Response.filter=[?($.CommonHeader && $.Status)] +dmaap.source.topics.APPC-CL.events.custom.gson=org.onap.policy.appc.util.Serialization,gsonPretty + +dmaap.source.topics.APPC-LCM-WRITE.events=org.onap.policy.appclcm.AppcLcmDmaapWrapper +dmaap.source.topics.APPC-LCM-WRITE.events.org.onap.policy.appclcm.AppcLcmDmaapWrapper.filter=[?($.type == 'response')] +dmaap.source.topics.APPC-LCM-WRITE.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson + +dmaap.sink.topics.APPC-CL.events=org.onap.policy.appc.Request +dmaap.sink.topics.APPC-CL.events.custom.gson=org.onap.policy.appc.util.Serialization,gsonPretty + +dmaap.sink.topics.APPC-LCM-READ.events=org.onap.policy.appclcm.AppcLcmDmaapWrapper +dmaap.sink.topics.APPC-LCM-READ.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson + +dmaap.sink.topics.POLICY-CL-MGT.events=org.onap.policy.controlloop.VirtualControlLoopNotification +dmaap.sink.topics.POLICY-CL-MGT.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty + +dmaap.sink.topics.DCAE_CL_RSP.events=org.onap.policy.controlloop.ControlLoopResponse +dmaap.sink.topics.DCAE_CL_RSP.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty + +dmaap.source.topics.SDNR-CL-RSP.events=org.onap.policy.sdnr.PciResponseWrapper +dmaap.source.topics.SDNR-CL-RSP.events.org.onap.policy.sdnr.PciResponseWrapper.filter=[?($.type == 'response')] +dmaap.source.topics.SDNR-CL-RSP.events.custom.gson=org.onap.policy.sdnr.util.Serialization,gson diff --git a/controlloop/common/feature-controlloop-tdjam/src/main/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeature.java b/controlloop/common/feature-controlloop-tdjam/src/main/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeature.java new file mode 100644 index 000000000..615dba4c8 --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/src/main/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeature.java @@ -0,0 +1,46 @@ +/* + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.drools.apps.controlloop.feature.tdjam; + +import org.onap.policy.drools.features.PolicyEngineFeatureApi; + +/** + * TDJAM Use Cases installation as a feature saves time loading the controller at + * runtime over the usual installation from nexus. It also reduces potential for errors in + * the pom.xml generated in the brmsgw side. + * + *

+ * There is no impact on other components as the brmsgw etc .. they will continue + * operating as usual. + * + *

+ * This class will be expanded in the future for additional functionality + * + */ +public class TdjamFeature implements PolicyEngineFeatureApi { + + public static final int SEQNO = 1000; + + @Override + public int getSequenceNumber() { + return SEQNO; + } +} diff --git a/controlloop/common/feature-controlloop-tdjam/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureApi b/controlloop/common/feature-controlloop-tdjam/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureApi new file mode 100644 index 000000000..8ce2ea7d9 --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/src/main/resources/META-INF/services/org.onap.policy.drools.features.PolicyEngineFeatureApi @@ -0,0 +1 @@ +org.onap.policy.drools.apps.controlloop.feature.tdjam.TdjamFeature diff --git a/controlloop/common/feature-controlloop-tdjam/src/test/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeatureTest.java b/controlloop/common/feature-controlloop-tdjam/src/test/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeatureTest.java new file mode 100644 index 000000000..0d64c0496 --- /dev/null +++ b/controlloop/common/feature-controlloop-tdjam/src/test/java/org/onap/policy/drools/apps/controlloop/feature/tdjam/TdjamFeatureTest.java @@ -0,0 +1,34 @@ +/* + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.drools.apps.controlloop.feature.tdjam; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.onap.policy.drools.apps.controlloop.feature.tdjam.TdjamFeature; + +public class TdjamFeatureTest { + + @Test + public void testGetSequenceNumber() { + assertEquals(TdjamFeature.SEQNO, new TdjamFeature().getSequenceNumber()); + } +} -- cgit 1.2.3-korg