From 75c2a4a18bcc9fe1344eb3537bfc56e5ca285528 Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Fri, 19 Dec 2014 13:49:33 -0500 Subject: [PATCH] More work on media-monitor and pypo install process --- airtime_mvc/build/airtime.example.conf | 4 - installer/install | 68 ++++++++------- .../media-monitor/airtime-media-monitor | 30 ------- .../airtime-media-monitor-init-d | 23 ----- python_apps/media-monitor/setup.py | 2 +- python_apps/pypo/bin/airtime-liquidsoap | 14 +-- python_apps/pypo/bin/airtime-playout | 16 +--- python_apps/pypo/pypo/airtime-liquidsoap | 48 ----------- python_apps/pypo/pypo/airtime-playout | 31 ------- python_apps/pypo/pypo/pypo.cfg | 85 ------------------- 10 files changed, 40 insertions(+), 281 deletions(-) delete mode 100755 python_apps/media-monitor/media-monitor/airtime-media-monitor delete mode 100755 python_apps/pypo/pypo/airtime-liquidsoap delete mode 100755 python_apps/pypo/pypo/airtime-playout delete mode 100644 python_apps/pypo/pypo/pypo.cfg diff --git a/airtime_mvc/build/airtime.example.conf b/airtime_mvc/build/airtime.example.conf index 5ca59909c..157d7140f 100644 --- a/airtime_mvc/build/airtime.example.conf +++ b/airtime_mvc/build/airtime.example.conf @@ -189,9 +189,6 @@ index_path = '/var/tmp/airtime/media-monitor/last_index' # cache_base_dir: The pypo base cache directory # The default is '/var/tmp/airtime/pypo/' # -# bin_dir: The directory containing pypo binaries -# The default is '/usr/lib/airtime/pypo' -# # log_base_dir: The base directory for Airtime log files # The default is '/var/log/airtime' # @@ -255,7 +252,6 @@ file_dir = '/var/tmp/airtime/pypo/files/' tmp_dir = '/var/tmp/airtime/pypo/tmp/' # ------- Setup directories - !! Don't include trailing slash !! ------- cache_base_dir = '/var/tmp/airtime/pypo' -bin_dir = '/usr/lib/airtime/pypo' log_base_dir = '/var/log/airtime' pypo_log_dir = '/var/log/airtime/pypo' liquidsoap_log_dir = '/var/log/airtime/pypo-liquidsoap' diff --git a/installer/install b/installer/install index ae64b954f..d1a7d497f 100755 --- a/installer/install +++ b/installer/install @@ -246,27 +246,27 @@ if [ "$apache" = "f" -a ${_i} -eq 1 ]; then fi fi +if [ "$in_place" = "t" ]; then + verbose "\n * Setting current Airtime directory as web root..." + web_root=${AIRTIMEROOT}/airtime_mvc/public + chmod -R 755 ${AIRTIMEROOT} +elif [ -n "$web_root" ]; then + verbose "\n * Creating Apache web root directory..." + mkdir -p ${web_root}/airtime/public/ + cp -R ${AIRTIMEROOT}/airtime_mvc/* ${web_root}/airtime/ + chmod -R 755 ${web_root} +else + verbose "\n * Creating default Apache web root directory /usr/share/airtime/..." + web_root="/usr/share" + mkdir -p ${web_root}/airtime/public/ + cp -R ${AIRTIMEROOT}/airtime_mvc/* ${web_root}/airtime/ +fi + if [ "$apache" = "t" ]; then loud "\n-----------------------------------------------------" loud " * Installing Apache * " loud "-----------------------------------------------------" - if [ "$in_place" = "t" ]; then - verbose "\n * Setting current Airtime directory as web root..." - web_root=${AIRTIMEROOT}/airtime_mvc/public - chmod -R 755 ${AIRTIMEROOT} - elif [ -n "$web_root" ]; then - verbose "\n * Creating Apache web root directory..." - mkdir -p ${web_root}/airtime/public/ - cp -R ${AIRTIMEROOT}/airtime_mvc/* ${web_root}/airtime/ - chmod -R 755 ${web_root} - else - verbose "\n * Creating default Apache web root directory /usr/share/airtime/..." - web_root="/usr/share" - mkdir -p ${web_root}/airtime/public/ - cp -R ${AIRTIMEROOT}/airtime_mvc/* ${web_root}/airtime/ - fi - loudCmd "apt-get -y --force-yes install apache2 libapache2-mod-php5" set +e apache2 -v | grep "2\.4" > /dev/null @@ -317,16 +317,8 @@ loud "\n-----------------------------------------------------" loud " * Installing Airtime Services * " loud "-----------------------------------------------------" -verbose "\n * Installing liquidsoap, python, and virtualenv..." -loudCmd "apt-get -y --force-yes install liquidsoap python python-virtualenv" -verbose "...Done" - -# DS, 19/12/14 -- I don't really like this script... should we rewrite it, -# or maybe see if we can get rid of virtualenv entirely? - -verbose "\n * Activating Airtime virtualenv..." -loudCmd "$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh" -. /usr/lib/airtime/airtime_virtualenv/bin/activate +verbose "\n * Installing liquidsoap and python..." +loudCmd "apt-get -y --force-yes install liquidsoap python" verbose "...Done" verbose "\n * Creating /usr/lib/airtime..." @@ -353,7 +345,13 @@ cp -R ${AIRTIMEROOT}/python_apps/media-monitor/media-monitor2 /usr/lib/airtime/m verbose "...Done" verbose "\n * Installing media-monitor..." -python ${AIRTIMEROOT}/python_apps/media-monitor/setup.py install +if [ -z web_root ]; then + python ${web_root}/python_apps/media-monitor/setup.py develop +elif [ "$in_place" = "t" ]; then + python ${AIRTIMEROOT}/python_apps/media-monitor/setup.py develop +else + python /usr/share/airtime/python_apps/media-monitor/setup.py develop +fi verbose "...Done" verbose "\n * Copying pypo files..." @@ -362,18 +360,24 @@ cp -R ${AIRTIMEROOT}/python_apps/pypo/pypo /usr/lib/airtime/pypo/bin/ verbose "...Done" verbose "\n * Installing pypo..." -python ${AIRTIMEROOT}/python_apps/pypo/setup.py install +if [ -z web_root ]; then + python ${web_root}/python_apps/pypo/setup.py develop +elif [ "$in_place" = "t" ]; then + python ${AIRTIMEROOT}/python_apps/pypo/setup.py develop +else + python /usr/share/airtime/python_apps/pypo/setup.py develop +fi verbose "...Done" -verbose "\n * Creating init files..." -sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/media-monitor/airtime-media-monitor-init-d > /etc/init.d/airtime-media-monitor +verbose "\n * Creating sudoers files..." +# sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/media-monitor/airtime-media-monitor-init-d > /etc/init.d/airtime-media-monitor touch /etc/sudoers.d/airtime-media-monitor_${web_user} echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-media-monitor, \ /sbin/stop airtime-media-monitor, \ /sbin/restart airtime-media-monitor, \ /sbin/status airtime-media-monitor" > /etc/sudoers.d/airtime-media-monitor_${web_user} -sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/pypo/bin/airtime-playout-init-d > /etc/init.d/airtime-playout +# sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/pypo/bin/airtime-playout-init-d > /etc/init.d/airtime-playout touch /etc/sudoers.d/airtime-playout_${web_user} echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-playout, \ /sbin/stop airtime-playout, \ @@ -381,7 +385,7 @@ echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-playout, \ /sbin/status airtime-playout" > /etc/sudoers.d/airtime-playout_${web_user} ln -sf /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap -sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/pypo/bin/airtime-liquidsoap-init-d > /etc/init.d/airtime-liquidsoap +# sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/pypo/bin/airtime-liquidsoap-init-d > /etc/init.d/airtime-liquidsoap touch /etc/sudoers.d/airtime-liquidsoap_${web_user} echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-liquidsoap, \ /sbin/stop airtime-liquidsoap, \ diff --git a/python_apps/media-monitor/media-monitor/airtime-media-monitor b/python_apps/media-monitor/media-monitor/airtime-media-monitor deleted file mode 100755 index 5997e8db4..000000000 --- a/python_apps/media-monitor/media-monitor/airtime-media-monitor +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# Location of pypo_cli.py Python script - -virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" -. ${virtualenv_bin}activate - -media_monitor_path="/usr/lib/airtime/media-monitor/" -media_monitor_script="media_monitor.py" - -api_client_path="/usr/lib/airtime/:/usr/lib/airtime/media-monitor/mm2/" - -cd ${media_monitor_path} - -exec 2>&1 - -set +e -cat /etc/default/locale | grep -i "LANG=.*UTF-\?8" -set -e -if [ "$?" != "0" ]; then - echo "non UTF-8 default locale found in /etc/default/locale." > /var/log/airtime/media-monitor/error.log - exit 1 -fi - -export PYTHONPATH=${api_client_path} -export LC_ALL=`cat /etc/default/locale | grep "LANG=" | cut -d= -f2 | tr -d "\n\""` - -exec python ${media_monitor_path}${media_monitor_script} > /var/log/airtime/media-monitor/py-interpreter.log 2>&1 - -# EOF diff --git a/python_apps/media-monitor/media-monitor/airtime-media-monitor-init-d b/python_apps/media-monitor/media-monitor/airtime-media-monitor-init-d index b5636e70b..e74d08baf 100755 --- a/python_apps/media-monitor/media-monitor/airtime-media-monitor-init-d +++ b/python_apps/media-monitor/media-monitor/airtime-media-monitor-init-d @@ -27,17 +27,6 @@ stop () { rm -f $PIDFILE } -start_with_monit() { - start - monit monitor airtime-media-monitor >/dev/null 2>&1 -} - -stop_with_monit() { - monit unmonitor airtime-media-monitor >/dev/null 2>&1 - stop -} - - case "${1:-''}" in 'start') # start commands here @@ -58,18 +47,6 @@ case "${1:-''}" in start echo "Done." ;; - 'start-with-monit') - # restart commands here - echo -n "Starting $NAME: " - start_with_monit - echo "Done." - ;; - 'stop-with-monit') - # restart commands here - echo -n "Stopping $NAME: " - stop_with_monit - echo "Done." - ;; 'status') # status commands here /usr/bin/airtime-check-system diff --git a/python_apps/media-monitor/setup.py b/python_apps/media-monitor/setup.py index 11874ccba..c35c36131 100644 --- a/python_apps/media-monitor/setup.py +++ b/python_apps/media-monitor/setup.py @@ -40,7 +40,7 @@ setup(name='airtime-media-monitor', zip_safe=False, data_files=data_files) -# Reload the initctl config so that playout services works +# Reload the initctl config so that the media-monitor service works if data_files: print "Reloading initctl configuration" call(['initctl', 'reload-configuration']) diff --git a/python_apps/pypo/bin/airtime-liquidsoap b/python_apps/pypo/bin/airtime-liquidsoap index def0aaae1..6b5d1470d 100755 --- a/python_apps/pypo/bin/airtime-liquidsoap +++ b/python_apps/pypo/bin/airtime-liquidsoap @@ -23,25 +23,15 @@ do done -virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" -. ${virtualenv_bin}activate - export HOME="/var/tmp/airtime/pypo/" -api_client_path="/usr/lib/airtime/" -if [ $debug = "t" ]; then +if [ "$debug" = "t" ]; then ls_path="/usr/bin/airtime-liquidsoap --verbose -f" else ls_path="/usr/bin/airtime-liquidsoap --verbose -f -d" fi ls_param="/usr/lib/airtime/pypo/bin/liquidsoap_scripts/ls_script.liq" -export PYTHONPATH=${api_client_path} - -SCRIPT=`readlink -f $0` -# Absolute directory this script is in -SCRIPTPATH=`dirname $SCRIPT` - -cd $SCRIPTPATH/liquidsoap_scripts +cd /usr/lib/airtime/pypo/bin/liquidsoap_scripts python generate_liquidsoap_cfg.py exec ${ls_path} ${ls_param} 2>&1 diff --git a/python_apps/pypo/bin/airtime-playout b/python_apps/pypo/bin/airtime-playout index fca8a412d..f537a6b85 100755 --- a/python_apps/pypo/bin/airtime-playout +++ b/python_apps/pypo/bin/airtime-playout @@ -1,17 +1,5 @@ #!/bin/bash -virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" -. ${virtualenv_bin}activate - -# Absolute path to this script -SCRIPT=`readlink -f $0` -# Absolute directory this script is in -pypo_path=`dirname $SCRIPT` - -api_client_path="/usr/lib/airtime/" -pypo_script="pypocli.py" -cd ${pypo_path} - set +e cat /etc/default/locale | grep -i "LANG=.*UTF-\?8" > /dev/null set -e @@ -21,11 +9,9 @@ if [ "$?" != "0" ]; then fi export HOME="/var/tmp/airtime/pypo/" -export PYTHONPATH=${api_client_path}:$PYTHONPATH export LC_ALL=`cat /etc/default/locale | grep "LANG=" | cut -d= -f2 | tr -d "\n\""` export TERM=xterm - -exec python ${pypo_path}/${pypo_script} > /var/log/airtime/pypo/py-interpreter.log 2>&1 +exec python /usr/lib/airtime/pypo/bin/pypocli.py > /var/log/airtime/pypo/py-interpreter.log 2>&1 # EOF diff --git a/python_apps/pypo/pypo/airtime-liquidsoap b/python_apps/pypo/pypo/airtime-liquidsoap deleted file mode 100755 index def0aaae1..000000000 --- a/python_apps/pypo/pypo/airtime-liquidsoap +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -e - -debug="f" - -showhelp () { - echo "Usage: airtime-liquidsoap [options] ---help|-h Displays usage information. ---debug|-d Print error messages to console" -} - -set -- $(getopt -l help,debug "hd" "$@") -while [ $# -gt 0 ] -do - case "$1" in - (-h|--help) showhelp; exit 0;; - (-d|--debug) debug="t";; - - (--) shift; break;; - (-*) echo "$0: error - unrecognized option $1" 1>&2; exit 1;; - (*) break;; - esac - shift -done - - -virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" -. ${virtualenv_bin}activate - -export HOME="/var/tmp/airtime/pypo/" -api_client_path="/usr/lib/airtime/" -if [ $debug = "t" ]; then - ls_path="/usr/bin/airtime-liquidsoap --verbose -f" -else - ls_path="/usr/bin/airtime-liquidsoap --verbose -f -d" -fi -ls_param="/usr/lib/airtime/pypo/bin/liquidsoap_scripts/ls_script.liq" - -export PYTHONPATH=${api_client_path} - -SCRIPT=`readlink -f $0` -# Absolute directory this script is in -SCRIPTPATH=`dirname $SCRIPT` - -cd $SCRIPTPATH/liquidsoap_scripts -python generate_liquidsoap_cfg.py - -exec ${ls_path} ${ls_param} 2>&1 -# EOF diff --git a/python_apps/pypo/pypo/airtime-playout b/python_apps/pypo/pypo/airtime-playout deleted file mode 100755 index 5521c91ed..000000000 --- a/python_apps/pypo/pypo/airtime-playout +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" -. ${virtualenv_bin}activate - -# Absolute path to this script -SCRIPT=`readlink -f $0` -# Absolute directory this script is in -pypo_path=`dirname $SCRIPT` - -api_client_path="/usr/lib/airtime/" -pypo_script="pypocli.py" -cd ${pypo_path} - -set +e -cat /etc/default/locale | grep -i "LANG=.*UTF-\?8" -set -e -if [ "$?" != "0" ]; then - echo "non UTF-8 default locale found in /etc/default/locale." > /var/log/airtime/pypo/error.log - exit 1 -fi - -export HOME="/var/tmp/airtime/pypo/" -export PYTHONPATH=${api_client_path}:$PYTHONPATH -export LC_ALL=`cat /etc/default/locale | grep "LANG=" | cut -d= -f2 | tr -d "\n\""` -export TERM=xterm - - -exec python ${pypo_path}/${pypo_script} > /var/log/airtime/pypo/py-interpreter.log 2>&1 - -# EOF diff --git a/python_apps/pypo/pypo/pypo.cfg b/python_apps/pypo/pypo/pypo.cfg deleted file mode 100644 index 9ffc390e4..000000000 --- a/python_apps/pypo/pypo/pypo.cfg +++ /dev/null @@ -1,85 +0,0 @@ -############################################ -# pypo - configuration # -############################################ - -# Set the type of client you are using. -# Currently supported types: -# 1) "obp" = Open Broadcast Platform -# 2) "airtime" -# -api_client = "airtime" - -############################################ -# Cache Directories # -# *include* trailing slash !! # -############################################ -cache_dir = '/var/tmp/airtime/pypo/cache/' -file_dir = '/var/tmp/airtime/pypo/files/' -tmp_dir = '/var/tmp/airtime/pypo/tmp/' - -############################################ -# Setup Directories # -# Do *not* include trailing slash !! # -############################################ -cache_base_dir = '/var/tmp/airtime/pypo' -bin_dir = '/usr/lib/airtime/pypo' -log_base_dir = '/var/log/airtime' -pypo_log_dir = '/var/log/airtime/pypo' -liquidsoap_log_dir = '/var/log/airtime/pypo-liquidsoap' - -############################################ -# Liquidsoap settings # -############################################ -ls_host = '127.0.0.1' -ls_port = '1234' - -############################################ -# RabbitMQ settings # -############################################ -rabbitmq_host = 'localhost' -rabbitmq_user = 'guest' -rabbitmq_password = 'guest' -rabbitmq_vhost = '/' - -############################################ -# pypo preferences # -############################################ - -# Poll interval in seconds. -# -# This will rarely need to be changed because any schedule changes are -# automatically sent to pypo immediately. -# -# This is how often the poll script downloads new schedules and files from the -# server in the event that no changes are made to the schedule. -# -poll_interval = 3600 # in seconds. - - -# Push interval in seconds. -# -# This is how often the push script checks whether it has something new to -# push to liquidsoap. -# -# It's hard to imagine a situation where this should be more than 1 second. -# -push_interval = 1 # in seconds - -# 'pre' or 'otf'. 'pre' cues while playlist preparation -# while 'otf' (on the fly) cues while loading into ls -# (needs the post_processor patch) -cue_style = 'pre' - -############################################ -# Recorded Audio settings # -############################################ -record_bitrate = 256 -record_samplerate = 44100 -record_channels = 2 -record_sample_size = 16 - -#can be either ogg|mp3, mp3 recording requires installation of the package "lame" -record_file_type = 'ogg' - -# base path to store recordered shows at -base_recorded_files = '/var/tmp/airtime/show-recorder/'