From 6a5486c94c488198dd5dd97d181c5b88f4ed4a94 Mon Sep 17 00:00:00 2001 From: Alexey Elagin Date: Fri, 18 Dec 2015 10:31:21 +0300 Subject: [PATCH] fix iso_updater.sh Change-Id: Id9237b402f89c07b9ce81bbc39b7b7c9fd7ad179 --- iso-updater/get_iso.sh | 161 ++++------------------------------------- 1 file changed, 16 insertions(+), 145 deletions(-) diff --git a/iso-updater/get_iso.sh b/iso-updater/get_iso.sh index 2731252..8924f21 100755 --- a/iso-updater/get_iso.sh +++ b/iso-updater/get_iso.sh @@ -1,156 +1,27 @@ -#!/bin/bash -# Copyright 2015 Mellanox Technologies, 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. - -get_iso_from_storage() -{ - jenkinsSlaveIP=$1 - jenkinsSlavePassword=$2 - fuel_version_name=$3 - fuel_iso_path=$4 - new_folder_name=$5 - -/usr/bin/expect << EOF -set timeout 3000 -spawn scp -rp $jenkinsSlaveIP:fuel_6.1/iso/$fuel_version_name $fuel_iso_path/$new_folder_name -set timeout 3000 -expect "yes/no" { -send "yes\r" -expect "*?assword" { send "$jenkinsSlavePassword\r" } -} "*?assword" { send "$jenkinsSlavePassword\r" } -expect "*#*" -EOF - -} - -fuel_iso_path=/root/fueliso +$fuel_iso_path='/var/lib/iso' +$jenkins_slave='jenkins-slave.test-company.org' +$fuel_remote_iso_path='/var/lib/iso' [ -d $fuel_iso_path ] || mkdir $fuel_iso_path +last_rel=$(w3m -dump -cols 400 https://www.fuel-infra.org/release/status#tab_2 | grep -v community-8 | grep "ok ok ok ok" | head -1 | cut -d' ' -f 8) +rel=$last_rel +if [ ! -f "$fuel_iso_path/$rel.iso" ]; then + touch "$fuel_iso_path/$rel.iso.progress" + aria2c -x10 http://seed.fuel-infra.org/fuelweb-iso/$rel.iso -d $fuel_iso_path -l $fuel_iso_path/$rel.iso.progress + echo "http://seed.fuel-infra.org/fuelweb-iso/$rel.iso -b -o $fuel_iso_path$rel.iso.progress -P $fuel_iso_path" +fi -jenkinsSlaveIP=$1 -jenkinsSlavePassword=$2 -fuel_url=$3 - -# first we need to decide weather to get the iso from the storage or form the internet -# if the fuel url had http in it or equal to 0, then from the net, -# else: -# get it from the storage -# mlnx_plugin_enable should be true or false based on later requirements - -substr=http - -# flag 0 means no http in it -# flag 1 means there's http in it, so get it from the net -[[ $fuel_url == *"$substr"* ]] && flag=1 || flag=0 - - -# check if to get the fuel version from the storage -size_url=${#fuel_url} -if [[ ("$flag" -eq 0) && ("$size_url" -gt "1") ]]; then - - # get iso from storage to pxe machine - fuel_version_name=$fuel_url - new_folder_name=$(sed "s/.iso//g" <<< $fuel_version_name) - if [ -d ~/fueliso/$new_folder_name ]; then - echo "you have this iso already there, just make sure to mount it" - else - mkdir -p $fuel_iso_path/$new_folder_name - apt-get -y install expect - get_iso_from_storage $jenkinsSlaveIP $jenkinsSlavePassword $fuel_version_name $fuel_iso_path $new_folder_name - fi - - # make the path ready for the new mount - pathToIso=$fuel_iso_path/$new_folder_name/$fuel_version_name - - # remove old mount - rm -rf /var/lib/tftpboot/fuel - -else - - # we wanna download the ISO: - # Check if we have w3m rpm - apt-get -y install -y w3m - - #in centos yum install –y aria2 - apt-get -y install aria2 - - # Check if there's a passed parameter, then use it to download, else if it was 0 get the latest iso - #------Check user supplied url - if [ "$fuel_url" -eq 0 ]; then - last_rel=$(w3m -dump -cols 400 https://www.fuel-infra.org/release/status#tab_4 | grep -v community-5 | grep "ok ok ok ok" | head -1 | awk -F' ' '{ print $5 }') - rel=$last_rel - else - - # if no parameter found, download the latest version - rel=$(echo $fuel_url | cut -d'/' -f5) - rel=$(echo $rel | cut -d'?' -f1) - rel=$(sed "s/.iso.torrent//g" <<< $rel) - fi - fuel_iso_path="$fuel_iso_path/$rel" - pathToIso="$fuel_iso_path/$rel.iso" - if [ -d $fuel_iso_path && -e $pathToIso ]; then - echo "You got the latest ISO, no need to download any.." - - # just make sure to mount the new one - test -d /var/lib/tftpboot/fuel || mkdir -p /var/lib/tftpboot/fuel - test -d /var/lib/tftpboot/fuel || mkdir -p /mnt/fueliso - - # extract the iso file - mount -o loop $pathToIso /mnt/fueliso - - # copy files extracted files - rsync -a /mnt/fueliso/ /var/lib/tftpboot/fuel/ - - # unmount the iso and remove the mount directory - umount /mnt/fueliso && rmdir /mnt/fueliso - exit 0 - else - mkdir $fuel_iso_path - rm -rf /var/lib/tftpboot/fuel - fi - if [ ! -f "$fuel_iso_path/$rel.iso" ]; then - touch "$fuel_iso_path/$rel.iso.progress" - aria2c -x10 http://seed.fuel-infra.org/fuelweb-iso/$rel.iso -d $fuel_iso_path -l $fuel_iso_path/$rel.iso.progress - echo "http://seed.fuel-infra.org/fuelweb-iso/$rel.iso -b -o $fuel_iso_path$rel.iso.progress -P $fuel_iso_path" - fi - - # make sure that previous finished successfully, if not, delete the directory that have been created for it +# make sure that previous finished successfully, if not, delete the directory that have been created for it grep -i "error" $fuel_iso_path/$rel.iso.progress res=$(echo $?) if [ "$res" -eq 0 ]; then - - # this means we had an error in it, delete folder created, then exit with error - echo "error has been detected while downloading this build.. check the above progress file." - rm -rf $fuel_iso_path - exit 1 + # this means we had an error in it, delete folder created, then exit with error + echo "error has been detected while downloading this build.. check the above progress file." + rm -rf $fuel_iso_path + exit 1 fi pathToIso="$fuel_iso_path/$rel.iso" fi -set -e - -# create the follwoing 2 folders -mkdir -p /var/lib/tftpboot/fuel -mkdir -p /mnt/fueliso - -# extract the iso file -mount -o loop $pathToIso /mnt/fueliso - -# copy files extracted files -rsync -a /mnt/fueliso/* /var/lib/tftpboot/fuel/ - -# unmount the iso and remove the mount directory -umount /mnt/fueliso && rmdir /mnt/fueliso +rsync -av --progress --delete $fuel_iso_path $jenkins_slave:$fuel_remote_iso_path exit 0 \ No newline at end of file