8 # ---------------------------------------------------------------------------
9 # Make sure we're running as the correct user
10 # ---------------------------------------------------------------------------
11 [ $(whoami) != 'opensrf' ] && echo 'Must run as user "opensrf"' && exit;
14 # NOTE: Eventually, there will be one OpenSRF config file format
15 # When this happens, we will only need a single OPT_CONFIG variable
19 echo "usage: $0 -d <pid_dir> -p <perl_config> -c <c_config> -a <action>";
21 echo "Actions include:"
22 echo -e "\tstart_router"
23 echo -e "\tstop_router"
24 echo -e "\trestart_router"
25 echo -e "\tstart_perl"
27 echo -e "\trestart_perl"
31 echo -e "\tstart_osrf"
33 echo -e "\trestart_osrf"
36 echo -e "\trestart_all"
39 echo " $0 -p bootstrap.conf -c opensrf_core.xml -a restart_all";
45 # ---------------------------------------------------------------------------
46 # Load the command line options and set the global vars
47 # ---------------------------------------------------------------------------
48 while getopts "p:c:a:d:h" flag; do
50 "a") OPT_ACTION="$OPTARG";;
51 "c") OPT_C_CONFIG="$OPTARG";;
52 "p") OPT_PERL_CONFIG="$OPTARG";;
53 "d") OPT_PID_DIR="$OPTARG";;
59 [ -z "$OPT_PID_DIR" ] && OPT_PID_DIR=/tmp;
60 [ -z "$OPT_ACTION" ] && usage;
62 PID_ROUTER="$OPT_PID_DIR/router.pid";
63 PID_OSRF_PERL="$OPT_PID_DIR/osrf_perl.pid";
64 PID_OSRF_C="$OPT_PID_DIR/osrf_c.pid";
67 # ---------------------------------------------------------------------------
68 # Utility code for checking the PID files
69 # ---------------------------------------------------------------------------
76 if [ $action == "start" ]; then
78 if [ -e $pidfile ]; then
80 echo "$item already started : $pid";
83 echo "Starting $item";
86 if [ $action == "stop" ]; then
88 if [ ! -e $pidfile ]; then
89 echo "$item not running";
94 echo "Stopping $item : $pid";
95 kill -s INT $pid 2> /dev/null;
97 kill -9 $pid 2> /dev/null;
106 # ---------------------------------------------------------------------------
107 # Start / Stop functions
108 # ---------------------------------------------------------------------------
111 function start_router {
112 do_action "start" $PID_ROUTER "OpenSRF Router";
113 opensrf_router $OPT_C_CONFIG router
114 pid=$(ps ax | grep "OpenSRF Router" | grep -v grep | awk '{print $1}')
115 echo $pid > $PID_ROUTER;
119 function stop_router {
120 do_action "stop" $PID_ROUTER "OpenSRF Router";
124 function start_perl {
125 do_action "start" $PID_OSRF_PERL "OpenSRF Perl";
126 perl -MOpenSRF::System="$OPT_PERL_CONFIG" -e 'OpenSRF::System->bootstrap()' &
128 echo $pid > $PID_OSRF_PERL;
134 do_action "stop" $PID_OSRF_PERL "OpenSRF Perl";
141 if [ "_$host" == "_" ]; then
142 host=$(perl -MNet::Domain=hostfqdn -e 'print hostfqdn()');
145 do_action "start" $PID_OSRF_C "OpenSRF C (host=$host)";
146 opensrf-c $host $OPT_C_CONFIG opensrf;
147 pid=$(ps ax | grep "OpenSRF System-C" | grep -v grep | awk '{print $1}')
148 echo $pid > "$PID_OSRF_C";
153 do_action "stop" $PID_OSRF_C "OpenSRF C";
154 killall -9 opensrf-c # hack for now to force kill all C services
161 # ---------------------------------------------------------------------------
162 # Do the requested action
163 # ---------------------------------------------------------------------------
165 "start_router") start_router;;
166 "stop_router") stop_router;;
167 "restart_router") stop_router; start_router;;
168 "start_perl") start_perl;;
169 "stop_perl") stop_perl;;
170 "restart_perl") stop_perl; start_perl;;
173 "restart_c") stop_c; start_c;;
174 "start_osrf") start_perl; start_c;;
175 "stop_osrf") stop_perl; stop_c;;
176 "restart_osrf") stop_perl; stop_c; start_perl; start_c;;
177 "stop_all") stop_c; stop_perl; stop_router;;
178 "start_all") start_router; start_perl; start_c;;
179 "restart_all") stop_c; stop_perl; stop_router; start_router; start_perl; start_c;;