basic image with CL app preloaded 93/78093/4
authorJorge Hernandez <jorge.hernandez-herrero@att.com>
Thu, 7 Feb 2019 21:58:58 +0000 (15:58 -0600)
committerJorge Hernandez <jorge.hernandez-herrero@att.com>
Fri, 8 Feb 2019 17:58:59 +0000 (11:58 -0600)
The image can replace the drools-pdp and only
overrides what is necessary to make sure the CL
application is in the image.  There should be
no functional difference.

Tooling to operate with docker images is provided
as well, for example:

controlloop/tools/docker-cl --help

BUILD INFO:
    image: policy-pdpd-cl
    image-path: controlloop/packages/docker-controlloop/target/policy-pdpd-cl
    image: policy-pdpd-cl
    registry: nexus3.onap.org:10003
    patch: 1.4.0-SNAPSHOT
    version: 1.4-SNAPSHOT
    timestamp: 20190207T220835

TAGS:
    BUILD:
        verify:
            onap/policy-pdpd-cl:latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-20190207T220835Z
        merge:
            onap/policy-pdpd-cl:latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-20190207T220835Z
        release:
            onap/policy-pdpd-cl:latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-STAGING-20190207T220835Z
    PUSH:
        verify:
        merge:
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-20190207T220835Z
        release:
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
            nexus3.onap.org:10003/onap/policy-pdpd-cl:1.4.0-SNAPSHOT-STAGING-20190207T220835Z

SYNTAX:
    docker-cl
        [--help|-h] [--build|-b <repo:tag>] [--push|-p <repo:tag>]
        [--verify|-v] [--merge|-m] [--release|-r]
        [--run <volume-full-path>] [--cmd <volume-full-path> <cmd>]

Change-Id: I0917c0bca212fc0b543e52ae1615c513d43f7d93
Issue-ID: POLICY-1505
Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
controlloop/build/docker-cl [new file with mode: 0644]
controlloop/packages/basex-controlloop/pom.xml
controlloop/packages/basex-controlloop/src/assembly/zip.xml
controlloop/packages/basex-controlloop/src/main/resources/controlloop.version [moved from controlloop/packages/basex-controlloop/src/main/resources/apps-controlloop-version with 100% similarity]
controlloop/packages/docker-controlloop/pom.xml [new file with mode: 0644]
controlloop/packages/docker-controlloop/src/main/docker/Dockerfile [new file with mode: 0644]
controlloop/packages/pom.xml

diff --git a/controlloop/build/docker-cl b/controlloop/build/docker-cl
new file mode 100644 (file)
index 0000000..659c2ba
--- /dev/null
@@ -0,0 +1,254 @@
+#!/usr/bin/env 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 usage {
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- $0 --"
+        set -x
+    fi
+
+    echo
+    echo "SYNTAX:"
+    echo -e "\t$(basename "$0") "
+    echo -e "\t\t[--help|-h] [--build|-b <repo:tag>] [--push|-p <repo:tag>]"
+    echo -e "\t\t[--verify|-v] [--merge|-m] [--release|-r] "
+    echo -e "\t\t[--run <volume-full-path>] [--cmd <volume-full-path> <cmd>]"
+    echo
+    echo
+}
+
+function build {
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- ${FUNCNAME[0]} $* --"
+        set -x
+    fi
+
+    local tag tags
+
+    for tag in "$@"; do
+        tags="${tags} --tag ${tag}"
+    done
+
+    (set -x; docker build ${BUILD_ARGS} ${tags} ${IMAGE_PATH})
+
+    if [[ $? != 0 ]]; then
+        echo -e "\nERROR: docker build\n"
+        return 1
+    fi
+
+    docker image ls | egrep "TAG|${IMAGE}"
+
+    return 0
+}
+
+function push {
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- ${FUNCNAME[0]} $* --"
+        set -x
+    fi
+
+    local tag="${1}"
+
+    if [[ -z ${tag} ]]; then
+        echo -e "\nERROR: no <repo:tag> provided\n"
+        return 1
+    fi
+
+    (set -x; docker push ${tag})
+
+    if [[ $? != 0 ]]; then
+        echo -e "\nERROR: docker push\n"
+        return 2
+    fi
+
+    return 0
+}
+
+function release {
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- ${FUNCNAME[0]} --"
+        set -x
+    fi
+
+    build ${RELEASE_BUILD_TAGS} && push ${RELEASE_PUSH_TAGS}
+    return $?
+}
+
+function merge {
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- ${FUNCNAME[0]} --"
+        set -x
+    fi
+
+    build ${MERGE_BUILD_TAGS} && push ${MERGE_PUSH_TAGS}
+    return $?
+}
+
+function verify {
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- ${FUNCNAME[0]} --"
+        set -x
+    fi
+
+    build ${VERIFY_BUILD_TAGS}
+
+    return $?
+}
+
+function run {
+    local debugEnv
+
+    if [[ ${DEBUG} == y ]]; then
+        echo "-- ${FUNCNAME[0]} $* --"
+        set -x
+        debugEnv='-e "DEBUG=y"'
+    fi
+
+    local volume="$1"
+    local cmd="$2"
+
+    if [[ ! -d ${volume} ]]; then
+        echo -e "\nERROR: an absolute path to a volume must be provided: ${volume}\n"
+        return 1
+    fi
+
+    (
+    set -x
+    docker run --rm ${debugEnv} -it -v "${volume}":/tmp/policy-install/config -p 9696:9696 \
+        --name pdpd-cl onap/policy-pdpd-cl ${cmd}
+    )
+
+    return $?
+}
+
+(
+if [[ ${DEBUG} == y ]]; then
+    echo "-- $0 $* --"
+    set -x
+fi
+
+VERSION_PATH="controlloop/packages/docker-controlloop/target/version"
+if [[ ! -f "${VERSION_PATH}" ]]; then
+    cd  "$(dirname "$0")"/../..
+    if [[ ! -f "${VERSION_PATH}" ]]; then
+        echo -e "\nERROR: ${VERSION_PATH} cannot be found\n"
+        usage
+        exit 1
+    fi
+fi
+
+DOCKER_REPOSITORY="nexus3.onap.org:10003"
+IMAGE=policy-pdpd-cl
+IMAGE_PATH="controlloop/packages/docker-controlloop/target/${IMAGE}"
+
+VERSION="$(cat "${VERSION_PATH}")"
+MAJOR_MINOR_VERSION="$(cut -f 1,2 -d . "${VERSION_PATH}")"
+TIMESTAMP="$(date -u +%Y%m%dT%H%M%S)"
+
+if [[ -z "${VERSION}" ]]; then
+    echo -e "\nERROR: no version\n"
+    usage
+    exit 1
+fi
+
+if [[ -z "${MAJOR_MINOR_VERSION}" ]]; then
+    echo "\nERROR: no major/minor version: ${VERSION}\n"
+    usage
+    exit 1
+fi
+
+if [[ ${VERSION} == *"SNAPSHOT"* ]]; then
+    MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION}-SNAPSHOT"
+else
+    MAJOR_MINOR_VERSION="${MAJOR_MINOR_VERSION}-STAGING"
+fi
+
+BUILD_ARGS="--build-arg BUILD_VERSION_APP_CL=${VERSION}"
+
+echo
+echo -e "BUILD INFO:"
+echo -e "\timage: ${IMAGE}"
+echo -e "\timage-path: ${IMAGE_PATH}"
+echo -e "\timage: ${IMAGE}"
+echo -e "\tregistry: ${DOCKER_REPOSITORY}"
+echo -e "\tpatch: ${VERSION}"
+echo -e "\tversion: ${MAJOR_MINOR_VERSION}"
+echo -e "\ttimestamp: ${TIMESTAMP}"
+echo
+
+TAG_LATEST="onap/${IMAGE}:latest"
+TAG_REPO_LATEST="${DOCKER_REPOSITORY}/onap/${IMAGE}:latest"
+TAG_REPO_VERSION_LATEST="${DOCKER_REPOSITORY}/onap/${IMAGE}:${MAJOR_MINOR_VERSION}-latest"
+TAG_REPO_VERSION_TIMESTAMP="${DOCKER_REPOSITORY}/onap/${IMAGE}:${VERSION}-${TIMESTAMP}Z"
+TAG_REPO_VERSION_STAGING_TIMESTAMP="${DOCKER_REPOSITORY}/onap/${IMAGE}:${VERSION}-STAGING-${TIMESTAMP}Z"
+
+VERIFY_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}"
+
+MERGE_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}"
+RELEASE_BUILD_TAGS="${TAG_LATEST} ${TAG_REPO_LATEST} ${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_STAGING_TIMESTAMP}"
+
+MERGE_PUSH_TAGS="${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_TIMESTAMP}"
+RELEASE_PUSH_TAGS="${TAG_REPO_VERSION_LATEST} ${TAG_REPO_VERSION_STAGING_TIMESTAMP}"
+
+echo
+echo -e "TAGS:"
+echo -e "\tBUILD:"
+echo -e "\t\tverify:\n\t\t\t${VERIFY_BUILD_TAGS// /$'\n\t\t\t'}"
+echo -e "\t\tmerge:\n\t\t\t${MERGE_BUILD_TAGS// /$'\n\t\t\t'}"
+echo -e "\t\trelease:\n\t\t\t${RELEASE_BUILD_TAGS// /$'\n\t\t\t'}"
+echo -e "\tPUSH:"
+echo -e "\t\tverify: "
+echo -e "\t\tmerge:\n\t\t\t${MERGE_PUSH_TAGS// /$'\n\t\t\t'}"
+echo -e "\t\trelease:\n\t\t\t${RELEASE_PUSH_TAGS// /$'\n\t\t\t'}"
+echo
+echo
+
+until [[ -z "$1" ]]; do
+    case "$1" in
+        -h|--help)      usage
+                        ;;
+        -b|--build)     shift
+                        build "$1"
+                        ;;
+        -p|--push)      shift
+                        push "$1"
+                        ;;
+        -r|--release)   release
+                        ;;
+        -m|--merge)     merge
+                        ;;
+        -v|--verify)    verify
+                        ;;
+        --run)          shift
+                        volumeArg="$1"
+                        run "${volumeArg}"
+                        ;;
+        --cmd)          shift
+                        volumeArg="$1"
+                        shift
+                        cmdArg="$1"
+                        run "${volumeArg}" "${cmdArg}"
+                        ;;
+        *)              usage
+                        exit 1
+                        ;;
+    esac
+    shift
+done
+)
index 5930168..1d3fe3d 100644 (file)
@@ -54,7 +54,7 @@
                                 <resource>
                                     <directory>src/main/resources</directory>
                                     <includes>
-                                        <include>apps-controlloop-version</include>
+                                        <include>controlloop.version</include>
                                     </includes>
                                     <filtering>true</filtering>
                                 </resource>
index caa943c..ba1af66 100644 (file)
@@ -37,7 +37,7 @@
             <fileMode>755</fileMode>
             <directoryMode>700</directoryMode>
             <includes>
-                <include>apps-controlloop-version</include>
+                <include>controlloop.version</include>
             </includes>
         </fileSet>
     </fileSets>
diff --git a/controlloop/packages/docker-controlloop/pom.xml b/controlloop/packages/docker-controlloop/pom.xml
new file mode 100644 (file)
index 0000000..d55f5ea
--- /dev/null
@@ -0,0 +1,113 @@
+<!--
+  ============LICENSE_START=======================================================
+  ONAP
+  ================================================================================
+  Copyright (C) 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=========================================================
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.policy.drools-applications.controlloop.packages</groupId>
+        <artifactId>packages</artifactId>
+        <version>1.4.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>docker-controlloop</artifactId>
+    <packaging>pom</packaging>
+
+    <name>docker-controlloop</name>
+    <description>ONAP Policy Control Loop PDP-D Docker Build</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-cl-apps-zip</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/policy-pdpd-cl</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.policy.drools-applications.controlloop.packages</groupId>
+                                    <artifactId>apps-controlloop</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>zip</type>
+                                    <destFileName>apps-controlloop.zip</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/policy-pdpd-cl</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/docker</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>get-target-version</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <executable>echo</executable>
+                    <workingDirectory>${project.build.directory}</workingDirectory>
+                    <arguments>
+                        <argument>${project.version}</argument>
+                    </arguments>
+                    <outputFile>${project.build.directory}/version</outputFile>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+
+</project>
diff --git a/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile b/controlloop/packages/docker-controlloop/src/main/docker/Dockerfile
new file mode 100644 (file)
index 0000000..7bb2006
--- /dev/null
@@ -0,0 +1,7 @@
+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}
+
+ADD apps-controlloop.zip ./
+RUN unzip apps-controlloop.zip
index 045c691..3b192af 100644 (file)
@@ -2,7 +2,7 @@
   ============LICENSE_START=======================================================
   Drools PDP Application Models
   ================================================================================
-  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+  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.
@@ -38,5 +38,6 @@
     <module>basex-controlloop</module>
     <module>artifacts-controlloop</module>
     <module>apps-controlloop</module>
+    <module>docker-controlloop</module>
   </modules>
 </project>