diff options
13 files changed, 477 insertions, 44 deletions
diff --git a/controlloop/common/actors/actor.vfc/pom.xml b/controlloop/common/actors/actor.vfc/pom.xml index de6f05841..c52b6aed7 100644 --- a/controlloop/common/actors/actor.vfc/pom.xml +++ b/controlloop/common/actors/actor.vfc/pom.xml @@ -28,5 +28,12 @@ <version>1.1.0-SNAPSHOT</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>aai</artifactId> + <version>1.1.0-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + </dependencies> </project> diff --git a/controlloop/common/actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VFCActorServiceProvider.java b/controlloop/common/actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VFCActorServiceProvider.java index bd06ef133..49b93e8aa 100644 --- a/controlloop/common/actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VFCActorServiceProvider.java +++ b/controlloop/common/actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VFCActorServiceProvider.java @@ -5,9 +5,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. @@ -19,27 +19,35 @@ package org.onap.policy.controlloop.actor.vfc; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; -import org.onap.policy.controlloop.ControlLoopOperation; import org.onap.policy.controlloop.VirtualControlLoopEvent; -import org.onap.policy.controlloop.actorServiceProvider.spi.Actor; -import org.onap.policy.controlloop.policy.Policy; -import org.onap.policy.vfc.VFCHealActionVmInfo; -import org.onap.policy.vfc.VFCHealAdditionalParams; -import org.onap.policy.vfc.VFCHealRequest; import org.onap.policy.vfc.VFCRequest; +import org.onap.policy.vfc.VFCHealRequest; +import org.onap.policy.vfc.VFCHealAdditionalParams; +import org.onap.policy.vfc.VFCHealActionVmInfo; +import org.onap.policy.controlloop.ControlLoopOperation; +import org.onap.policy.controlloop.policy.Policy; +import org.onap.policy.controlloop.actorServiceProvider.spi.Actor; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import org.onap.policy.aai.AAIManager; +import org.onap.policy.aai.AAIGETVnfResponse; + +import java.util.UUID; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class VFCActorServiceProvider implements Actor { + private static final Logger logger = LoggerFactory.getLogger(VFCActorServiceProvider.class); private static final ImmutableList<String> recipes = ImmutableList.of("Restart"); private static final ImmutableMap<String, List<String>> targets = new ImmutableMap.Builder<String, List<String>>() - .put("Restart", ImmutableList.of("VM")) - .build(); + .put("Restart", ImmutableList.of("VM")).build(); @Override public String actor() { @@ -61,12 +69,14 @@ public class VFCActorServiceProvider implements Actor { return Collections.emptyList(); } - public static VFCRequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, Policy policy) { + public static VFCRequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, + Policy policy) { // Construct an VFC request VFCRequest request = new VFCRequest(); // TODO: Verify service-instance-id is part of onset event - request.nsInstanceId = onset.AAI.get("service-instance.service-instance-id"); + request.nsInstanceId = getAAIServiceInstance(onset); // onset.AAI.get("service-instance.service-instance-id"); + request.healRequest = new VFCHealRequest(); request.healRequest.vnfInstanceId = onset.AAI.get("generic-vnf.vnf-id"); request.healRequest.cause = operation.message; @@ -82,11 +92,41 @@ public class VFCActorServiceProvider implements Actor { request.healRequest.additionalParams.actionInfo.vmname = onset.AAI.get("vserver.vserver-name"); break; default: - //TODO: default + // TODO: default break; } return request; } - + private static String getAAIServiceInstance(VirtualControlLoopEvent event) { + AAIGETVnfResponse response = null; + UUID requestID = event.requestID; + String serviceInstance = event.AAI.get("service-instance.service-instance-id"); + String vnfName = event.AAI.get("generic-vnf.vnf-name"); + String vnfID = event.AAI.get("generic-vnf.vnf-id"); + + String urlBase = "http://localhost:6666"; + String username = "testUser"; + String password = "testPass"; + if (serviceInstance == null) { + try { + AAIManager manager = new AAIManager(); + if (vnfName != null) { + String url = urlBase + "/aai/v11/network/generic-vnfs/generic-vnf?vnf-name="; + response = manager.getQueryByVnfName(url, username, password, requestID, vnfName); + serviceInstance = response.serviceId; + } else if (vnfID != null) { + String url = urlBase + "/aai/v11/network/generic-vnfs/generic-vnf/"; + response = manager.getQueryByVnfID(url, username, password, requestID, vnfID); + serviceInstance = response.serviceId; + } else { + logger.error("getAAIServiceInstance failed"); + + } + } catch (Exception e) { + logger.error("getAAIServiceInstance exception: ", e); + } + } + return serviceInstance; + } } diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java index f891a2c6a..4b5d6c935 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java @@ -540,7 +540,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable { if (vnfResponse == null) { throw new ControlLoopException("AAI Response is null (query by vnf-id)"); } - if (vnfResponse != null && isClosedLoopDisabled(vnfResponse) == true) { + if (isClosedLoopDisabled(vnfResponse) == true) { throw new ControlLoopException("is-closed-loop-disabled is set to true"); } } else if (event.AAI.get("generic-vnf.vnf-name") != null) { @@ -548,7 +548,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable { if (vnfResponse == null) { throw new ControlLoopException("AAI Response is null (query by vnf-name)"); } - if (vnfResponse != null && isClosedLoopDisabled(vnfResponse) == true) { + if (isClosedLoopDisabled(vnfResponse) == true) { throw new ControlLoopException("is-closed-loop-disabled is set to true"); } } else if (event.AAI.get("vserver.vserver-name") != null) { @@ -556,7 +556,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable { if (vserverResponse == null) { throw new ControlLoopException("AAI Response is null (query by vserver-name)"); } - if (vserverResponse != null && isClosedLoopDisabled(vserverResponse) == true) { + if (isClosedLoopDisabled(vserverResponse) == true) { throw new ControlLoopException("is-closed-loop-disabled is set to true"); } } diff --git a/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AAINQResponseTest.java b/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AAINQResponseTest.java index be11942c5..6b1b624ef 100644 --- a/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AAINQResponseTest.java +++ b/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AAINQResponseTest.java @@ -19,14 +19,12 @@ */ package org.onap.policy.aai; -import static org.junit.Assert.*; -import java.util.List; -import java.util.LinkedList; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.LinkedList; import org.junit.Test; import org.onap.policy.aai.util.Serialization; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AAINQResponseTest { private static final Logger logger = LoggerFactory.getLogger(AAINQResponseTest.class); diff --git a/controlloop/packages/apps/src/files/apps-installer b/controlloop/packages/apps/src/files/apps-installer new file mode 100644 index 000000000..f53a48b60 --- /dev/null +++ b/controlloop/packages/apps/src/files/apps-installer @@ -0,0 +1,54 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# Apps Installation Package +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +# +# This file will be automatically invoked by the main pdp-d installer +# for drools applications +# + +echo "APPS INSTALL" + +source ${POLICY_HOME}/etc/build.info + +# caching in local maven repo all dependencies to make it +# easier for drools kie-ci - aether to fetch them + +mvn dependency:get -Dartifact=com.att.research.xacml:xacml-pdp:1.0.0:jar + +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:archetype-cl-amsterdam:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:events:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:appc:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:appclcm:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:aai:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:so:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:trafficgenerator:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:eventmanager:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:guard:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:actorServiceProvider:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:actor.appc:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:actor.appclcm:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:actor.so:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:actor.vfc:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:policy-yaml:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:demo:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:template.demo:${version}:jar -Dtransitive=false +mvn dependency:get -Dartifact=org.onap.policy.drools-applications:guard:${version}:jar -Dtransitive=false diff --git a/controlloop/packages/artifacts/pom.xml b/controlloop/packages/artifacts/pom.xml index 486c55cb4..d8c0f570d 100644 --- a/controlloop/packages/artifacts/pom.xml +++ b/controlloop/packages/artifacts/pom.xml @@ -96,6 +96,12 @@ <version>${project.version}</version> <type>jar</type> </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>appclcm</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> <dependency> <groupId>org.onap.policy.drools-applications</groupId> <artifactId>vfc</artifactId> @@ -116,6 +122,12 @@ </dependency> <dependency> <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>sdc</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> <artifactId>trafficgenerator</artifactId> <version>${project.version}</version> <type>jar</type> @@ -134,6 +146,36 @@ </dependency> <dependency> <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>actorServiceProvider</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>actor.appc</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>actor.appclcm</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>actor.so</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> + <artifactId>actor.vfc</artifactId> + <version>${project.version}</version> + <type>jar</type> + </dependency> + <dependency> + <groupId>org.onap.policy.drools-applications</groupId> <artifactId>policy-yaml</artifactId> <version>${project.version}</version> <type>jar</type> @@ -150,5 +192,11 @@ <version>${project.version}</version> <type>jar</type> </dependency> + <dependency> + <groupId>com.att.research.xacml</groupId> + <artifactId>xacml-pdp</artifactId> + <version>1.0.0</version> + <type>jar</type> + </dependency> </dependencies> </project> diff --git a/controlloop/packages/artifacts/src/assembly/zip.xml b/controlloop/packages/artifacts/src/assembly/zip.xml index e3f018d26..3c7c61973 100644 --- a/controlloop/packages/artifacts/src/assembly/zip.xml +++ b/controlloop/packages/artifacts/src/assembly/zip.xml @@ -27,7 +27,6 @@ <dependencySets> <dependencySet> <outputDirectory>artifacts</outputDirectory> - <useTransitiveDependencies>false</useTransitiveDependencies> </dependencySet> </dependencySets> </assembly> diff --git a/controlloop/packages/basex/src/files/bin/create-cl-amsterdam b/controlloop/packages/basex/src/files/bin/create-cl-amsterdam new file mode 100644 index 000000000..6aad8a33a --- /dev/null +++ b/controlloop/packages/basex/src/files/bin/create-cl-amsterdam @@ -0,0 +1,235 @@ +#! /bin/bash + +### +# ============LICENSE_START======================================================= +# PDP-D APPS Base Package +# ================================================================================ +# 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========================================================= +### + +# Interactive script to generate and install in a pdp-d control loops demo rules +# for a standalone PDP-D usage + +source ${POLICY_HOME}/etc/build.info + +echo "Control Loop CLI Generator for R1 Amsterdam Release" +echo "---------------------------------------------------" +echo + +GROUP_ID="org.onap.policy.rules.amsterdam" +ARTIFACT_ID="amsterdam" +VERSION="1.1.0" +PACKAGE="org.onap.policy.rules.amsterdam" +CONTROL_LOOP_NAME="ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e" +POLICY_SCOPE="amsterdam" +POLICY_NAME="vcpe" +POLICY_VERSION="v0.0.1" +CONTROL_LOOP_YAML="controlLoop%3A%0A++version%3A+2.0.0%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0A++trigger_policy%3A+unique-policy-id-1-restart%0A++timeout%3A+3600%0A+%0Apolicies%3A%0A+%0A++-+id%3A+unique-policy-id-1-restart%0A++++name%3A+Restart+the+VM%0A++++description%3A%0A++++actor%3A+APPC%0A++++recipe%3A+Restart%0A++++target%3A%0A++++++type%3A+VM%0A++++retry%3A+3%0A++++timeout%3A+1200%0A++++success%3A+final_success%0A++++failure%3A+final_failure%0A++++failure_timeout%3A+final_failure_timeout%0A++++failure_retries%3A+final_failure_retries%0A++++failure_exception%3A+final_failure_exception%0A++++failure_guard%3A" +DMAAP_SERVERS="vm1.mr.simpledemo.openecomp.org" +DCAE_TOPIC="unauthenticated.TCA_EVENT_OUTPUT" +DCAE_SERVERS="10.0.4.102" + +read -e -i "${GROUP_ID}" -p "Target Rules Group Id> " GROUP_ID +read -e -i "${ARTIFACT_ID}" -p "Target Rules Artifact Id> " ARTIFACT_ID +read -e -i "${VERSION}" -p "Target Rules Version> " VERSION +read -e -i "${PACKAGE}" -p "Target Rules Java Package> " PACKAGE + +read -e -i "${CONTROL_LOOP_NAME}" -p "Template Control Loop Name> " CONTROL_LOOP_NAME +read -e -i "${POLICY_SCOPE}" -p "Template Policy Scope> " POLICY_SCOPE +read -e -i "${POLICY_NAME}" -p "Template Policy Name> " POLICY_NAME +read -e -i "${POLICY_VERSION}" -p "Template Policy Version> " POLICY_VERSION + +read -e -i "${CONTROL_LOOP_YAML}" -p "Control Loop Yaml> " CONTROL_LOOP_YAML + +read -e -i "${DCAE_SERVERS}" -p "Configuration DCAE DMaaP Servers> " DCAE_SERVERS +read -e -i "${DMAAP_SERVERS}" -p "Configuration Open DMaaP Servers> " DMAAP_SERVERS +read -e -i "${DCAE_TOPIC}" -p "Template DCAE Topic> " DCAE_TOPIC + +echo +echo + +if [ -z "${GROUP_ID}" ]; then echo "Aborting: Rules Maven Group Id not provided"; exit 1; fi +if [ -z "${ARTIFACT_ID}" ]; then echo "Aborting: Rules Maven Coordinates Artifact Id not provided"; exit 1; fi +if [ -z "${VERSION}" ]; then echo "Aborting: Rules Maven Coordinates Version not provided"; exit 1; fi +if [ -z "${PACKAGE}" ]; then echo "Aborting: Rules Package not provided"; exit 1; fi +if [ -z "${CONTROL_LOOP_NAME}" ]; then echo "Aborting: Template Control Loop Name not provided"; exit 1; fi +if [ -z "${POLICY_SCOPE}" ]; then echo "Aborting: Template Policy Scope not provided"; exit 1; fi +if [ -z "${POLICY_NAME}" ]; then echo "Aborting: Template Policy Name not provided"; exit 1; fi +if [ -z "${POLICY_VERSION}" ]; then echo "Aborting: Template Policy Version not provided"; exit 1; fi +if [ -z "${CONTROL_LOOP_YAML}" ]; then echo "Aborting: Control Loop Yaml not provided"; exit 1; fi + +if [ -z "${DCAE_TOPIC}" ]; then echo "Aborting: Configuration DCAE DMaaP Topic not provided"; exit 1; fi +if [ -z "${DMAAP_SERVERS}" ]; then echo "Aborting: Configuration Open DMaaP Servers not provided"; exit 1; fi +if [ -z "${DCAE_SERVERS}" ]; then echo "Aborting: Configuration DCAE DMaaP Servers not provided"; exit 1; fi + +if [[ "${version}" == *-SNAPSHOT ]]; then + DEPENDENCIES_VERSION="1.1.0-SNAPSHOT" +else + DEPENDENCIES_VERSION="${version}" +fi + +read -e -i "${DEPENDENCIES_VERSION}" -p "Control Loop Jar Dependencies Version (ie: 1.1.0-SNAPSHOT, or 1.1.0) > " DEPENDENCIES_VERSION +if [ -z "${DEPENDENCIES_VERSION}" ]; then echo "Aborting: Control Loop Jar Dependencies Version not provided"; exit 1; fi + +echo "---------------------------------------------------------------------------------------" +echo "Please review the Control Loop Rules, Template, and Configuration Parameters:" +echo +echo "The generated rules jar will be installed in a local Maven Repository" +echo +echo "Rules Maven Artifact Generation: Group Id: ${GROUP_ID}" +echo "Rules Maven Artifact Generation: Artifact Id: ${ARTIFACT_ID}" +echo "Rules Maven Artifact Generation: Version: ${VERSION}" +echo "Rules Maven Artifact Generation: Java Package: ${PACKAGE}" +echo "Rules Maven Artifact Generation: pom: Java Libraries Dependencies Version: ${DEPENDENCIES_VERSION}" +echo +echo "Template Drools DRL Expansion: Control Loop Control Name: ${CONTROL_LOOP_NAME}" +echo "Template Drools DRL Expansion: Control Loop Policy Scope: ${POLICY_SCOPE}" +echo "Template Drools DRL Expansion: Control Loop Policy Name: ${POLICY_NAME}" +echo "Template Drools DRL Expansion: Control Loop Policy Version: ${POLICY_VERSION}" +echo "Template Drools DRL Expansion: Control Loop Yaml: ${CONTROL_LOOP_YAML}" +echo +echo "Configuration Policy Controller: Rules: Group Id: ${GROUP_ID}" +echo "Configuration Policy Controller: Rules: Artifact Id: ${ARTIFACT_ID}" +echo "Configuration Policy Controller: Rules: Version: ${VERSION}" +echo +echo "Configuration Policy Controller: DCAE DMaaP Topic: ${DCAE_TOPIC}" +echo "Configuration Policy Controller: DCAE DMaaP Servers: ${DCAE_SERVERS}" +echo +echo "Configuration Policy Controller: Open DMaaP Servers: ${DMAAP_SERVERS}" +echo "---------------------------------------------------------------------------------------" +echo + +HAPPY="Y" +read -e -i "${HAPPY}" -p "Are the previous parameters correct (Y/N)? " HAPPY +if [[ ${HAPPY} != "Y" ]]; then + exit 1 +fi + +echo +DIR_TMP="/tmp" +echo "The Control Loop Rules Maven Project Source Rules will be installed at ${DIR_TMP}" +read -e -i "${DIR_TMP}" -p "Do you want to change the Rules Source Project install directory? " DIR_TMP + +if [ ! -w "${DIR_TMP}" ]; then + echo "Aborting. ${DIR_TMP} is not writable" + exit 1 +fi + +ARCHETYPE_GROUP_ID="org.onap.policy.drools-applications" +ARCHETYPE_ARTIFACT_ID="archetype-cl-amsterdam" +ARCHETYPE_VERSION="${VERSION}" + +if [ -d "${DIR_TMP}/${ARTIFACT_ID}/" ]; then + if [ "$(ls -A "${DIR_TMP}/${ARTIFACT_ID}"/)" ]; then + echo "${DIR_TMP} already contains a ${ARTIFACT_ID}/ directory, saving it to ${DIR_TMP}/${ARTIFACT_ID}.arch.bak/" + if [ -d "${DIR_TMP}/${ARTIFACT_ID}.arch.bak"/ ]; then + ( + echo "${DIR_TMP}/${ARTIFACT_ID}.arch.bak/ also exists, deleting it .." + cd "${DIR_TMP}"/ + rm -fr "${ARTIFACT_ID}.arch.bak" + ) + fi + /bin/mv --force "${DIR_TMP}/${ARTIFACT_ID}/" "${DIR_TMP}/${ARTIFACT_ID}.arch.bak" + if [ "${?}" -ne 0 ]; then + echo + echo + echo "Aborting: ${DIR_TMP}/${ARTIFACT_ID}/ cannot be moved" + exit 1 + fi + else + ( cd "${DIR_TMP}/" ; rmdir "${DIR_TMP}/${ARTIFACT_ID}/" ) + fi +fi + +CREATEARTIFACT="Y" +read -e -i "${CREATEARTIFACT}" -p "Create Maven Artifact (Y/N)? " CREATEARTIFACT +if [[ ${CREATEARTIFACT} != "Y" ]]; then + exit 1 +fi + +( +cd "${DIR_TMP}" + +mvn archetype:generate \ + -B \ + -DarchetypeCatalog=local \ + -DarchetypeGroupId="${ARCHETYPE_GROUP_ID}" \ + -DarchetypeArtifactId="${ARCHETYPE_ARTIFACT_ID}" \ + -DarchetypeVersion="${ARCHETYPE_VERSION}" \ + -Dpackage="${PACKAGE}" \ + -DgroupId="${GROUP_ID}" \ + -DartifactId="${ARTIFACT_ID}" \ + -Dversion="${VERSION}" \ + -DclosedLoopControlName="${CONTROL_LOOP_NAME}" \ + -DcontrolLoopYaml="${CONTROL_LOOP_YAML}" \ + -DpolicyScope="${POLICY_SCOPE}" \ + -DpolicyName="${POLICY_NAME}" \ + -DpolicyVersion="${POLICY_VERSION}" \ + -DdmaapServers="${DMAAP_SERVERS}" \ + -DdcaeTopic="${DCAE_TOPIC}" \ + -DdcaeServers="${DCAE_SERVERS}" \ + -DdependenciesVersion="${DEPENDENCIES_VERSION}" + +if [ "${?}" -ne 0 ]; then + echo + echo + echo "Aborting: ${ARTIFACT_ID} has not been successfully generated" + exit 1 +fi + +echo + +cd "${DIR_TMP}/${ARTIFACT_ID}"/ + +mv src/main/config/* . + +echo +echo "Control Loop Rules from templates have been successfully created under ${DIR_TMP}/${ARTIFACT_ID}/" +echo "You have to option to further tweak this project or deploy it as is to the local maven repository." +echo "If you decide to customize the source rules project, please enter 'N' below," +echo "and when finished type 'mvn install' at ${DIR_TMP}/${ARTIFACT_ID}/ to install the Control Loop." + +INSTALLREPO="Y" +read -e -i "${INSTALLREPO}" -p "Do you want to deploy ${ARTIFACT_ID} rules into maven repository (Y/N)? " INSTALLREPO +if [[ ${INSTALLREPO} != "Y" ]]; then + exit 1 +fi + +echo +echo "installing the rules ${ARTIFACT_ID} maven artifact .." + +mvn install + +if [ "${?}" -ne 0 ]; then + echo + echo + echo "Aborting: ${ARTIFACT_ID} deployable jar cannot be installed" + echo "Fix the source rules project issues, and issue 'mvn install'" + echo "at ${DIR_TMP}/${ARTIFACT_ID}/ when done to install it." + exit 1 +fi + + +echo +echo "${ARTIFACT_ID} has been successfully installed in user's (${USER}) local repository" +echo "Find configuration files at ${DIR_TMP}/${ARTIFACT_ID}/" +echo +echo "To deploy this Control Loop into the PDP-D, follow one of these methods: " +echo "1. copy ${DIR_TMP}/${ARTIFACT_ID}/${ARTIFACT_ID}-controller.properties under '${POLICY_HOME}/config'" +echo " and restart the pdp-d (policy stop; policy start)" +echo "2. rest-add-controller ${ARTIFACT_ID}" +echo +) diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml index e0a967f3d..12d2b944c 100644 --- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml +++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/pom.xml @@ -129,6 +129,11 @@ <version>${dependenciesVersion}</version> </dependency> <dependency> + <groupId>com.att.research.xacml</groupId> + <artifactId>xacml-pdp</artifactId> + <version>1.0.0</version> + </dependency> + <dependency> <groupId>org.onap.policy.drools-pdp</groupId> <artifactId>policy-management</artifactId> <version>${dependenciesVersion}</version> diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties index ddc70d784..18daf6a50 100644 --- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties +++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.properties @@ -33,22 +33,22 @@ 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.appclcm.LCMResponseWrapper -ueb.source.topics.APPC-CL.events.org.onap.policy.appclcm.LCMResponseWrapper.filter=body\=.* +ueb.source.topics.APPC-CL.events.org.onap.policy.appclcm.LCMResponseWrapper.filter=type\=response ueb.source.topics.APPC-CL.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson -ueb.sink.topics=APPC-CL,POLICY-CL-MGT +noop.sink.topics=APPC-CL,POLICY-CL-MGT -ueb.sink.topics.APPC-CL.servers=${dmaapServers} -ueb.sink.topics.APPC-CL.apiKey= -ueb.sink.topics.APPC-CL.apiSecret= -ueb.sink.topics.APPC-CL.events=org.onap.policy.appclcm.LCMRequestWrapper -ueb.sink.topics.APPC-CL.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson +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.appclcm.LCMRequestWrapper +noop.sink.topics.APPC-CL.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson -ueb.sink.topics.POLICY-CL-MGT.servers=${dmaapServers} -ueb.sink.topics.POLICY-CL-MGT.apiKey= -ueb.sink.topics.POLICY-CL-MGT.apiSecret= -ueb.sink.topics.POLICY-CL-MGT.events=org.onap.policy.controlloop.VirtualControlLoopNotification -ueb.sink.topics.POLICY-CL-MGT.events.custom.gson=org.onap.policy.controlloop.util.Serialization,gsonPretty +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} diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json index 68d565dcd..356af7d99 100644 --- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json +++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json @@ -10,18 +10,18 @@ "ueb.source.topics.APPC-CL.servers": "${dmaapServers}", "ueb.source.topics.APPC-CL.events": "org.onap.policy.appclcm.LCMResponseWrapper", - "ueb.source.topics.APPC-CL.events.org.onap.policy.appclcm.LCMResponseWrapper.filter": "common-header=.*,status=.*", + "ueb.source.topics.APPC-CL.events.org.onap.policy.appclcm.LCMResponseWrapper.filter": "type=response", "ueb.source.topics.APPC-CL.events.custom.gson": "org.onap.policy.appclcm.util.Serialization,gson", - "ueb.sink.topics": "APPC-CL,POLICY-CL-MGT", + "noop.sink.topics": "APPC-CL,POLICY-CL-MGT", - "ueb.sink.topics.APPC-CL.servers": "${dmaapServers}", - "ueb.sink.topics.APPC-CL.events": "org.onap.policy.appclcm.LCMRequestWrapper", - "ueb.sink.topics.APPC-CL.events.custom.gson": "org.onap.policy.appclcm.util.Serialization,gson", + "noop.sink.topics.APPC-CL.servers": "${dmaapServers}", + "noop.sink.topics.APPC-CL.events": "org.onap.policy.appclcm.LCMRequestWrapper", + "noop.sink.topics.APPC-CL.events.custom.gson": "org.onap.policy.appclcm.util.Serialization,gson", - "ueb.sink.topics.POLICY-CL-MGT.servers": "${dmaapServers}", - "ueb.sink.topics.POLICY-CL-MGT.events": "org.onap.policy.controlloop.VirtualControlLoopNotification", - "ueb.sink.topics.POLICY-CL-MGT.events.custom.gson": "org.onap.policy.controlloop.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}", diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.success.json b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.success.json new file mode 100644 index 000000000..6f8af9b64 --- /dev/null +++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/appc.success.json @@ -0,0 +1,22 @@ +{ + "body": { + "output": { + "common-header": { + "timestamp": "2017-08-25T21:06:23.037Z", + "api-ver": "5.00", + "originator-id": "a20e2073-30b1-4357-893b-f5ed57b66ef0", + "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": "a20e2073-30b1-4357-893b-f5ed57b66ef0-1", + "type": "response" +}
\ No newline at end of file diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl index 3e4f76c2f..5e90f052d 100644 --- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl +++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/resources/__closedLoopControlName__.drl @@ -106,12 +106,37 @@ rule "${policyName}.SETUP" params.setControlLoopYaml("${controlLoopYaml}"); 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(), drools.getRule().getName(), params.getControlLoopYaml()); + + String sqlDbUsername = PolicyEngine.manager.getEnvironmentProperty("sql.db.username"); + String sqlDbPassword = PolicyEngine.manager.getEnvironmentProperty("sql.db.password"); + + String aaiUrl = PolicyEngine.manager.getEnvironmentProperty("aai.url"); + String aaiUsername = PolicyEngine.manager.getEnvironmentProperty("aai.username"); + String aaiPassword = PolicyEngine.manager.getEnvironmentProperty("aai.password"); + + String soUrl =PolicyEngine.manager.getEnvironmentProperty("so.url"); + String soUsername = PolicyEngine.manager.getEnvironmentProperty("so.username"); + String soPassword = PolicyEngine.manager.getEnvironmentProperty("so.password"); + + String vfcUrl =PolicyEngine.manager.getEnvironmentProperty("vfc.url"); + String vfcUsername = PolicyEngine.manager.getEnvironmentProperty("vfc.username"); + String vfcPassword = PolicyEngine.manager.getEnvironmentProperty("vfc.password"); + + String guardUrl =PolicyEngine.manager.getEnvironmentProperty("guard.url"); + String guardUsername = PolicyEngine.manager.getEnvironmentProperty("guard.username"); + String guardPassword = PolicyEngine.manager.getEnvironmentProperty("guard.password"); + String guardJdbcUrl = PolicyEngine.manager.getEnvironmentProperty("guard.jdbc.url"); + + logger.info("{}: {} : AAI=[{}:{}]", params.getClosedLoopControlName(), drools.getRule().getName(), aaiUrl, aaiUsername); + logger.info("{}: {} : SO=[{}:{}]", params.getClosedLoopControlName(), drools.getRule().getName(), soUrl, soUsername); + logger.info("{}: {} : VFC=[{}:{}]", params.getClosedLoopControlName(), drools.getRule().getName(), vfcUrl, vfcUsername); + logger.info("{}: {} : GUARD=[{}:{}:{}]", params.getClosedLoopControlName(), drools.getRule().getName(), guardUrl, guardUsername, guardJdbcUrl); + logger.info("{}: {} : DB=[{}:{}]", params.getClosedLoopControlName(), drools.getRule().getName(), sqlDbUsername, sqlDbPassword); end /* |