diff options
author | Tomáš Levora <t.levora@partner.samsung.com> | 2019-03-04 16:40:09 +0100 |
---|---|---|
committer | Tomáš Levora <t.levora@partner.samsung.com> | 2019-05-03 16:18:42 +0000 |
commit | a5a6e7c4cab9b235a68e7af57d62010d93949b62 (patch) | |
tree | 8beb44a29f084b02d4e60ff875efa0f14930985b | |
parent | 517e4576afcdd6b59a3b552ea394901c2003ca0a (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-x | build/creating_data/docker-images-collector.sh | 118 |
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 |