-
Notifications
You must be signed in to change notification settings - Fork 445
/
Copy pathstart_development_backend
executable file
·170 lines (156 loc) · 5.96 KB
/
start_development_backend
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/bin/bash
trap clean_up SIGHUP SIGINT SIGTERM
#function to help with the usage
function _print_syntax() {
me=`basename "$0"`
echo "Usage: $me [-d <dir> -l <dir> -w <num> -r <server>]"
echo -e "\t-d <dir>\tDirectory of source code. If not provided /vagrant ist used"
echo -e "\t-l <dir>\tDirectory where the logfiles should be put. If not set STDERR and STDOUT will be printed to console"
echo -e "\t-h <string>\tSet hostname of server. (default: backend)"
}
#reset OPTIND
OPTIND=1
#preset GIT_HOME
GIT_HOME="/obs"
#preset HOST
export DEVHOST="backend"
#get options and check if there is a space in the dir arguments
while getopts "l:d:h:?" opt; do
case "$opt" in
l)
REDIR_LOG=$OPTARG
if [[ "$REDIR_LOG" =~ [[:space:]] ]]; then
echo "Directory may not contain whitespaces"
exit
fi
;;
d)
GIT_HOME=$OPTARG
if [[ "$GIT_HOME" =~ [[:space:]] ]]; then
echo "Directory may not contain whitespaces"
exit
fi
;;
h)
export DEVHOST=$OPTARG
if [[ "$DEVHOST" =~ [[:space:]] ]]; then
echo "Hostname may not contain whitespaces"
exit
fi
;;
\?)
_print_syntax
exit 0
;;
esac
done
#REDIR_LOG points to the directory where the logfiles should be created. If the directory does not
#exist it will be created. APPEND_ARR[*] is filled with the output redirection for each service.
if [ -n "$REDIR_LOG" ]; then
if [ ! -d "$REDIR_LOG" ]; then
echo "$REDIR_LOG does not exist. Will try to create it"
mkdir -p "$REDIR_LOG" || { echo "Failure in creating directory:"; print_error; exit; }
fi
APPEND_ARR[0]=">$REDIR_LOG/bs_srcserver.log 2>&1"
APPEND_ARR[1]=">$REDIR_LOG/bs_repserver.log 2>&1"
APPEND_ARR[2]=">$REDIR_LOG/bs_sched_i586.log 2>&1"
APPEND_ARR[3]=">$REDIR_LOG/bs_sched_x86_64.log 2>&1"
APPEND_ARR[4]=">$REDIR_LOG/bs_dispatch.log 2>&1"
APPEND_ARR[5]=">$REDIR_LOG/bs_publish.log 2>&1"
APPEND_ARR[6]=">$REDIR_LOG/bs_service.log 2>&1"
APPEND_ARR[7]=">$REDIR_LOG/bs_signer.log 2>&1"
APPEND_ARR[8]=">$REDIR_LOG/signd.log 2>&1"
APPEND_ARR[9]=">$REDIR_LOG/bs_servicedispatch.log 2>&1"
APPEND_ARR[10]=">$REDIR_LOG/bs_clouduploadserver.log 2>&1"
APPEND_ARR[11]=">$REDIR_LOG/bs_clouduploadworker.log 2>&1"
fi
#check if GIT_HOME exists. If not it does not make any sense to continue.
if [ ! -d "$GIT_HOME" ]; then
echo "There seems to be something wrong. Directory $GIT_HOME not found."
echo "Please check if you are pointing to the right directory."
exit 1
fi
#create BSConfig.pm and change hostname to localhost
if [ ! -f $GIT_HOME/src/backend/BSConfig.pm ]; then
cp $GIT_HOME/src/backend/BSConfig.pm.template $GIT_HOME/src/backend/BSConfig.pm
fi
perl -pi -e 's/our \$bsserviceuser.*/our \$bsserviceuser="obsrun";/' $GIT_HOME/src/backend/BSConfig.pm
perl -pi -e 's/my \$hostname.*/my \$hostname=\"$ENV{'DEVHOST'}\";/' $GIT_HOME/src/backend/BSConfig.pm
perl -pi -e 's/\$ipaccess/\$removed_by_start_development_backend /' $GIT_HOME/src/backend/BSConfig.pm
perl -pi -e 's/.*our \$gpg_standard_key.*/our \$gpg_standard_key="\/etc\/ourkeyfile.asc";/' $GIT_HOME/src/backend/BSConfig.pm
perl -pi -e 's/.*our \$sign .*/our \$sign="\/usr\/bin\/sign";/' $GIT_HOME/src/backend/BSConfig.pm
#start backend services (the minimum needed) with two arch(i586/x86_64) schedulers and one worker
echo "Starting bs_srcserver"
COMMAND_STRING="$GIT_HOME/src/backend/bs_srcserver ${APPEND_ARR[0]} &"
eval $COMMAND_STRING
sleep 4
echo "Starting bs_repserver"
COMMAND_STRING="$GIT_HOME/src/backend/bs_repserver ${APPEND_ARR[1]} &"
eval $COMMAND_STRING
sleep 2
echo "Starting bs_sched i586"
COMMAND_STRING="$GIT_HOME/src/backend/bs_sched i586 ${APPEND_ARR[2]} &"
eval $COMMAND_STRING
echo "Starting bs_sched x86_64"
COMMAND_STRING="$GIT_HOME/src/backend/bs_sched x86_64 ${APPEND_ARR[3]} &"
eval $COMMAND_STRING
echo "Starting bs_dispatch"
COMMAND_STRING="$GIT_HOME/src/backend/bs_dispatch ${APPEND_ARR[4]} &"
eval $COMMAND_STRING
echo "Starting bs_publish"
COMMAND_STRING="$GIT_HOME/src/backend/bs_publish ${APPEND_ARR[5]} &"
eval $COMMAND_STRING
echo "Starting bs_service"
COMMAND_STRING="$GIT_HOME/src/backend/bs_service ${APPEND_ARR[6]} &"
eval $COMMAND_STRING
echo "Starting bs_signer"
COMMAND_STRING="$GIT_HOME/src/backend/bs_signer ${APPEND_ARR[7]} &"
eval $COMMAND_STRING
echo "Starting signd"
COMMAND_STRING="/usr/sbin/signd ${APPEND_ARR[8]} &"
eval $COMMAND_STRING
echo "Starting bs_servicedispatch"
COMMAND_STRING="$GIT_HOME/src/backend/bs_servicedispatch ${APPEND_ARR[9]} &"
eval $COMMAND_STRING
echo "Starting bs_clouduploadserver"
COMMAND_STRING="$GIT_HOME/src/backend/bs_clouduploadserver ${APPEND_ARR[10]} &"
eval $COMMAND_STRING
echo "Starting bs_clouduploadworker"
COMMAND_STRING="$GIT_HOME/src/backend/bs_clouduploadworker ${APPEND_ARR[11]} &"
eval $COMMAND_STRING
#Cleanup function to terminate all backend services
function clean_up {
echo -e "\ncleaning up and exit"
echo -e "Terminating Services"
"$GIT_HOME"/src/backend/bs_srcserver --stop
echo -e "Terminated SRC Server"
"$GIT_HOME"/src/backend/bs_repserver --stop
echo -e "Terminated REP Server"
"$GIT_HOME"/src/backend/bs_sched --stop i586
"$GIT_HOME"/src/backend/bs_sched --stop x86_64
echo -e "Terminated Schedulers"
"$GIT_HOME"/src/backend/bs_dispatch --stop
echo -e "Terminated Dispatcher"
"$GIT_HOME"/src/backend/bs_publish --stop
echo -e "Terminated Publisher"
"$GIT_HOME"/src/backend/bs_service --stop
echo -e "Terminated Publisher"
"$GIT_HOME"/src/backend/bs_signer --stop
echo -e "Terminated Signer"
killall signd
gpgconf --kill gpg-agent
echo -e "Terminated Signd"
"$GIT_HOME"/src/backend/bs_servicedispatch --stop
echo -e "Terminated service dispatch"
"$GIT_HOME"/src/backend/bs_clouduploadserver --stop
echo -e "Terminated cloud upload server"
"$GIT_HOME"/src/backend/bs_clouduploadworker --stop
echo -e "Terminated cloud upload worker"
exit;
}
if [ -n "$REDIR_LOG" ]; then
echo "Logfiles will be written to $REDIR_LOG"
echo "Each service has it's own logfile"
fi
echo "If you want to terminate the backend, just hit Ctrl-C"
wait