forked from OperationCode/operationcode_old_site
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrancher_update
More file actions
executable file
·87 lines (76 loc) · 2.57 KB
/
rancher_update
File metadata and controls
executable file
·87 lines (76 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env bash
# Boosted from:
# https://github.com/LittleBayDigital/little-builder/blob/master/bin/lib/_rancher.sh
# Thank you!
function upgrade_service() {
local environment=$1
local service=$2
local image=$3
ensureVar CATTLE_ACCESS_KEY
ensureVar CATTLE_SECRET_KEY
ensureVar RANCHER_API_URL
local inServiceStrategy=`curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \
-s \
-X GET \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
"${RANCHER_API_URL}/projects/${environment}/services/${service}/" | jq '.upgrade.inServiceStrategy'` &>/dev/null
local updatedServiceStrategy=`echo ${inServiceStrategy} | jq ".launchConfig.imageUuid=\"docker:${image}\""`
echo "sending update request"
curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \
-s \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d "{
\"inServiceStrategy\": ${updatedServiceStrategy}
}
}" \
"${RANCHER_API_URL}/projects/${environment}/services/${service}/?action=upgrade" &>/dev/null
}
function finish_upgrade() {
local environment=$1
local service=$2
echo "waiting for service to upgrade "
while true; do
local serviceState=`curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \
-X GET \
-s \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
"${RANCHER_API_URL}/projects/${environment}/services/${service}/" | jq '.state'`
case $serviceState in
"\"upgraded\"" )
echo "completing service upgrade"
curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \
-s \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{}' \
"${RANCHER_API_URL}/projects/${environment}/services/${service}/?action=finishupgrade" &>/dev/null
break ;;
"\"upgrading\"" )
echo -n "."
sleep 3
continue ;;
*)
die "unexpected upgrade state: $serviceState" ;;
esac
done
}
function ensureVar() {
local varName=$1
local testVal=''
eval 'testVal=$'$varName
[[ -n "$testVal" ]] || die "$varName must be set"
}
function die() {
echo $1
exit 1
}
ensureVar ENVIRONMENT_ID
ensureVar SERVICE_ID
ensureVar IMAGE
upgrade_service $ENVIRONMENT_ID $SERVICE_ID $IMAGE
finish_upgrade $ENVIRONMENT_ID $SERVICE_ID