Albert Santoni b8b913ff68 CC-5709: Airtime Analyzer
* Fixed daemonization stuff for upstart
* Adding missing unit test files
2014-04-07 16:19:44 -04:00

59 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python
"""Runs the airtime_analyzer application.
"""
import daemon
import argparse
import os
import airtime_analyzer.airtime_analyzer as aa
VERSION = "1.0"
DEFAULT_CONFIG_PATH = '/etc/airtime/airtime.conf'
def run():
'''Entry-point for this application'''
print "Airtime Analyzer " + VERSION
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--daemon", help="run as a daemon", action="store_true")
parser.add_argument("--debug", help="log full debugging output", action="store_true")
parser.add_argument("--rmq-config-file", help="specify a configuration file with RabbitMQ settings (default is /etc/airtime/airtime.conf)")
args = parser.parse_args()
check_if_media_monitor_is_running()
#Default config file path
config_path = DEFAULT_CONFIG_PATH
if args.rmq_config_file:
config_path = args.rmq_config_file
if args.daemon:
with daemon.DaemonContext():
aa.AirtimeAnalyzerServer(config_path=config_path, debug=args.debug)
else:
# Run without daemonizing
aa.AirtimeAnalyzerServer(config_path=config_path, debug=args.debug)
def check_if_media_monitor_is_running():
"""Ensure media_monitor isn't running before we start.
We do this because media_monitor will move newly uploaded
files into the library on us and screw up the operation of airtime_analyzer.
media_monitor is deprecated.
"""
pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
for pid in pids:
try:
process_name = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
if 'media_monitor.py' in process_name:
print "Error: This process conflicts with media_monitor, and media_monitor is running."
print " Please terminate the running media_monitor.py process and try again."
exit(1)
except IOError: # proc has already terminated
continue
run()