diff --git a/images/01-base/usr/bin/os-subscriber b/images/01-base/usr/bin/os-subscriber index 8f93df48..ed1904a1 100755 --- a/images/01-base/usr/bin/os-subscriber +++ b/images/01-base/usr/bin/os-subscriber @@ -3,46 +3,59 @@ set -e -x gateway_address="http://ros.rancher.io/gateway" -_sigProcess() { +sigProcess() { echo "SIGINT/SIGTERM signal..." kill -9 $$ } -trap _sigProcess SIGINT SIGKILL SIGTERM +trap sigProcess SIGINT SIGKILL SIGTERM -__read_policy() { +read_policy() { policy=`ros c get rancher.upgrade.policy` - if [ -z $policy ]; then + if [[ -z ${policy} ]]; then echo "can not read upgrade.policy" - exit 1 + return 1 fi return $(($policy)) } -__report_activity() { +report_activity() { arch=`uname -m` uuid=`cat /sys/class/dmi/id/product_uuid || true` release=`ros -v | awk '{print $2}'` response=`wget --server-response ${gateway_address}/report --header 'Accept: application/json' --header 'Content-type: application/json' --header "arch: $arch" --header "uuid: $uuid" --header "release: $release" 2>&1 | awk '/^ HTTP/{print $2}'` - if [ $response -ge 200 -a $response -le 300 ]; then + if [[ -n ${response} && ${response} -ge 200 && ${response} -le 300 ]]; then echo "report activity success" else echo "report activity failed" + return 1 fi } -__upgrade_operate() { +upgrade_operate() { recommend_version=`wget ${gateway_address}/version -q -O -` - case $policy in + case ${policy} in download) echo "upgrade.policy is 'download'" - __report_activity - system-docker pull $recommend_version + report_activity + if [[ ${recommend_version} ]]; + then + system-docker pull ${recommend_version} + else + echo "pull recommend image failed" + return 1 + fi ;; auto) echo "upgrade.policy is 'auto'" - __report_activity - ros os upgrade -i $recommend_version -f + report_activity + if [[ ${recommend_version} ]]; + then + ros os upgrade -i ${recommend_version} -f + else + echo "execute ros os upgrade failed" + return 1 + fi ;; none) echo "upgrade.policy is 'none'" @@ -53,6 +66,12 @@ __upgrade_operate() { esac } -__read_policy +read_policy -__upgrade_operate \ No newline at end of file +n=0 +until [[ ${n} -ge 5 ]] +do + upgrade_operate && break + n=$[$n+1] + sleep 5 +done \ No newline at end of file