summaryrefslogtreecommitdiffstats
path: root/controlloop/common/feature-controlloop-management/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/common/feature-controlloop-management/src/main')
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-amsterdam231
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-casablanca359
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/feature/bin/push-policies-casablanca145
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/feature/config/controlloop.properties.environment54
4 files changed, 789 insertions, 0 deletions
diff --git a/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-amsterdam b/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-amsterdam
new file mode 100644
index 000000000..b26c04c76
--- /dev/null
+++ b/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-amsterdam
@@ -0,0 +1,231 @@
+#! /bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# ONAP
+# ================================================================================
+# Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# 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="${version:-1.3.4}"
+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%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
+DMAAP_SERVERS="vm1.mr.simpledemo.openecomp.org"
+DCAE_TOPIC="unauthenticated.DCAE_CL_OUTPUT"
+DCAE_SERVERS="vm1.mr.simpledemo.openecomp.org"
+
+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
+
+DEPENDENCIES_VERSION="${version}"
+
+read -e -i "${DEPENDENCIES_VERSION}" -p "Control Loop Jar Dependencies Version (ie: 1.1.1-SNAPSHOT, or 1.1.1) > " 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.controlloop.templates"
+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. cd ${DIR_TMP}/${ARTIFACT_ID}/; rest-add-controller ${ARTIFACT_ID}"
+echo
+)
diff --git a/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-casablanca b/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-casablanca
new file mode 100644
index 000000000..b1924d54f
--- /dev/null
+++ b/controlloop/common/feature-controlloop-management/src/main/feature/bin/create-cl-casablanca
@@ -0,0 +1,359 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# ONAP
+# ================================================================================
+# Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# 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 R2 Casablanca Release"
+echo "---------------------------------------------------"
+echo
+
+GROUP_ID="org.onap.policy.rules.casablanca"
+ARTIFACT_ID="casablanca"
+VERSION="${version:-1.3.4}"
+PACKAGE="org.onap.policy.rules.casablanca"
+
+# vCPE Policy Parameters
+VCPE_CONTROL_LOOP_NAME="ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e"
+VCPE_POLICY_NAME="vcpe"
+VCPE_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
+
+# vFW Policy Parameters
+VFW_CONTROL_LOOP_NAME="ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a"
+VFW_POLICY_NAME="vfw"
+VFW_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a%0D%0A++trigger_policy%3A+unique-policy-id-1-modifyConfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-modifyConfig%0D%0A++++name%3A+modify+packet+gen+config%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+TBD+-+Cannot+be+known+until+instantiation+is+done%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
+
+# vDNS Policy Parameters
+VDNS_CONTROL_LOOP_NAME="ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3"
+VDNS_POLICY_NAME="vdns"
+VDNS_CONTROL_LOOP_YAML="controlLoop%3A%0A++version%3A+2.0.0%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0A++timeout%3A+1200%0A++abatement%3A+false%0Apolicies%3A%0A++-+id%3A+unique-policy-id-1-scale-up%0A++++name%3A+Create+a+new+VF+Module%0A++++description%3A%0A++++actor%3A+SO%0A++++recipe%3A+VF+Module+Create%0A++++target%3A%0A++++++type%3A+VNF%0A++++payload%3A%0A++++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A++++++configurationParameters%3A+%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B9%5D%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B16%5D%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B23%5D%22%7D%5D%27%0A++++retry%3A+0%0A++++timeout%3A+1200%0A++++success%3A+final_success%0A++++failure%3A+final_failure%0A++++failure_timeout%3A+final_failure_timeout%0A++++failure_retries%3A+final_failure_retries%0A++++failure_exception%3A+final_failure_exception%0A++++failure_guard%3A+final_failure_guard"
+
+# VoLTE Policy Parameters
+VOLTE_CONTROL_LOOP_NAME="ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b"
+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"
+
+# vPCI Policy Parameters
+VPCI_CONTROL_LOOP_NAME="ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459"
+VPCI_POLICY_NAME="vpci"
+VPCI_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+3.0.0%0D%0A++controlLoopName%3A+ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459%0D%0A++trigger_policy%3A+unique-policy-id-123-modifyconfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-123-modifyconfig%0D%0A++++name%3A+modify+PCI+config%0D%0A++++description%3A%0D%0A++++actor%3A+SDNR%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+These+fields+are+not+used%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
+
+# CCVPN Policy Parameters
+CCVPN_CONTROL_LOOP_NAME="ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b"
+CCVPN_POLICY_NAME="ccvpn"
+CCVPN_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b%0D%0A++trigger_policy%3A+unique-policy-id-16-Reroute%0D%0A++t
+imeout%3A+3600%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-16-Reroute%0D%0A++++name%3A+Connectivity Reroute%0D%0A++++description%3A%0D%0A++++actor%3A+SDNC%0D%0A++++reci
+pe%3A+Reroute%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_fail
+ure_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="casablanca"
+POLICY_VERSION="v0.0.1"
+
+BRMSGW_TOPIC="BRMSGW-POLICY"
+BRMSGW_SERVERS="vm1.mr.simpledemo.openecomp.org"
+
+DMAAP_SERVERS="vm1.mr.simpledemo.openecomp.org"
+DCAE_TOPIC="unauthenticated.DCAE_CL_OUTPUT"
+DCAE_SERVERS="vm1.mr.simpledemo.openecomp.org"
+
+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 "${VCPE_CONTROL_LOOP_NAME}" -p "VCPE Control Loop Name> " VCPE_CONTROL_LOOP_NAME
+read -e -i "${VCPE_POLICY_NAME}" -p "VCPE Policy Name> " VCPE_POLICY_NAME
+read -e -i "${VCPE_CONTROL_LOOP_YAML}" -p "VCPE Control Loop Yaml> " VCPE_CONTROL_LOOP_YAML
+
+read -e -i "${VFW_CONTROL_LOOP_NAME}" -p "VFW Control Loop Name> " VFW_CONTROL_LOOP_NAME
+read -e -i "${VFW_POLICY_NAME}" -p "VFW Policy Name> " VFW_POLICY_NAME
+read -e -i "${VFW_CONTROL_LOOP_YAML}" -p "VFW Control Loop Yaml> " VFW_CONTROL_LOOP_YAML
+
+read -e -i "${VDNS_CONTROL_LOOP_NAME}" -p "VDNS Control Loop Name> " VDNS_CONTROL_LOOP_NAME
+read -e -i "${VDNS_POLICY_NAME}" -p "VDNS Policy Name> " VDNS_POLICY_NAME
+read -e -i "${VDNS_CONTROL_LOOP_YAML}" -p "VDNS Control Loop Yaml> " VDNS_CONTROL_LOOP_YAML
+
+read -e -i "${VOLTE_CONTROL_LOOP_NAME}" -p "VOLTE Control Loop Name> " VOLTE_CONTROL_LOOP_NAME
+read -e -i "${VOLTE_POLICY_NAME}" -p "VOLTE Policy Name> " VOLTE_POLICY_NAME
+read -e -i "${VOLTE_CONTROL_LOOP_YAML}" -p "VOLTE Control Loop Yaml> " VOLTE_CONTROL_LOOP_YAML
+
+read -e -i "${VPCI_CONTROL_LOOP_NAME}" -p "VPCI Control Loop Name> " VPCI_CONTROL_LOOP_NAME
+read -e -i "${VPCI_POLICY_NAME}" -p "VPCI Policy Name> " VPCI_POLICY_NAME
+read -e -i "${VPCI_CONTROL_LOOP_YAML}" -p "VPCI Control Loop Yaml> " VPCI_CONTROL_LOOP_YAML
+
+read -e -i "${CCVPN_CONTROL_LOOP_NAME}" -p "CCVPN Control Loop Name> " CCVPN_CONTROL_LOOP_NAME
+read -e -i "${CCVPN_POLICY_NAME}" -p "CCVPN Policy Name> " CCVPN_POLICY_NAME
+read -e -i "${CCVPN_CONTROL_LOOP_YAML}" -p "CCVPN Control Loop Yaml> " CCVPN_CONTROL_LOOP_YAML
+
+read -e -i "${POLICY_SCOPE}" -p "Generic Policy Scope> " POLICY_SCOPE
+read -e -i "${POLICY_VERSION}" -p "Generic Policy Version> " POLICY_VERSION
+
+read -e -i "${BRMSGW_TOPIC}" -p "Controller BRMSGW TOPIC> " BRMSGW_TOPIC
+read -e -i "${BRMSGW_SERVERS}" -p "Configuration BRMSGW DMaaP Servers> " BRMSGW_SERVERS
+
+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 "Controller 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 "${VCPE_CONTROL_LOOP_NAME}" ]; then echo "Aborting: VCPE Control Loop Name not provided"; exit 1; fi
+if [ -z "${VCPE_POLICY_NAME}" ]; then echo "Aborting: VCPE Policy Name not provided"; exit 1; fi
+if [ -z "${VCPE_CONTROL_LOOP_YAML}" ]; then echo "Aborting: VCPE Control Loop Yaml not provided"; exit 1; fi
+
+if [ -z "${VFW_CONTROL_LOOP_NAME}" ]; then echo "Aborting: VFW Control Loop Name not provided"; exit 1; fi
+if [ -z "${VFW_POLICY_NAME}" ]; then echo "Aborting: VFW Policy Name not provided"; exit 1; fi
+if [ -z "${VFW_CONTROL_LOOP_YAML}" ]; then echo "Aborting: VFW Control Loop Yaml not provided"; exit 1; fi
+
+if [ -z "${VDNS_CONTROL_LOOP_NAME}" ]; then echo "Aborting: VDNS Control Loop Name not provided"; exit 1; fi
+if [ -z "${VDNS_POLICY_NAME}" ]; then echo "Aborting: VDNS Policy Name not provided"; exit 1; fi
+if [ -z "${VDNS_CONTROL_LOOP_YAML}" ]; then echo "Aborting: VDNS Control Loop Yaml not provided"; exit 1; fi
+
+if [ -z "${VOLTE_CONTROL_LOOP_NAME}" ]; then echo "Aborting: VOLTE Control Loop Name not provided"; exit 1; fi
+if [ -z "${VOLTE_POLICY_NAME}" ]; then echo "Aborting: VOLTE Policy Name not provided"; exit 1; fi
+if [ -z "${VOLTE_CONTROL_LOOP_YAML}" ]; then echo "Aborting: VOLTE Control Loop Yaml not provided"; exit 1; fi
+
+if [ -z "${VPCI_CONTROL_LOOP_NAME}" ]; then echo "Aborting: VPCI Control Loop Name not provided"; exit 1; fi
+if [ -z "${VPCI_POLICY_NAME}" ]; then echo "Aborting: VPCI Policy Name not provided"; exit 1; fi
+if [ -z "${VPCI_CONTROL_LOOP_YAML}" ]; then echo "Aborting: VPCI Control Loop Yaml not provided"; exit 1; fi
+
+if [ -z "${CCVPN_CONTROL_LOOP_NAME}" ]; then echo "Aborting: CCVPN Control Loop Name not provided"; exit 1; fi
+if [ -z "${CCVPN_POLICY_NAME}" ]; then echo "Aborting: CCVPN Policy Name not provided"; exit 1; fi
+if [ -z "${CCVPN_CONTROL_LOOP_YAML}" ]; then echo "Aborting: CCVPN Control Loop Yaml not provided"; exit 1; fi
+
+if [ -z "${POLICY_SCOPE}" ]; then echo "Aborting: Template Policy Scope not provided"; exit 1; fi
+if [ -z "${POLICY_VERSION}" ]; then echo "Aborting: Template Policy Version not provided"; exit 1; fi
+
+if [ -z "${BRMSGW_TOPIC}" ]; then echo "Aborting: Configuration BRMSGW DMaaP Topic not provided"; exit 1; fi
+if [ -z "${BRMSGW_SERVERS}" ]; then echo "Aborting: Configuration BRMSGW DMaaP Servers 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
+
+DEPENDENCIES_VERSION="${version}"
+
+read -e -i "${DEPENDENCIES_VERSION}" -p "Control Loop Jar Dependencies Version (ie: 1.2.0-SNAPSHOT, or 1.2.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 "VCPE Drools Fact Generation: VCPE Control Loop Control Name: ${VCPE_CONTROL_LOOP_NAME}"
+echo "VCPE Drools Fact Generation: VCPE Control Loop Policy Name: ${VCPE_POLICY_NAME}"
+echo "VCPE Drools Fact Generation: VCPE Control Loop Yaml: ${VCPE_CONTROL_LOOP_YAML}"
+echo
+echo "VFW Drools Fact Generation: VFW Control Loop Control Name: ${VFW_CONTROL_LOOP_NAME}"
+echo "VFW Drools Fact Generation: VFW Control Loop Policy Name: ${VFW_POLICY_NAME}"
+echo "VFW Drools Fact Generation: VFW Control Loop Yaml: ${VFW_CONTROL_LOOP_YAML}"
+echo
+echo "VDNS Drools Fact Generation: VDNS Control Loop Control Name: ${VDNS_CONTROL_LOOP_NAME}"
+echo "VDNS Drools Fact Generation: VDNS Control Loop Policy Name: ${VDNS_POLICY_NAME}"
+echo "VDNS Drools Fact Generation: VDNS Control Loop Yaml: ${VDNS_CONTROL_LOOP_YAML}"
+echo
+echo "VOLTE Drools Fact Generation: VOLTE Control Loop Control Name: ${VOLTE_CONTROL_LOOP_NAME}"
+echo "VOLTE Drools Fact Generation: VOLTE Control Loop Policy Name: ${VOLTE_POLICY_NAME}"
+echo "VOLTE Drools Fact Generation: VOLTE Control Loop Yaml: ${VOLTE_CONTROL_LOOP_YAML}"
+echo
+echo "VPCI Drools Fact Generation: VPCI Control Loop Control Name: ${VPCI_CONTROL_LOOP_NAME}"
+echo "VPCI Drools Fact Generation: VPCI Control Loop Policy Name: ${VPCI_POLICY_NAME}"
+echo "VPCI Drools Fact Generation: VPCI Control Loop Yaml: ${VPCI_CONTROL_LOOP_YAML}"
+echo
+echo "CCVPN Drools Fact Generation: CCVPN Control Loop Control Name: ${CCVPN_CONTROL_LOOP_NAME}"
+echo "CCVPN Drools Fact Generation: CCVPN Control Loop Policy Name: ${CCVPN_POLICY_NAME}"
+echo "CCVPN Drools Fact Generation: CCVPN Control Loop Yaml: ${CCVPN_CONTROL_LOOP_YAML}"
+echo
+echo "Generic Drools Fact: Control Loop Policy Scope: ${POLICY_SCOPE}"
+echo "Generic: Control Loop Policy Version: ${POLICY_VERSION}"
+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: BRMSGW DMaaP Topic: ${BRMSGW_TOPIC}"
+echo "Configuration Policy Controller: BRMSGW DMaaP Servers: ${BRMSGW_SERVERS}"
+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.controlloop.templates"
+ARCHETYPE_ARTIFACT_ID="archetype-cl-casablanca"
+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}" \
+ -DvcpeClosedLoopControlName="${VCPE_CONTROL_LOOP_NAME}" \
+ -DvcpePolicyName="${VCPE_POLICY_NAME}" \
+ -DvcpeControlLoopYaml="${VCPE_CONTROL_LOOP_YAML}" \
+ -DvfwClosedLoopControlName="${VFW_CONTROL_LOOP_NAME}" \
+ -DvfwPolicyName="${VFW_POLICY_NAME}" \
+ -DvfwControlLoopYaml="${VFW_CONTROL_LOOP_YAML}" \
+ -DvdnsClosedLoopControlName="${VDNS_CONTROL_LOOP_NAME}" \
+ -DvdnsPolicyName="${VDNS_POLICY_NAME}" \
+ -DvdnsControlLoopYaml="${VDNS_CONTROL_LOOP_YAML}" \
+ -DvolteClosedLoopControlName="${VOLTE_CONTROL_LOOP_NAME}" \
+ -DvoltePolicyName="${VOLTE_POLICY_NAME}" \
+ -DvolteControlLoopYaml="${VOLTE_CONTROL_LOOP_YAML}" \
+ -DvpciClosedLoopControlName="${VPCI_CONTROL_LOOP_NAME}" \
+ -DvpciPolicyName="${VPCI_POLICY_NAME}" \
+ -DvpciControlLoopYaml="${VPCI_CONTROL_LOOP_YAML}" \
+ -DccvpnClosedLoopControlName="${CCVPN_CONTROL_LOOP_NAME}" \
+ -DccvpnPolicyName="${CCVPN_POLICY_NAME}" \
+ -DccvpnControlLoopYaml="${CCVPN_CONTROL_LOOP_YAML}" \
+ -DpolicyScope="${POLICY_SCOPE}" \
+ -DpolicyVersion="${POLICY_VERSION}" \
+ -DbrmsgwTopic="${BRMSGW_TOPIC}" \
+ -DbrmsgwServers="${BRMSGW_SERVERS}" \
+ -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. cd ${DIR_TMP}/${ARTIFACT_ID}/; rest-add-controller ${ARTIFACT_ID}"
+echo
+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/common/feature-controlloop-management/src/main/feature/bin/push-policies-casablanca b/controlloop/common/feature-controlloop-management/src/main/feature/bin/push-policies-casablanca
new file mode 100644
index 000000000..2289aea1f
--- /dev/null
+++ b/controlloop/common/feature-controlloop-management/src/main/feature/bin/push-policies-casablanca
@@ -0,0 +1,145 @@
+#!/usr/bin/env bash
+
+###
+# ============LICENSE_START=======================================================
+# ONAP
+# ================================================================================
+# Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# A script to insert policies using ControlLoopParams facts
+# for a standalone PDP-D usage
+
+# Obtain the controller properties file
+if [[ "${CONTROLLER_PROPERTIES}" != "" ]] ; then
+ # The user already exported CONTROLLER_PROPERTIES
+ configFile="${CONTROLLER_PROPERTIES}"
+else
+ # CONTROL_LOOP_PROPERTIES are missing, ask the user for them
+ echo "What is the path to the controller properties file?"
+ read -e -i "${configFile}" -p "Controller properties file> " configFile
+
+ # Ensure the user gave a path
+ if [ -z "${configFile}" ]; then echo "Aborting: No controller properties file was specified"; exit 1; fi
+
+ # Ensure the controller properties file exists in the user specified path
+ if [[ ! -f "${configFile}" ]] ; then
+ echo "Aborting: Can't find controller properties file at: ${configFile}"
+ exit 1
+ fi
+fi
+
+echo
+echo "Extracting properties from properties file..."
+echo
+
+echo "Extracting the controller's name..."
+CONTROLLER_NAME=$(egrep ".*controller.name=" \
+ "${configFile}")
+CONTROLLER_NAME=`echo ${CONTROLLER_NAME} | sed -e 's/.*controller\.name=\(.*\)/\1/'`
+echo "The controller's name is: ${CONTROLLER_NAME}"
+echo
+
+echo "Extracting the BRMSGW Topic..."
+BRMSGW_TOPIC=$(egrep "^ *(ueb|dmaap)\.source\.topics\..*\.events=org.onap.policy.controlloop.params.ControlLoopParams" \
+ "${configFile}")
+BRMSGW_TOPIC=`echo ${BRMSGW_TOPIC} | sed -e 's/.*topics\.\(.*\)\.events=org.onap.policy.controlloop.params.ControlLoopParams/\1/'`
+echo "The BRMSGW topic is: ${BRMSGW_TOPIC}"
+echo
+
+if [ -z "${BRMSGW_TOPIC}" ]; then echo "Aborting: BRMSGW DMaaP Topic was not found in controller properties file"; exit 1; fi
+
+echo
+echo "Inserting ControlLoopParams facts in to working memory..."
+echo
+
+echo
+echo "Inserting vCPE Policy..."
+curl -k --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
+ "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+ "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e%0D%0A++trigger_policy%3A+unique-policy-id-1-restart%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+true%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-restart%0D%0A++++name%3A+Restart+the+VM%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+Restart%0D%0A++++target%3A%0D%0A++++++type%3A+VM%0D%0A++++retry%3A+3%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard",
+ "policyName": "vcpe",
+ "policyScope": "DCAE",
+ "policyVersion": "1.2.0"
+}' "https://localhost:9696/policy/pdp/engine/topics/sources/ueb/${BRMSGW_TOPIC}/events" | python -m json.tool
+
+sleep 2
+
+echo
+echo "Inserting vFW Policy..."
+curl -k --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
+ "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",
+ "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a%0D%0A++trigger_policy%3A+unique-policy-id-1-modifyConfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-modifyConfig%0D%0A++++name%3A+modify+packet+gen+config%0D%0A++++description%3A%0D%0A++++actor%3A+APPC%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+TBD+-+Cannot+be+known+until+instantiation+is+done%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard",
+ "policyName": "vfw",
+ "policyScope": "DCAE",
+ "policyVersion": "1.2.0"
+}' "https://localhost:9696/policy/pdp/engine/topics/sources/ueb/${BRMSGW_TOPIC}/events" | python -m json.tool
+
+sleep 2
+
+echo
+echo "Inserting vDNS Policy..."
+curl -k --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
+ "closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",
+ "controlLoopYaml": "controlLoop%3A%0A++version%3A+2.0.0%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0A++timeout%3A+1200%0A++abatement%3A+false%0Apolicies%3A%0A++-+id%3A+unique-policy-id-1-scale-up%0A++++name%3A+Create+a+new+VF+Module%0A++++description%3A%0A++++actor%3A+SO%0A++++recipe%3A+VF+Module+Create%0A++++target%3A%0A++++++type%3A+VNF%0A++++payload%3A%0A++++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A++++++configurationParameters%3A+%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B9%5D%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B16%5D%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B23%5D%22%7D%5D%27%0A++++retry%3A+0%0A++++timeout%3A+1200%0A++++success%3A+final_success%0A++++failure%3A+final_failure%0A++++failure_timeout%3A+final_failure_timeout%0A++++failure_retries%3A+final_failure_retries%0A++++failure_exception%3A+final_failure_exception%0A++++failure_guard%3A+final_failure_guard",
+ "policyName": "vdns",
+ "policyScope": "DCAE",
+ "policyVersion": "1.2.0"
+}' "https://localhost:9696/policy/pdp/engine/topics/sources/ueb/${BRMSGW_TOPIC}/events" | python -m json.tool
+
+sleep 2
+
+echo
+echo "Inserting VoLTE Policy..."
+curl -k --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
+ "closedLoopControlName": "ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b",
+ "controlLoopYaml": "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",
+ "policyName": "volte",
+ "policyScope": "DCAE",
+ "policyVersion": "1.2.0"
+}' "https://localhost:9696/policy/pdp/engine/topics/sources/ueb/${BRMSGW_TOPIC}/events" | python -m json.tool
+
+sleep 2
+echo
+echo "Inserting vPCI Policy..."
+curl -k --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
+ "closedLoopControlName": "ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459",
+ "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+3.0.0%0D%0A++controlLoopName%3A+ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459%0D%0A++trigger_policy%3A+unique-policy-id-123-modifyconfig%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-123-modifyconfig%0D%0A++++name%3A+modify+PCI+config%0D%0A++++description%3A%0D%0A++++actor%3A+SDNR%0D%0A++++recipe%3A+ModifyConfig%0D%0A++++target%3A%0D%0A++++++%23+These+fields+are+not+used%0D%0A++++++resourceID%3A+Eace933104d443b496b8.nodes.heat.vpg%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+300%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard",
+ "policyName": "vpci",
+ "policyScope": "DCAE",
+ "policyVersion": "1.2.0"
+}' "https://localhost:9696/policy/pdp/engine/topics/sources/ueb/${BRMSGW_TOPIC}/events" | python -m json.tool
+
+sleep 2
+
+echo
+echo "Inserting CCVPN Policy..."
+curl -k --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
+ "closedLoopControlName": "ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b",
+ "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-CCVPN-2179b738-fd36-4843-a71a-a8c24c70c66b%0D%0A++trigger_policy%3A+unique-policy-id-16-Reroute%0D%0A++timeout%3A+3600%0D%0A++abatement%3A+false%0D%0A+%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-16-Reroute%0D%0A++++name%3A+Connectivity Reroute%0D%0A++++description%3A%0D%0A++++actor%3A+SDNC%0D%0A++++recipe%3A+Reroute%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",
+ "policyName": "ccvpn",
+ "policyScope": "DCAE",
+ "policyVersion": "1.2.0"
+}' "https://localhost:9696/policy/pdp/engine/topics/sources/ueb/${BRMSGW_TOPIC}/events" | python -m json.tool
+
+sleep 2
+
+echo
+echo "Policy insertions completed."
+echo
+
+echo "The working memory is now: "
+curl -k --silent --user @1b3rt:31nst31n -X GET https://localhost:9696/policy/pdp/engine/controllers/${CONTROLLER_NAME}/drools/facts/casablanca | python -m json.tool
diff --git a/controlloop/common/feature-controlloop-management/src/main/feature/config/controlloop.properties.environment b/controlloop/common/feature-controlloop-management/src/main/feature/config/controlloop.properties.environment
new file mode 100644
index 000000000..2b63d51ad
--- /dev/null
+++ b/controlloop/common/feature-controlloop-management/src/main/feature/config/controlloop.properties.environment
@@ -0,0 +1,54 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP
+# ================================================================================
+# Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# Environment file (.environment) for control loop applications in this
+# directory, it will be automatically loaded by PDP-D, after being expanded
+# by installation scripts.
+
+sql.db.host=${{SQL_HOST}}
+sql.db.username=${{SQL_USER}}
+sql.db.password=${{SQL_PASSWORD}}
+
+aai.url=${{AAI_URL}}
+aai.username=${{AAI_USERNAME}}
+aai.password=${{AAI_PASSWORD}}
+
+so.url=${{SO_URL}}
+so.username=${{SO_USERNAME}}
+so.password=${{SO_PASSWORD}}
+
+vfc.url=${{VFC_URL}}
+vfc.username=${{VFC_USERNAME}}
+vfc.password=${{VFC_PASSWORD}}
+
+pdpx.host=${{PDP_HOST}}
+pdpx.username=${{PDP_USERNAME}}
+pdpx.password=${{PDP_PASSWORD}}
+pdpx.environment=${{PDP_ENVIRONMENT}}
+pdpx.client.username=${{PDP_CLIENT_USERNAME}}
+pdpx.client.password=${{PDP_CLIENT_PASSWORD}}
+
+guard.url=https://${{PDP_HOST}}:8081/pdp/api/getDecision
+guard.jdbc.url=jdbc:mariadb://${{SQL_HOST}}:3306/onap_sdk
+guard.disabled=false
+
+sdnc.url=${{SDNC_URL}}
+sdnc.username=${{SDNC_USERNAME}}
+sdnc.password=${{SDNC_PASSWORD}}