Name change for the arvados-api-server and arvados-workbench packages - part 2.
[arvados-dev.git] / jenkins / run-deploy.sh
1 #!/bin/bash
2
3
4 read -rd "\000" helpmessage <<EOF
5 $(basename $0): Deploy Arvados to a cluster
6
7 Syntax:
8         $(basename $0) <identifier>
9
10 Options:
11
12   identifier             Arvados cluster name
13
14 EOF
15
16
17 IDENTIFIER=$1
18
19 if [[ "$IDENTIFIER" == '' ]]; then
20   echo >&2 "$helpmessage"
21   echo >&2
22   exit 1
23 fi
24
25 EXITCODE=0
26
27 COLUMNS=80
28
29 title () {
30   printf "\n%*s\n\n" $(((${#title}+$COLUMNS)/2)) "********** $1 **********"
31 }
32
33 echo $WORKSPACE
34
35 function run_puppet() {
36   node=$1
37   return_var=$2
38
39   TMP_FILE=`mktemp`
40   ssh -t -p2222 -o "StrictHostKeyChecking no" -o "ConnectTimeout 5" root@$node.$IDENTIFIER -C "/usr/bin/puppet agent -t" | tee $TMP_FILE
41
42   ECODE=$?
43   RESULT=$(cat $TMP_FILE)
44
45   if [[ "$ECODE" != "255" && ! ("$RESULT" =~ 'already in progress') && "$ECODE" != "2" && "$ECODE" != "0"  ]]; then
46     # Puppet exists 255 if the connection timed out. Just ignore that, it's possible that this node is
47     #   a compute node that was being shut down.
48     # Puppet exits 2 if there are changes. For real!
49     # Puppet prints 'Notice: Run of Puppet configuration client already in progress' if another puppet process
50     #   was already running
51     echo "ERROR updating $node.$IDENTIFIER: exit code $ECODE"
52   fi
53   rm -f $TMP_FILE
54   echo
55   eval "$return_var=$ECODE"
56 }
57
58 # Deploy API server
59 title "Deploying API server"
60
61 SUM_ECODE=0
62
63 # Install updated debian packages
64 title "Deploying updated arvados debian packages"
65
66 ssh -p2222 root@$IDENTIFIER.arvadosapi.com -C "apt-get update && apt-get -qqy install arvados-src python-arvados-fuse python-arvados-python-client arvados-api-server"
67
68 ECODE=$?
69 SUM_ECODE=$(($SUM_ECODE + $ECODE))
70
71 ssh -p2222 root@$IDENTIFIER.arvadosapi.com -C "/usr/local/bin/arvados-api-server-upgrade.sh"
72
73 ECODE=$?
74 SUM_ECODE=$(($SUM_ECODE + $ECODE))
75
76 if [[ "$SUM_ECODE" != "0" ]]; then
77   title "!!!!!! DEPLOYING DEBIAN PACKAGES FAILED !!!!!!"
78   EXITCODE=$(($EXITCODE + $SUM_ECODE))
79   exit $EXITCODE
80 fi
81
82 title "Deploying updated arvados debian packages complete"
83
84 # Install updated arvados gems
85 title "Deploying updated arvados gems"
86
87 ssh -p2222 root@$IDENTIFIER.arvadosapi.com -C "/usr/local/rvm/bin/rvm default do gem install arvados arvados-cli && /usr/local/rvm/bin/rvm default do gem clean arvados arvados-cli"
88
89 ECODE=$?
90
91 if [[ "$ECODE" != "0" ]]; then
92   title "!!!!!! DEPLOYING ARVADOS GEMS FAILED !!!!!!"
93   EXITCODE=$(($EXITCODE + $ECODE))
94   exit $EXITCODE
95 fi
96
97 title "Deploying updated arvados gems complete"
98 title "Deploying API server complete"
99
100 # Deploy Workbench
101 title "Deploying workbench"
102
103 # Install updated debian packages
104 title "Deploying updated arvados debian packages"
105
106 ssh -p2222 root@workbench.$IDENTIFIER.arvadosapi.com -C "apt-get update && apt-get -qqy install python-arvados-fuse python-arvados-python-client arvados-workbench"
107
108 ECODE=$?
109 SUM_ECODE=$(($SUM_ECODE + $ECODE))
110
111 ssh -p2222 root@workbench.$IDENTIFIER.arvadosapi.com -C "/usr/local/bin/arvados-workbench-upgrade.sh"
112
113 ECODE=$?
114 SUM_ECODE=$(($SUM_ECODE + $ECODE))
115
116 if [[ "$SUM_ECODE" != "0" ]]; then
117   title "!!!!!! DEPLOYING DEBIAN PACKAGES FAILED !!!!!!"
118   EXITCODE=$(($EXITCODE + $SUM_ECODE))
119   exit $EXITCODE
120 fi
121
122 title "Deploying updated arvados debian packages complete"
123
124 title "Deploying workbench complete"
125
126 # Update compute node(s)
127 title "Update compute node(s)"
128
129 # Get list of nodes that are up
130 COMPRESSED_NODE_LIST=`ssh -p2222 root@$IDENTIFIER -C "sinfo --long -p crypto -r -o "%N" -h"`
131
132 if [[ "$COMPRESSED_NODE_LIST" != '' ]]; then
133   COMPUTE_NODES=`ssh -p2222 root@$IDENTIFIER -C "scontrol show hostname $COMPRESSED_NODE_LIST"`
134
135   SUM_ECODE=0
136   for node in $COMPUTE_NODES; do
137     echo "Updating $node.$IDENTIFIER"
138     run_puppet $node ECODE
139     SUM_ECODE=$(($SUM_ECODE + $ECODE))
140   done
141
142   if [[ "$SUM_ECODE" != "0" ]]; then
143     title "!!!!!! Update compute node(s) FAILED !!!!!!"
144     EXITCODE=$(($EXITCODE + $SUM_ECODE))
145   fi
146 fi
147
148 title "Update compute node(s) complete"
149
150 title "Update shell"
151
152 run_puppet shell ECODE
153
154 if [[ "$ECODE" == "2" ]]; then
155   # Puppet exits '2' if there are changes. For real!
156   ECODE=0
157 fi
158
159 if [[ "$ECODE" != "0" ]]; then
160   title "!!!!!! Update shell FAILED !!!!!!"
161   EXITCODE=$(($EXITCODE + $ECODE))
162 fi
163
164 title "Update shell complete"
165
166 title "Update keep0"
167
168 run_puppet keep0 ECODE
169
170 if [[ "$ECODE" == "2" ]]; then
171   # Puppet exits '2' if there are changes. For real!
172   ECODE=0
173 fi
174
175 if [[ "$ECODE" != "0" ]]; then
176   title "!!!!!! Update keep0 FAILED !!!!!!"
177   EXITCODE=$(($EXITCODE + $ECODE))
178 fi
179
180 title "Update keep0 complete"
181
182 exit $EXITCODE