summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomáš Levora <t.levora@partner.samsung.com>2019-03-04 16:40:09 +0100
committerTomáš Levora <t.levora@partner.samsung.com>2019-05-03 16:18:42 +0000
commita5a6e7c4cab9b235a68e7af57d62010d93949b62 (patch)
tree8beb44a29f084b02d4e60ff875efa0f14930985b
parent517e4576afcdd6b59a3b552ea394901c2003ca0a (diff)
Adding script for autocollection of docker images
This script is collecting docker images from oom based on enabled subsystems to specified list There are missing images downloaded in run time based on blueprints and images necessary for rancher Issue-ID: OOM-1678 Change-Id: I4367a8a7c755bbf6045ad192bbfc4dd68daa92f8 Signed-off-by: Tomáš Levora <t.levora@partner.samsung.com>
-rwxr-xr-xbuild/creating_data/docker-images-collector.sh118
1 files changed, 118 insertions, 0 deletions
diff --git a/build/creating_data/docker-images-collector.sh b/build/creating_data/docker-images-collector.sh
new file mode 100755
index 00000000..e13b9150
--- /dev/null
+++ b/build/creating_data/docker-images-collector.sh
@@ -0,0 +1,118 @@
+#! /usr/bin/env bash
+
+# COPYRIGHT NOTICE STARTS HERE
+#
+# Copyright 2019 © Samsung Electronics Co., Ltd.
+#
+# 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.
+#
+# COPYRIGHT NOTICE ENDS HERE
+
+### This script is preparing docker images list based on kubernetes project
+
+### NOTE: helm needs to be installed and working, it is required for correct processing
+### of helm charts in oom directory
+
+# Fail fast settings
+set -e
+
+usage () {
+ echo " "
+ echo " This script is preparing docker images list based on kubernetes project"
+ echo " Usage:"
+ echo " ./$(basename $0) <project version> <path to project> [<output list file>]"
+ echo " "
+ echo " Example: ./$(basename $0) onap_3.0.2 /root/oom/kubernetes/onap"
+ echo " "
+ echo " Dependencies: helm, python-yaml, make"
+ echo " "
+ exit 1
+}
+
+parse_yaml() {
+python - <<PYP
+#!/usr/bin/python
+from __future__ import print_function
+import yaml
+import sys
+
+with open("${1}", 'r') as f:
+ values = yaml.load(f)
+
+ enabled = filter(lambda x: values[x].get('enabled', False) == True, values)
+ print(' '.join(enabled))
+PYP
+}
+
+create_list() {
+ helm template "${PROJECT_DIR}/../${1}" | grep 'image:\ \|tag_version:\ \|h._image' |
+ sed -e 's/^.*\"h._image\"\ :\ //; s/^.*\"\(.*\)\".*$/\1/' \
+ -e 's/\x27\|,//g; s/^.*\(image\|tag_version\):\ //' | tr -d '\r'
+}
+
+# Configuration
+TAG="${1}"
+PROJECT_DIR="${2}"
+LIST="${3}"
+LISTS_DIR="$(readlink -f $(dirname ${0}))/../data_lists"
+HELM_REPO="local http://127.0.0.1:8879"
+
+if [ "${1}" == "-h" ] || [ "${1}" == "--help" ] || [ $# -lt 2 ]; then
+ usage
+elif [ ! -f "${PROJECT_DIR}/../Makefile" ]; then
+ echo "Wrong path to project directory entered"
+ exit 1
+elif [ -z "${LIST}" ]; then
+ mkdir -p ${LISTS_DIR}
+ LIST="${LISTS_DIR}/${TAG}-docker_images.list"
+fi
+
+if [ -e "${LIST}" ]; then
+ mv -f "${LIST}" "${LIST}.bk"
+ MSG="$(realpath ${LIST}) already existed\nCreated backup $(realpath ${LIST}).bk\n"
+fi
+
+PROJECT="$(basename ${2})"
+
+# Setup helm
+if pgrep -x "helm" > /dev/null; then
+ echo "helm is already running"
+else
+ helm init -c > /dev/null
+ helm serve &
+fi
+
+# Create helm repository
+if ! helm repo list 2>&1 | awk '{ print $1, $2 }' | grep -q "$HELM_REPO" > /dev/null; then
+ helm repo add "$HELM_REPO"
+fi
+
+# Make all
+pushd "${PROJECT_DIR}/.."
+echo "Building project..."
+make all > /dev/null; make ${PROJECT} > /dev/null
+popd
+
+# Create the list from all enabled subsystems
+echo "Creating the list..."
+if [ "${PROJECT}" == "onap" ]; then
+ for subsystem in `parse_yaml "${PROJECT_DIR}/values.yaml"`; do
+ create_list ${subsystem}
+ done
+else
+ create_list ${PROJECT}
+fi | sort -u > ${LIST}
+
+echo -e ${MSG}
+echo -e 'The list has been created:\n '"${LIST}"
+exit 0