From dccf4738e41ebeac70f0ff773cadfa293e02cc1e Mon Sep 17 00:00:00 2001 From: Zhe Huang Date: Wed, 11 Sep 2019 13:59:35 -0400 Subject: [PATCH] Decouple generation of docker image list from docker image prepull script Signed-off-by: Zhe Huang Change-Id: I6bf494e3f8c88fd5f4d18c76699e9fddc08d963a --- bin/gen-image-list | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ bin/prepull-images | 63 +++++-------------------------------- 2 files changed, 99 insertions(+), 55 deletions(-) create mode 100755 bin/gen-image-list diff --git a/bin/gen-image-list b/bin/gen-image-list new file mode 100755 index 00000000..30386af2 --- /dev/null +++ b/bin/gen-image-list @@ -0,0 +1,91 @@ +#!/bin/bash +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# 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. +# +############################################################################## + +# Installs well-known RIC charts then verifies specified helm chart +# Requires chart tgz archives in /tmp + + +while [ -n "$1" ]; do # while loop starts + + case "$1" in + + -f) OVERRIDEYAML=$2 + shift + ;; + *) echo "Option $1 not recognized. Please use -f to specify the recipe path." ;; # In case you typed a different option other than a,b,c + + esac + + shift + +done + +if [ -z $OVERRIDEYAML ]; then + echo "Deploy recipe is missing. Please use -f to specify the recipe path." + exit 1 +fi + + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +TEMP_DIR=/tmp +rm -rf $TEMP_DIR/imagelist +touch $TEMP_DIR/imagelist +CHART_ARRAY=() +while IFS= read -r -d $'\0'; do + CHART_ARRAY+=("$REPLY") +done < <(find $ROOT_DIR/../ -name Chart.yaml -printf '%h\0') + +rm -fr $TEMP_DIR/ric-common*.tgz + +helm package -d $TEMP_DIR $ROOT_DIR/../ric-common/Common-Template/helm/ric-common +echo "***************************************" + + + +for dir in "${CHART_ARRAY[@]}" +do + + #rm -rf $dir/charts + rm -rf $dir/tmpcharts + echo "Analyzing Chart $(echo $dir | awk '{n=split($0, a, "/"); print a[n]}')" + echo $dir + mkdir -p $dir/charts + cp $TEMP_DIR/ric-common*.tgz $dir/charts/ + + helm dep up $dir > /dev/null 2>&1 + + IMAGE_ARRAY=$(helm template -f $OVERRIDEYAML $dir | grep "image:" | awk '{ gsub(/.*image: /, "", $0); gsub(/"/, "", $0); print $0}' ) + + + for f in $IMAGE_ARRAY; do + if [ ! -z $f ]; then + FOUND=$(grep $f $TEMP_DIR/imagelist) + if [ -z $FOUND ]; then + echo "Found unique docker image $f." + echo $f >> $TEMP_DIR/imagelist + fi + fi + done + + echo "***************************************" +done + + + +echo "Your image list is available here: $TEMP_DIR/imagelist" diff --git a/bin/prepull-images b/bin/prepull-images index 71afe003..0cd1cf9c 100755 --- a/bin/prepull-images +++ b/bin/prepull-images @@ -25,7 +25,7 @@ while [ -n "$1" ]; do # while loop starts case "$1" in - -f) OVERRIDEYAML=$2 + -f) IMAGELISTFILE=$2 shift ;; @@ -43,65 +43,18 @@ while [ -n "$1" ]; do # while loop starts done -if [ -z $OVERRIDEYAML ]; then - echo "Deploy recipe is missing. Please use -f to specify the recipe path." +if [ -z "$IMAGELISTFILE" ]; then + echo "Image list file is missing. Please use -f to specify the path." exit 1 fi -if [ -z $IMAGE_DIRECTORY_PATH ]; then +if [ -z "$IMAGE_DIRECTORY_PATH" ]; then IMAGE_DIRECTORY_PATH=/tmp/ric_image - rm -rf $IMAGE_DIRECTORY_PATH - mkdir -p $IMAGE_DIRECTORY_PATH fi -ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" -TEMP_DIR=/tmp -rm -rf $TEMP_DIR/imagelist -touch $TEMP_DIR/imagelist -CHART_ARRAY=() -while IFS= read -r -d $'\0'; do - CHART_ARRAY+=("$REPLY") -done < <(find $ROOT_DIR/../ -name Chart.yaml -printf '%h\0') - -rm -fr $TEMP_DIR/ric-common*.tgz - -helm package -d $TEMP_DIR $ROOT_DIR/../ric-common/Common-Template/helm/ric-common -echo "***************************************" - - - -for dir in "${CHART_ARRAY[@]}" -do - - #rm -rf $dir/charts - rm -rf $dir/tmpcharts - echo "Analyzing Chart $(echo $dir | awk '{n=split($0, a, "/"); print a[n]}')" - echo $dir - mkdir -p $dir/charts - cp $TEMP_DIR/ric-common*.tgz $dir/charts/ - - helm dep up $dir > /dev/null 2>&1 - - - if [ -z $OVERRIDEYAML ]; then - IMAGE_ARRAY=$(helm template $dir | grep "image:" | awk '{ gsub(/.*image: /, "", $0); gsub(/"/, "", $0); print $0}') - else - IMAGE_ARRAY=$(helm template -f $OVERRIDEYAML $dir | grep "image:" | awk '{ gsub(/.*image: /, "", $0); gsub(/"/, "", $0); print $0}' ) - fi - - for f in $IMAGE_ARRAY; do - if [ ! -z $f ]; then - FOUND=$(grep $f $TEMP_DIR/imagelist) - if [ -z $FOUND ]; then - echo "Found unique docker image $f." - echo $f >> $TEMP_DIR/imagelist - fi - fi - done - - echo "***************************************" -done +rm -rf $IMAGE_DIRECTORY_PATH +mkdir -p $IMAGE_DIRECTORY_PATH while IFS= read -r image @@ -121,7 +74,7 @@ do echo "************************************************************" -done < "$TEMP_DIR/imagelist" - +done < "$IMAGELISTFILE" +echo "RIC Images are downloaded to: $IMAGE_DIRECTORY_PATH" -- 2.16.6