cc-2055: switch to init.d

-disable daemon from starting twice
This commit is contained in:
martin 2011-05-30 18:55:52 -04:00
parent b0befdff20
commit 5803635d50
7 changed files with 91 additions and 84 deletions

View file

@ -1,19 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
if os.geteuid() != 0:
print "Please run this as root."
sys.exit(1)
try:
print "Starting daemontool script pypo"
os.system("svc -u /etc/service/pypo")
print "Starting daemontool script pypo-liquidsoap"
os.system("svc -u /etc/service/pypo-liquidsoap")
except Exception, e:
print "exception:" + str(e)

View file

@ -1,42 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import subprocess
if os.geteuid() != 0:
print "Please run this as root."
sys.exit(1)
try:
print "Stopping daemontool script pypo..."
p1 = subprocess.Popen(["ps", "aux"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["awk", "/pypo-cli.py/ && !/awk/ {print $2}"], stdin=p1.stdout, stdout=subprocess.PIPE)
pypo_pid = p2.communicate()[0].strip(" \n\r\t")
if (len(pypo_pid) > 0):
os.system("svc -d /etc/service/pypo 1>/dev/null 2>&1")
os.system("svc -d /etc/service/pypo/log 1>/dev/null 2>&1")
print "Shutting down process id %s" % pypo_pid
print "Success."
else:
print "Not Running."
print "Stopping daemontool script pypo-liquidsoap..."
p1 = subprocess.Popen(["ps", "aux"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["awk", "/ls_script.liq/ && !/awk/ {print $2}"], stdin=p1.stdout, stdout=subprocess.PIPE)
liquidsoap_pid = p2.communicate()[0].strip(" \n\r\t")
if (len(liquidsoap_pid) > 0):
os.system("svc -d /etc/service/pypo-liquidsoap 1>/dev/null 2>&1")
os.system("svc -d /etc/service/pypo-liquidsoap/log 1>/dev/null 2>&1")
pids = liquidsoap_pid.split("\n")
for pid in pids:
os.system("kill -2 %s" % pid)
print "Shutting down process id %s" % liquidsoap_pid
print "Success."
else:
print "Not Running."
except Exception, e:
print "exception:" + str(e)

17
python_apps/pypo/airtime-pypo Executable file
View file

@ -0,0 +1,17 @@
#!/bin/sh
pypo_user="pypo"
# Location of pypo_cli.py Python script
pypo_path="/usr/lib/airtime/pypo/bin/"
api_client_path="/usr/lib/airtime/pypo/"
pypo_script="pypo-cli.py"
cd ${pypo_path}
exec 2>&1
export HOME="/var/tmp/airtime/pypo/"
export PYTHONPATH=${api_client_path}:$PYTHONPATH
# Note the -u when calling python! we need it to get unbuffered binary stdout and stderr
exec python -u ${pypo_path}${pypo_script}
# EOF

View file

@ -0,0 +1,51 @@
#!/bin/bash
USERID=pypo
GROUPID=pypo
ENABLE="false"
NAME=Airtime
ID=airtime
DAEMON=/usr/bin/airtime-pypo
PIDFILE=/var/run/$ID.pid
start () {
start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON
}
stop () {
# Send TERM after 5 seconds, wait at most 30 seconds.
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE
rm $PIDFILE
}
case "${1:-''}" in
'start')
# start commands here
echo -n "Starting $NAME: "
start
echo "Done."
;;
'stop')
# stop commands here
echo -n "Stopping $NAME: "
stop
echo "Done."
;;
'restart')
# restart commands here
echo -n "Restarting $NAME: "
stop
start
echo "Done."
;;
'status')
# status commands here
/usr/bin/airtime-check-system
;;
*) # no parameter specified
echo "Usage: $SELF start|stop|restart|status"
exit 1
;;
esac

View file

@ -10,8 +10,6 @@ exec 2>&1
cd /usr/lib/airtime/pypo/bin/scripts
export PYTHONPATH=${api_client_path}
#su ${ls_user} -c "${ls_path} ${ls_param}" 2>&1
setuidgid ${ls_user} ${ls_path} ${ls_param}
exec ${ls_path} ${ls_param}
# EOF

View file

@ -13,6 +13,5 @@ PYTHONPATH=${api_client_path}:$PYTHONPATH
export PYTHONPATH
# Note the -u when calling python! we need it to get unbuffered binary stdout and stderr
exec setuidgid ${pypo_user} \
python -u ${pypo_path}${pypo_script}
exec python -u ${pypo_path}${pypo_script}
# EOF

View file

@ -135,21 +135,35 @@ try:
os.system("chmod -R 755 "+config["bin_dir"])
os.system("chown -R pypo:pypo "+config["bin_dir"])
os.system("chown -R pypo:pypo "+config["cache_base_dir"])
"""
print "Creating symbolic links"
os.system("rm -f /usr/bin/airtime-playout-start")
os.system("ln -s "+config["bin_dir"]+"/bin/airtime-playout-start /usr/bin/")
os.system("rm -f /usr/bin/airtime-playout-stop")
os.system("ln -s "+config["bin_dir"]+"/bin/airtime-playout-stop /usr/bin/")
"""
print "Creating symbolic links"
os.system("rm -f /usr/bin/airtime-pypo")
os.system("ln -s "+config["bin_dir"]+"/bin/airtime-pypo /usr/bin/")
print "Installing pypo daemon"
shutil.copy(config["bin_dir"]+"/bin/airtime-pypo-init-d", "/etc/init.d/airtime-pypo")
"""
create_path("/etc/service/pypo")
create_path("/etc/service/pypo/log")
shutil.copy("%s/pypo-daemontools.sh"%current_script_dir, "/etc/service/pypo/run")
shutil.copy("%s/pypo-daemontools-logger.sh"%current_script_dir, "/etc/service/pypo/log/run")
os.system("chmod -R 755 /etc/service/pypo")
os.system("chown -R pypo:pypo /etc/service/pypo")
"""
"""
print "Installing liquidsoap daemon"
create_path("/etc/service/pypo-liquidsoap")
create_path("/etc/service/pypo-liquidsoap/log")
@ -157,26 +171,15 @@ try:
shutil.copy("%s/pypo-liquidsoap-daemontools-logger.sh"%current_script_dir, "/etc/service/pypo-liquidsoap/log/run")
os.system("chmod -R 755 /etc/service/pypo-liquidsoap")
os.system("chown -R pypo:pypo /etc/service/pypo-liquidsoap")
"""
print "Waiting for processes to start..."
time.sleep(5)
os.system("python /usr/bin/airtime-playout-start")
time.sleep(2)
os.system("service airtime-pypo start")
Popen("service airtime-pypo start".split(" "))
found = True
print "sleeping"
time.sleep(10)
p = Popen('svstat /etc/service/pypo', shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
output = p.stdout.read()
if (output.find("unable to open supervise/ok: file does not exist") >= 0):
found = False
print output
p = Popen('svstat /etc/service/pypo-liquidsoap', shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
output = p.stdout.read()
print output
if not found:
print "Pypo install has completed, but daemontools is not running, please make sure you have it installed and then reboot."
except Exception, e:
print "exception:" + str(e)
sys.exit(1)