Baking "runtime" software into image 64/82364/2
authorJorge Hernandez <jorge.hernandez-herrero@att.com>
Fri, 15 Mar 2019 05:23:28 +0000 (00:23 -0500)
committerJorge Hernandez <jorge.hernandez-herrero@att.com>
Fri, 15 Mar 2019 05:32:09 +0000 (00:32 -0500)
Change-Id: I329596e6c23283cc4c31d689c621d7b4d1a298d7
Issue-ID: POLICY-1560
Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
controlloop/build/docker-cl
controlloop/common/feature-controlloop-casablanca/src/main/feature/config/casablanca-controller.properties
controlloop/packages/docker-controlloop/src/main/docker/Dockerfile
controlloop/packages/docker-controlloop/src/main/docker/docker-entrypoint.sh [new file with mode: 0644]

index 6c1d65f..7fd0c53 100644 (file)
@@ -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"
index 08482e0..5170962 100644 (file)
@@ -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
index 28631c7..1044e27 100644 (file)
@@ -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 (file)
index 0000000..8afc2c0
--- /dev/null
@@ -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 "(?<=<version>).*(?=</version>)")
+
+    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