#! /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 echo "Control Loop CLI Creator for standalone PDP-D usage (R0 Legacy Template Application)" echo "-----------------------------------------------------------------------------------" echo GROUP_ID="org.onap.policy.rules.legacy" ARTIFACT_ID="legacy" VERSION="1.1.0" PACKAGE="org.onap.policy.rules.legacy" CONTROL_LOOP_NAME="CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" POLICY_SCOPE="service=test;resource=FRWL;type=configuration" POLICY_NAME="FirewallDemo" POLICY_VERSION="v0.0.1" ACTOR="APPC" APPC_TOPIC="APPC-CL" DMAAP_SERVERS="vm1.mr.simpledemo.openecomp.org" NOTIFICATION_TOPIC="POLICY-CL-MGT" DCAE_TOPIC="unauthenticated.TCA_EVENT_OUTPUT" DCAE_SERVERS="10.0.4.102" AAI_URL="https://aai.api.simpledemo.openecomp.org:8443" AAI_USERNAME="POLICY" AAI_PASSWORD="POLICY" AAI_NAMED_QUERY_UUID="f199cb88-5e69-4b1f-93e0-6f257877d066" AAI_PATTERN_MATCH=1 MSO_URL="http://vm1.mso.simpledemo.openecomp.org:8080/ecomp/mso/infra" MSO_USERNAME="InfraPortalClient" MSO_PASSWORD="password1$" 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 "${DCAE_SERVERS}" -p "Configuration DCAE DMaaP Servers> " DCAE_SERVERS read -e -i "${DMAAP_SERVERS}" -p "Configuration Open DMaaP Servers> " DMAAP_SERVERS 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 "${APPC_TOPIC}" -p "Template APP-C Recipe Topic> " APPC_TOPIC read -e -i "${NOTIFICATION_TOPIC}" -p "Template Notification Topic> " NOTIFICATION_TOPIC read -e -i "${DCAE_TOPIC}" -p "Template DCAE Topic> " DCAE_TOPIC read -e -i "${ACTOR}" -p "TemplateActor ('APPC' or 'MSO')> " ACTOR read -e -i "${AAI_URL}" -p "Template AAI URL (vDNS only)> " AAI_URL read -e -i "${AAI_USERNAME}" -p "Template AAI Username (vDNS only)> " AAI_USERNAME read -e -i "${AAI_PASSWORD}" -p "Template AAI Password (vDNS only)> " AAI_PASSWORD read -e -i "${AAI_NAMED_QUERY_UUID}" -p "Template AAI Named Query UUID (vDNS only)> " AAI_NAMED_QUERY_UUID read -e -i "${AAI_PATTERN_MATCH}" -p "Template AAI Pattern Match (1 for vFW, otherwise vDNS)> " AAI_PATTERN_MATCH read -e -i "${MSO_URL}" -p "Template MSO URL (vDNS only)> " MSO_URL read -e -i "${MSO_USERNAME}" -p "Template MSO Username (vDNS only)> " MSO_USERNAME read -e -i "${MSO_PASSWORD}" -p "Template MSO Password (vDNS only)> " MSO_PASSWORD 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 "${DCAE_TOPIC}" ]; then echo "Aborting: Template DCAE DMAAP Topic not provided"; exit 1; fi if [ -z "${APPC_TOPIC}" ]; then echo "Aborting: Template APP-C Recipe Topic not provided"; exit 1; fi if [ -z "${NOTIFICATION_TOPIC}" ]; then echo "Aborting: Template Notification Topic not provided"; exit 1; fi if [ -z "${DMAAP_SERVERS}" ]; then echo "Aborting: Configuration APP-C UEB Servers not provided"; exit 1; fi if [ -z "${DCAE_SERVERS}" ]; then echo "Aborting: Configuration DCAE DMAAP Servers not provided"; exit 1; fi if [ -z "${ACTOR}" ]; then echo "Aborting: Template Actor not provided"; exit 1; fi if [ -z "${AAI_PATTERN_MATCH}" ]; then echo "Aborting: Template AAPI Pattern Match not provided"; exit 1; fi if [[ ${AAI_PATTERN_MATCH} != "1" ]]; then if [ -z "${AAI_URL}" ]; then echo "Aborting: Template AAI URL not provided"; exit 1; fi if [ -z "${AAI_USERNAME}" ]; then echo "Aborting: Template AAI Username not provided"; exit 1; fi if [ -z "${AAI_PASSWORD}" ]; then echo "Aborting: Template AAI Password not provided"; exit 1; fi if [ -z "${AAI_NAMED_QUERY_UUID}" ]; then echo "Aborting: Template AAI Named Query UUID not provided"; exit 1; fi if [ -z "${MSO_URL}" ]; then echo "Aborting: Template MSO URL not provided"; exit 1; fi if [ -z "${MSO_USERNAME}" ]; then echo "Aborting: Template MSO Username not provided"; exit 1; fi if [ -z "${MSO_PASSWORD}" ]; then echo "Aborting: Template MSO Password not provided"; exit 1; fi fi if [ -z "${AAI_URL}" ]; then AAI_URL="https://aai.api.simpledemo.openecomp.org:8443"; fi if [ -z "${AAI_USERNAME}" ]; then AAI_USERNAME="POLICY"; fi if [ -z "${AAI_PASSWORD}" ]; then AAI_PASSWORD="POLICY"; fi if [ -z "${AAI_NAMED_QUERY_UUID}" ]; then AAI_NAMED_QUERY_UUID="f199cb88-5e69-4b1f-93e0-6f257877d066"; fi if [ -z "${MSO_URL}" ]; then MSO_URL="http://vm1.mso.simpledemo.openecomp.org:8080/ecomp/mso/infra"; fi if [ -z "${MSO_USERNAME}" ]; then MSO_USERNAME="InfraPortalClient"; fi if [ -z "${MSO_PASSWORD}" ]; then MSO_PASSWORD="password1$"; fi if [[ "$VERSION" == *-SNAPSHOT ]]; then DEPENDENCIES_VERSION="1.1.0-SNAPSHOT" else DEPENDENCIES_VERSION="${VERSION}" fi read -e -i "${DEPENDENCIES_VERSION}" -p "Control Loop Java Libraries Dependencies Version (ie: 1.1.0-SNAPSHOT, or 1.1.1) > " DEPENDENCIES_VERSION if [ -z "${DEPENDENCIES_VERSION}" ]; then echo "Aborting: Control Loop Java Libraries 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 Actor: ${ACTOR}" echo "Template Drools DRL Expansion: Control Loop Recipe: ${APPC}" echo "Template Drools DRL Expansion: Control Loop Recipe Topic: ${APPC_TOPIC}" echo "Template Drools DRL Expansion: Control Loop Notification Topic: ${NOTIFICATION_TOPIC}" echo echo "External Controller Configuration: Rules: Group Id: ${GROUP_ID}" echo "External Controller Configuration: Rules: Artifact Id: ${ARTIFACT_ID}" echo "External Controller Configuration: Rules: Version: ${VERSION}" echo echo "External Controller Configuration: DCAE DMaaP Topic: ${DCAE_TOPIC}" echo "External Controller Configuration: DCAE DMaaP Servers: ${DCAE_SERVERS}" echo echo "External Controller Configuration: APP-C DMaaP Topic: ${APPC_TOPIC}" echo "External Controller Configuration: APP-C DMaaP Servers: ${DMAAP_SERVERS}" echo echo "External Controller Configuration: NOTIFICATION Topic: ${NOTIFICATION_TOPIC}" echo "External Controller Configuration: NOTIFICATION DMaaP Servers: ${DMAAP_SERVERS}" echo echo "Template Controller Configuration: AAI URL: ${AAI_URL}" echo "Template Controller Configuration: AAI Username: ${AAI_USERNAME}" echo "Template Controller Configuration: AAI Password: ${AAI_PASSWORD}" echo "Template Controller Configuration: AAI Named Query UUID: ${AAI_NAMED_QUERY_UUID}" echo "Template Controller Configuration: AAI Pattern Match: ${AAI_PATTERN_MATCH}" echo echo "Template Controller Configuration: MSO URL: ${MSO_URL}" echo "Template Controller Configuration: MSO Username: ${MSO_USERNAME}" echo "Template Controller Configuration: MSO Password: ${MSO_PASSWORD}" echo 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-legacy" 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 \ -DarchetypeGroupId="${ARCHETYPE_GROUP_ID}" \ -DarchetypeArtifactId="${ARCHETYPE_ARTIFACT_ID}" \ -DarchetypeVersion="${ARCHETYPE_VERSION}" \ -Dpackage="${PACKAGE}" \ -DgroupId="${GROUP_ID}" \ -DartifactId="${ARTIFACT_ID}" \ -Dversion="${VERSION}" \ -DcontrolLoopName="${CONTROL_LOOP_NAME}" \ -DpolicyScope="${POLICY_SCOPE}" \ -DpolicyName="${POLICY_NAME}" \ -DpolicyVersion="${POLICY_VERSION}" \ -Dactor="${ACTOR}" \ -DdmaapServers="${DMAAP_SERVERS}" \ -DappcTopic="${APPC_TOPIC}" \ -DnotificationTopic="${NOTIFICATION_TOPIC}" \ -DdcaeTopic="${DCAE_TOPIC}" \ -DdcaeServers="${DCAE_SERVERS}" \ -DaaiURL="${AAI_URL}" \ -DaaiUsername="${AAI_USERNAME}" \ -DaaiPassword="${AAI_PASSWORD}" \ -DaaiNamedQueryUUID="${AAI_NAMED_QUERY_UUID}" \ -DaaiPatternMatch="${AAI_PATTERN_MATCH}" \ -DmsoURL="${MSO_URL}" \ -DmsoUsername="${MSO_USERNAME}" \ -DmsoPassword="${MSO_PASSWORD}" \ -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 )