mirror of https://github.com/lework/script
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
1.8 KiB
103 lines
1.8 KiB
4 years ago
|
|
||
|
|
||
|
util::download_file() {
|
||
|
local -r url=$1
|
||
|
local -r destination_file=$2
|
||
|
|
||
|
rm "${destination_file}" 2&> /dev/null || true
|
||
|
|
||
|
for i in $(seq 5)
|
||
|
do
|
||
|
if ! curl -fsSL --retry 3 --keepalive-time 2 "${url}" -o "${destination_file}"; then
|
||
|
echo "Downloading ${url} failed. $((5-i)) retries left."
|
||
|
sleep 1
|
||
|
else
|
||
|
echo "Downloading ${url} succeed"
|
||
|
return 0
|
||
|
fi
|
||
|
done
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
|
||
|
# Example: util::wait_for_success 120 5 "kubectl get nodes|grep localhost"
|
||
|
# arguments: wait time, sleep time, shell command
|
||
|
# returns 0 if the shell command get output, 1 otherwise.
|
||
|
util::wait_for_success(){
|
||
|
local wait_time="$1"
|
||
|
local sleep_time="$2"
|
||
|
local cmd="$3"
|
||
|
while [ "$wait_time" -gt 0 ]; do
|
||
|
if eval "$cmd"; then
|
||
|
return 0
|
||
|
else
|
||
|
sleep "$sleep_time"
|
||
|
wait_time=$((wait_time-sleep_time))
|
||
|
fi
|
||
|
done
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
util::host_os() {
|
||
|
local host_os
|
||
|
case "$(uname -s)" in
|
||
|
Darwin)
|
||
|
host_os=darwin
|
||
|
;;
|
||
|
Linux)
|
||
|
host_os=linux
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unsupported host OS. Must be Linux or Mac OS X."
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
echo "${host_os}"
|
||
|
}
|
||
|
|
||
|
util::host_arch() {
|
||
|
local host_arch
|
||
|
case "$(uname -m)" in
|
||
|
x86_64*)
|
||
|
host_arch=amd64
|
||
|
;;
|
||
|
i?86_64*)
|
||
|
host_arch=amd64
|
||
|
;;
|
||
|
amd64*)
|
||
|
host_arch=amd64
|
||
|
;;
|
||
|
aarch64*)
|
||
|
host_arch=arm64
|
||
|
;;
|
||
|
arm64*)
|
||
|
host_arch=arm64
|
||
|
;;
|
||
|
arm*)
|
||
|
host_arch=arm
|
||
|
;;
|
||
|
i?86*)
|
||
|
host_arch=x86
|
||
|
;;
|
||
|
s390x*)
|
||
|
host_arch=s390x
|
||
|
;;
|
||
|
ppc64le*)
|
||
|
host_arch=ppc64le
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unsupported host arch. Must be x86_64, 386, arm, arm64, s390x or ppc64le."
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
echo "${host_arch}"
|
||
|
}
|
||
|
|
||
|
util::md5() {
|
||
|
if which md5 >/dev/null 2>&1; then
|
||
|
md5 -q "$1"
|
||
|
else
|
||
|
md5sum "$1" | awk '{ print $1 }'
|
||
|
fi
|
||
|
}
|