blob: 6fb1476f97b991259a3c76370b039d8295500dc3 [file] [log] [blame]
mbligh88e12a12009-03-09 21:48:33 +00001#!/bin/sh
2
3# steps to take following a release of new code to keep things working.
4#
5# the following scripts may be created to customize behavior:
6#
7# site_utils/site_sync_code
8#
9# - pull code from a source repository
10#
11# site_utils/site_install_cli
12#
13# - install or update client code (new "atest" build?)
14#
15# site_utils/site_restart_apache
16#
17# - suid helper or similar?
18#
19# site_utils/site_restart_final
20#
21# - any finishing touches you may require.
22
23# ---
24
25INIT_SCR=/etc/init.d/autotest
26
27# ---
28
29print_status() {
30 STATUS=$1
31
32 echo "--- $STATUS"
33}
34
35fatal() {
36 echo "*** Fatal error. Giving up."
37 exit 1
38}
39
40# ---
41
42MY_DIR=`dirname $0`
43
44if (! test -f $INIT_SCR)
45then
46 echo "Error: $INIT_SCR must be installed."
47 exit 1
48fi
49
50BECOME_USER=`grep ^BECOME_USER= $INIT_SCR`
51
52if (test "$BECOME_USER" == "")
53then
54 echo "Error: BECOME_USER not defined in $INIT_SCR"
55 exit 1
56fi
57
58BASE_DIR=`grep ^BASE_DIR= $INIT_SCR`
59
60if (test "$BASE_DIR" == "")
61then
62 echo "Error: BASE_DIR not defined in $INIT_SCR"
63 exit 1
64fi
65
66eval $BECOME_USER
67eval $BASE_DIR
68
69# --- stop autotest persistent code
70
71print_status "Stopping autotest persistent code"
72$INIT_SCR stop
73
74# --- sync code (site-specific)
75
76if (test -x $BASE_DIR/site_utils/site_sync_code)
77then
78 print_status "Syncing code"
79 su $BECOME_USER -c $BASE_DIR/site_utils/site_sync_code || exit 1
80fi
81
mblighcc1b9992009-03-25 19:28:06 +000082# --- run database migrations
83
84# - AFE
85
86print_status "Running AFE migrations"
87( cd $BASE_DIR/frontend &&
88 su $BECOME_USER -c "python ../database/migrate.py \
89 --database=AUTOTEST_WEB safesync"
90 su $BECOME_USER -c "python manage.py syncdb --noinput"
91 su $BECOME_USER -c "python manage.py syncdb --noinput"
92)
93
94# - TKO
95
96print_status "Running TKO migrations"
97( cd $BASE_DIR/tko &&
98 su $BECOME_USER -c "python ../database/migrate.py \
99 --database=TKO safesync"
100)
101
102# - SITE_DB
103
104print_status "Running site_db migrations"
105( cd $BASE_DIR/site_db &&
106 su $BECOME_USER -c "python ../database/migrate.py \
107 --database=TKO safesync"
108)
109
mbligh7e2d9522009-04-08 21:15:35 +0000110# - Django syncdb
111
112print_status "Running syncdb on Django interface"
113# Due to the way Django creates permissions objects, we sometimes need
114# to run syncdb twice.
115for i in 1 2; do
116 ( cd $BASE_DIR/frontend &&
117 su $BECOME_USER -c "python manage.py syncdb --noinput"
118 )
119done
120
mbligh88e12a12009-03-09 21:48:33 +0000121# --- compile AfeClient
122
123print_status "Compiling AfeClient"
124( cd $BASE_DIR/frontend/client &&
125 su $BECOME_USER -c ./AfeClient-compile ) || fatal
126
127# --- compile TkoClient
128
129print_status "Compiling TkoClient"
130( cd $BASE_DIR/frontend/client &&
131 su $BECOME_USER -c ./TkoClient-compile ) || fatal
132
133# --- fix gwt permissions
134
135print_status "Fixing permissions"
136( cd $BASE_DIR/frontend/client &&
137 find | xargs chmod o+r &&
138 find -type d | xargs chmod o+rx ) || fatal
139
140# --- update cli repository (site-specific)
141
142if (test -x $BASE_DIR/site_utils/site_install_cli)
143then
144 print_status "Updating cli repository"
145 su $BECOME_USER -c $BASE_DIR/site_utils/site_install_cli || fatal
146fi
147
148# --- restart autotest persistent code
149
150print_status "Restarting autotest persistent code"
151$INIT_SCR start || fatal
152
153# --- possibly restart Apache (site-specific)
154
155if (test -x $BASE_DIR/site_utils/site_restart_apache)
156then
157 print_status "Restarting Apache"
158 su $BECOME_USER -c $BASE_DIR/site_utils/site_restart_apache || fatal
159fi
160
161# --- do any site-specific finalization
162
163if (test -x $BASE_DIR/site_utils/site_restart_final)
164then
165 print_status "Finalizing release"
166 su $BECOME_USER -c $BASE_DIR/site_utils/site_restart_final || fatal
167fi