3 #function to provide help
4 #desc: this function provide help menu
5 #argument: -h for help, -p for path, -r for repository
6 #calling syntax: options
12 -l (Location) : path for searching values.yaml
13 [in case no path is provided then is will scan current directories for values.yml]
14 -r (Repository) : name of image repository
15 [format [repository name/url]:(port)]
16 [in case no repository is provided then defualt image repository will be nexus3.onap.org:10001]
17 -u (User) : user name for login
18 [in case no user name is provided then default user will be docker]
19 -p (Password) : password for login
20 [in case no password is provided then default user will be docker]
24 #function to parse yaml file
25 #desc: this function convert yaml file to dotted notion
27 #calling syntax: parse_yaml <yaml_file_name>
31 local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
32 sed -ne "s|^\($s\):|\1|" \
33 -e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
34 -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 |
36 indent = length($1)/2;
38 for (i in vname) {if (i > indent) {delete vname[i]}}
40 vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])(".")}
41 printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
48 #scan all values.yaml files
49 #parse yaml file into dotted format
50 #for each lines check there is image tag in line
51 #store image name and check next line for version information
52 #if in next line version is not present as a subtag then call docker pull with imageName
53 #if version is present in next line then call docker pull with imageName and imageVersion
57 #start processing for finding images and version
59 IMAGE_VERSION_TEXT="Version"
61 VALUES_FILE_NAME="values.yaml"
62 IMAGE_REPOSITORY="nexus3.onap.org:10001"
66 #scan for options menu
67 while getopts ":h:l:r:u:p:" PARAM; do
77 IMAGE_REPOSITORY=${OPTARG}
93 #docker login to nexus repo
94 echo docker login -u $USER_NAME -p $PASSWORD $IMAGE_REPOSITORY
95 docker login -u $USER_NAME -p $PASSWORD $IMAGE_REPOSITORY
97 #scan all values.yaml files recursively
98 for filename in `find $LOCATION -name $VALUES_FILE_NAME`
100 imageNameWithVersion=" ";
102 for line in `parse_yaml $filename`
104 #skiping commented line
105 if [ "${line:0:1}" != '#' ]; then
106 #find all image subtag inside converted values.yaml file's lines
107 if echo $line | grep -q $IMAGE_TEXT ; then
108 #find imageName inside line
109 imageName=`echo $line | awk -F "=" '{print $2}'`
110 #remove attional prefix and postfix
111 imageNameFinal=`echo "$imageName" | sed -e 's/^"//' -e 's/"$//' `
113 #check if line contain Version as a subtag in lines if yes then call docker pull with version
114 if echo $line | grep -q $IMAGE_VERSION_TEXT ; then
115 echo docker pull "$imageNameWithVersion":"$imageNameFinal"
116 docker pull $imageNameWithVersion:$imageNameFinal &
117 imageNameWithVersion=" "
119 #check Version is not in subtag and old scanned value is present then call docker pull without version
120 if [ "$imageNameWithVersion" != " " ]; then
121 echo docker pull "$imageNameWithVersion"
122 docker pull $imageNameWithVersion &
123 imageNameWithVersion=$imageNameFinal
125 imageNameWithVersion=$imageNameFinal
132 # complete processing
133 echo "finished launching pulls"
134 #MAX_WAIT_INTERVALS=300
136 while [ $(ps -ef | grep docker | grep pull | grep -v $0 | wc -l) -gt 0 ]; do
138 INTERVAL_COUNT=$((INTERVAL_COUNT - 1))
139 echo "waiting for last pull"
140 if [ "$INTERVAL_COUNT" -eq 0 ]; then