From 74783258249fd8793a7ea865880060c7ef330b3e Mon Sep 17 00:00:00 2001 From: Jorge Hernandez Date: Fri, 15 Mar 2019 00:23:28 -0500 Subject: Baking "runtime" software into image Change-Id: I329596e6c23283cc4c31d689c621d7b4d1a298d7 Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez --- controlloop/build/docker-cl | 9 +- .../config/casablanca-controller.properties | 2 +- .../docker-controlloop/src/main/docker/Dockerfile | 12 +- .../src/main/docker/docker-entrypoint.sh | 231 +++++++++++++++++++++ 4 files changed, 247 insertions(+), 7 deletions(-) create mode 100644 controlloop/packages/docker-controlloop/src/main/docker/docker-entrypoint.sh diff --git a/controlloop/build/docker-cl b/controlloop/build/docker-cl index 6c1d65fbf..7fd0c53a8 100644 --- a/controlloop/build/docker-cl +++ b/controlloop/build/docker-cl @@ -45,6 +45,8 @@ function build { tags="${tags} --tag ${tag}" done + chmod 755 "${IMAGE_PATH}"/*.sh + ( set -x; docker pull "${DOCKER_PULL_REPOSITORY}"/onap/policy-drools:"${MAJOR_MINOR_VERSION}"-latest @@ -75,7 +77,12 @@ function push { return 1 fi - (set -x; docker push ${tag}) + ( + set -x; + for tag in "$@"; do + docker push "${tag}" + done + ) if [[ $? != 0 ]]; then echo -e "\nERROR: docker push\n" diff --git a/controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties b/controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties index 08482e001..517096232 100644 --- a/controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties +++ b/controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties @@ -23,7 +23,7 @@ controller.name=casablanca dmaap.source.topics=${env:PDPD_CONFIGURATION_TOPIC},${env:DCAE_TOPIC},APPC-CL,APPC-LCM-WRITE,SDNR-CL-RSP dmaap.source.topics.PDPD-CONFIGURATION.effectiveTopic=${env:PDPD_CONFIGURATION_TOPIC} -dmaap.source.topics.PDPD-CONFIGURATION.servers=${env:PDPD_CONFIGURATION_SERVERS} +dmaap.source.topics.PDPD-CONFIGURATION.servers=${env:DMAAP_SERVERS} dmaap.source.topics.PDPD-CONFIGURATION.events=org.onap.policy.controlloop.params.ControlLoopParams dmaap.source.topics.PDPD-CONFIGURATION.events.org.onap.policy.controlloop.params.ControlLoopParams.filter=[?($.closedLoopControlName =~ /.*/ && $.controlLoopYaml =~ /.*/)] dmaap.source.topics.PDPD-CONFIGURATION.https=true diff --git a/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile b/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile index 28631c7e6..1044e27ed 100644 --- a/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile +++ b/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile @@ -3,21 +3,22 @@ FROM onap/policy-drools:1.4-SNAPSHOT-latest ARG BUILD_VERSION_APP_CL=${BUILD_VERSION_APP_CL} ENV BUILD_VERSION_APP_CL=${BUILD_VERSION_APP_CL} -SHELL ["/bin/bash", "-l", "-c"] +COPY apps-controlloop.zip ${POLICY_INSTALL}/ -COPY apps-controlloop.zip ./ RUN unzip apps-controlloop.zip && \ mkdir -p ${POLICY_HOME}/logs ${POLICY_HOME}/config ${HOME}/.m2 && \ tar -C ${POLICY_HOME} -xvf base-${BUILD_VERSION}.tar.gz --no-same-owner && \ tar -C ${POLICY_HOME} -xvf basex-controlloop-${BUILD_VERSION_APP_CL}.tar.gz --no-same-owner && \ unzip policy-management-${BUILD_VERSION}.zip -d ${POLICY_HOME} && \ echo "source ${POLICY_HOME}/etc/profile.d/env.sh" >> "${HOME}/.bashrc" && \ - sed -i -e 's!${{POLICY_HOME}}!'"${POLICY_HOME}!g" ${POLICY_HOME}/etc/profile.d/env.sh && \ chmod 700 ${POLICY_HOME}/bin/* && \ chmod 600 ${POLICY_HOME}/config/* && \ + chmod 700 ${POLICY_INSTALL}/*.sh && \ rm -f ${POLICY_INSTALL}/*.conf -RUN source ${POLICY_HOME}/etc/profile.d/env.sh && \ +COPY docker-entrypoint.sh ${POLICY_HOME}/bin/ + +RUN . ${POLICY_HOME}/etc/profile.d/env.sh && \ mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \ --settings=${POLICY_HOME}/etc/m2/standalone-settings.xml \ -DartifactId=feature-controlloop-management \ @@ -30,4 +31,5 @@ RUN source ${POLICY_HOME}/etc/profile.d/env.sh && \ ${POLICY_HOME}/bin/features enable controlloop-amsterdam controlloop-casablanca && \ rm ${POLICY_INSTALL}/*.zip ${POLICY_INSTALL}/*.gz 2> /dev/null -CMD bash -l +ENTRYPOINT ["/opt/app/policy/bin/docker-entrypoint.sh"] +CMD ["boot"] \ No newline at end of file diff --git a/controlloop/packages/docker-controlloop/src/main/docker/docker-entrypoint.sh b/controlloop/packages/docker-controlloop/src/main/docker/docker-entrypoint.sh new file mode 100644 index 000000000..8afc2c0db --- /dev/null +++ b/controlloop/packages/docker-controlloop/src/main/docker/docker-entrypoint.sh @@ -0,0 +1,231 @@ +#!/bin/bash + +# ######################################################################## +# Copyright 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. +# ######################################################################## + + +function configurations { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + local confName + + for c in $(ls "${POLICY_INSTALL_INIT}"/*.conf 2> /dev/null); do + echo "adding configuration file: ${c}" + cp -f "${c}" "${POLICY_HOME}"/etc/profile.d/ + confName="$(basename "${c}")" + sed -i -e "s/ *= */=/" -e "s/=\([^\"\']*$\)/='\1'/" "${POLICY_HOME}/etc/profile.d/${confName}" + done + + source "${POLICY_HOME}"/etc/profile.d/env.sh +} + +function features { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + source "${POLICY_HOME}"/etc/profile.d/env.sh + + for f in $(ls "${POLICY_INSTALL_INIT}"/features*.zip 2> /dev/null); do + echo "installing feature: ${f}" + "${POLICY_HOME}"/bin/features install "${f}" + done +} + +function scripts { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + source "${POLICY_HOME}"/etc/profile.d/env.sh + + for s in $(ls "${POLICY_INSTALL_INIT}"/*.sh 2> /dev/null); do + echo "executing script: ${s}" + source "${s}" + done +} + +function security { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + if [[ -f "${POLICY_INSTALL_INIT}"/policy-keystore ]]; then + if ! cmp -s "${POLICY_INSTALL_INIT}"/policy-keystore "${POLICY_HOME}"/etc/ssl/policy-keystore; then + echo "overriding policy-keystore"policy-keystore + cp -f "${POLICY_INSTALL_INIT}"/policy-keystore "${POLICY_HOME}"/etc/ssl + fi + fi + + if [[ -f ${POLICY_INSTALL_INIT}/policy-keystore ]]; then + if ! cmp -s "${POLICY_INSTALL_INIT}"/policy-truststore "${POLICY_HOME}"/etc/ssl/policy-truststore; then + echo "overriding policy-truststore" + cp -f "${POLICY_INSTALL_INIT}"/policy-truststore "${POLICY_HOME}"/etc/ssl + fi + fi + + if [[ -f "${POLICY_INSTALL_INIT}"/aaf-cadi.keyfile ]]; then + if ! cmp -s "${POLICY_INSTALL_INIT}"/aaf-cadi.keyfile "${POLICY_HOME}"/config/aaf-cadi.keyfile; then + echo "overriding aaf-cadi.keyfile" + cp -f "${POLICY_INSTALL_INIT}"/aaf-cadi.keyfile "${POLICY_HOME}"/config/aaf-cadi.keyfile + fi + fi +} + +function properties { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + for p in $(ls "${POLICY_INSTALL_INIT}"/*.properties 2> /dev/null); do + echo "configuration properties: ${p}" + cp -f "${p}" "${POLICY_HOME}"/config + done +} + +function db { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + if [[ -z ${SQL_HOST} ]]; then + return 0 + fi + + "${POLICY_HOME}"/bin/db-migrator -s ALL -o upgrade +} + +function nexus { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + if [[ -z ${RELEASE_REPOSITORY_URL} ]]; then + return 0 + fi + + # amsterdam legacy + + echo + echo "checking if there are amsterdam policies already deployed .." + echo + + local amsterdamVersion=$(curl --silent --connect-timeout 20 -X GET \ + "http://nexus:8081/nexus/service/local/artifact/maven/resolve?r=releases&g=org.onap.policy-engine.drools.amsterdam&a=policy-amsterdam-rules&v=RELEASE" \ + | grep -Po "(?<=).*(?=)") + + if [[ -z ${amsterdamVersion} ]]; then + echo "no amsterdam policies have been found .." + exit 0 + fi + + echo + echo "The latest deployed amsterdam artifact in nexus has version ${amsterdamVersion}" + echo + + sed -i.INSTALL \ + -e "s/^rules.artifactId=.*/rules.artifactId=policy-amsterdam-rules/g" \ + -e "s/^rules.groupId=.*/rules.groupId=org.onap.policy-engine.drools.amsterdam/g" \ + -e "s/^rules.version=.*/rules.version=${amsterdamVersion}/g" "${POLICY_HOME}"/config/amsterdam-controller.properties + + echo + echo "amsterdam controller will be started brained with maven coordinates:" + echo + + grep "^rules" "${POLICY_HOME}"/config/amsterdam-controller.properties + echo + echo +} + +function inspect { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + echo "ENV: " + env + echo + echo + + source "${POLICY_HOME}"/etc/profile.d/env.sh + policy status + + echo + echo +} + +function reload { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + configurations + features + security + properties + scripts +} + +function start { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + source "${POLICY_HOME}"/etc/profile.d/env.sh + policy start +} + +function boot { + if [[ ${DEBUG} == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + reload + db + start + + tail -f /dev/null +} + +set -e + +if [[ ${DEBUG} == y ]]; then + echo "-- $0 $* --" + set -x +fi + +operation="${1}" +case "${operation}" in + inspect) inspect + ;; + boot) boot + ;; + *) exec "$@" + ;; +esac -- cgit 1.2.3-korg