More work on monitless installer
This commit is contained in:
parent
ad4b61e89f
commit
8a2c155289
5 changed files with 30 additions and 29 deletions
|
@ -183,17 +183,17 @@ class RequestProvider(object):
|
||||||
def __init__(self, cfg):
|
def __init__(self, cfg):
|
||||||
self.config = cfg
|
self.config = cfg
|
||||||
self.requests = {}
|
self.requests = {}
|
||||||
if self.config["base_dir"].startswith("/"):
|
if self.config["general"]["base_dir"].startswith("/"):
|
||||||
self.config["base_dir"] = self.config["base_dir"][1:]
|
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
|
||||||
self.url = ApcUrl("http://%s:%s/%s%s/%s" \
|
self.url = ApcUrl("http://%s:%s/%s%s/%s" \
|
||||||
% (self.config["host"], str(self.config["base_port"]),
|
% (self.config["general"]["base_url"], str(self.config["general"]["base_port"]),
|
||||||
self.config["base_dir"], self.config["api_base"],
|
self.config["general"]["base_dir"], self.config["api_base"],
|
||||||
'%%action%%'))
|
'%%action%%'))
|
||||||
# Now we must discover the possible actions
|
# Now we must discover the possible actions
|
||||||
actions = dict( (k,v) for k,v in cfg.iteritems() if '%%api_key%%' in v)
|
actions = dict( (k,v) for k,v in cfg.iteritems() if '%%api_key%%' in v)
|
||||||
for action_name, action_value in actions.iteritems():
|
for action_name, action_value in actions.iteritems():
|
||||||
new_url = self.url.params(action=action_value).params(
|
new_url = self.url.params(action=action_value).params(
|
||||||
api_key=self.config['api_key'])
|
api_key=self.config["general"]['api_key'])
|
||||||
self.requests[action_name] = ApiRequest(action_name, new_url)
|
self.requests[action_name] = ApiRequest(action_name, new_url)
|
||||||
|
|
||||||
def available_requests(self) : return self.requests.keys()
|
def available_requests(self) : return self.requests.keys()
|
||||||
|
@ -321,13 +321,13 @@ class AirtimeApiClient(object):
|
||||||
def construct_url(self,config_action_key):
|
def construct_url(self,config_action_key):
|
||||||
"""Constructs the base url for every request"""
|
"""Constructs the base url for every request"""
|
||||||
# TODO : Make other methods in this class use this this method.
|
# TODO : Make other methods in this class use this this method.
|
||||||
if self.config["base_dir"].startswith("/"):
|
if self.config["general"]["base_dir"].startswith("/"):
|
||||||
self.config["base_dir"] = self.config["base_dir"][1:]
|
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
|
||||||
url = "http://%s:%s/%s%s/%s" % \
|
url = "http://%s:%s/%s%s/%s" % \
|
||||||
(self.config["host"], str(self.config["base_port"]),
|
(self.config["general"]["base_url"], str(self.config["general"]["base_port"]),
|
||||||
self.config["base_dir"], self.config["api_base"],
|
self.config["general"]["base_dir"], self.config["api_base"],
|
||||||
self.config[config_action_key])
|
self.config[config_action_key])
|
||||||
url = url.replace("%%api_key%%", self.config["api_key"])
|
url = url.replace("%%api_key%%", self.config["general"]["api_key"])
|
||||||
return url
|
return url
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -45,7 +45,7 @@ class AirtimeNotifier(Notifier):
|
||||||
try:
|
try:
|
||||||
schedule_exchange = Exchange("airtime-media-monitor", "direct", durable=True, auto_delete=True)
|
schedule_exchange = Exchange("airtime-media-monitor", "direct", durable=True, auto_delete=True)
|
||||||
schedule_queue = Queue("media-monitor", exchange=schedule_exchange, key="filesystem")
|
schedule_queue = Queue("media-monitor", exchange=schedule_exchange, key="filesystem")
|
||||||
self.connection = BrokerConnection(self.config.cfg["rabbitmq_host"], self.config.cfg["rabbitmq_user"], self.config.cfg["rabbitmq_password"], self.config.cfg["rabbitmq_vhost"])
|
self.connection = BrokerConnection(self.config.cfg["rabbitmq"]["rabbitmq_host"], self.config.cfg["rabbitmq"]["rabbitmq_user"], self.config.cfg["rabbitmq"]["rabbitmq_password"], self.config.cfg["rabbitmq"]["rabbitmq_vhost"])
|
||||||
channel = self.connection.channel()
|
channel = self.connection.channel()
|
||||||
consumer = Consumer(channel, schedule_queue)
|
consumer = Consumer(channel, schedule_queue)
|
||||||
consumer.register_callback(self.handle_message)
|
consumer.register_callback(self.handle_message)
|
||||||
|
|
|
@ -38,9 +38,9 @@ class AirtimeNotifier(Loggable):
|
||||||
durable=True, auto_delete=True)
|
durable=True, auto_delete=True)
|
||||||
schedule_queue = Queue("media-monitor", exchange=schedule_exchange,
|
schedule_queue = Queue("media-monitor", exchange=schedule_exchange,
|
||||||
key="filesystem")
|
key="filesystem")
|
||||||
self.connection = BrokerConnection(self.cfg["rabbitmq_host"],
|
self.connection = BrokerConnection(self.cfg["rabbitmq"]["rabbitmq_host"],
|
||||||
self.cfg["rabbitmq_user"], self.cfg["rabbitmq_password"],
|
self.cfg["rabbitmq"]["rabbitmq_user"], self.cfg["rabbitmq"]["rabbitmq_password"],
|
||||||
self.cfg["rabbitmq_vhost"])
|
self.cfg["rabbitmq"]["rabbitmq_vhost"])
|
||||||
channel = self.connection.channel()
|
channel = self.connection.channel()
|
||||||
|
|
||||||
self.simple_queue = SimpleQueue(channel, schedule_queue)
|
self.simple_queue = SimpleQueue(channel, schedule_queue)
|
||||||
|
|
|
@ -23,10 +23,10 @@ class MM2(InstanceThread, Loggable):
|
||||||
def index_create(self, index_create_attempt=False):
|
def index_create(self, index_create_attempt=False):
|
||||||
config = user().mm_config
|
config = user().mm_config
|
||||||
if not index_create_attempt:
|
if not index_create_attempt:
|
||||||
if not os.path.exists(config['index_path']):
|
if not os.path.exists(config['media-monitor']['index_path']):
|
||||||
self.logger.info("Attempting to create index file:...")
|
self.logger.info("Attempting to create index file:...")
|
||||||
try:
|
try:
|
||||||
with open(config['index_path'], 'w') as f: f.write(" ")
|
with open(config['media-monitor']['index_path'], 'w') as f: f.write(" ")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.info("Failed to create index file with exception: %s" \
|
self.logger.info("Failed to create index file with exception: %s" \
|
||||||
% str(e))
|
% str(e))
|
||||||
|
@ -36,8 +36,8 @@ class MM2(InstanceThread, Loggable):
|
||||||
else:
|
else:
|
||||||
self.logger.info("Already tried to create index. Will not try again ")
|
self.logger.info("Already tried to create index. Will not try again ")
|
||||||
|
|
||||||
if not os.path.exists(config['index_path']):
|
if not os.path.exists(config['media-monitor']['index_path']):
|
||||||
raise CouldNotCreateIndexFile(config['index_path'])
|
raise CouldNotCreateIndexFile(config['media-monitor']['index_path'])
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.index_create()
|
self.index_create()
|
||||||
|
@ -45,8 +45,8 @@ class MM2(InstanceThread, Loggable):
|
||||||
apiclient = apc()
|
apiclient = apc()
|
||||||
config = user().mm_config
|
config = user().mm_config
|
||||||
WatchSyncer(signal=getsig('watch'),
|
WatchSyncer(signal=getsig('watch'),
|
||||||
chunking_number=config['chunking_number'],
|
chunking_number=config['media-monitor']['chunking_number'],
|
||||||
timeout=config['request_max_wait'])
|
timeout=config['media-monitor']['request_max_wait'])
|
||||||
airtime_receiver = AirtimeMessageReceiver(config,manager)
|
airtime_receiver = AirtimeMessageReceiver(config,manager)
|
||||||
airtime_notifier = AirtimeNotifier(config, airtime_receiver)
|
airtime_notifier = AirtimeNotifier(config, airtime_receiver)
|
||||||
|
|
||||||
|
@ -76,14 +76,14 @@ class MM2(InstanceThread, Loggable):
|
||||||
else: self.logger.info("Failed to add watch on %s" % str(watch_dir))
|
else: self.logger.info("Failed to add watch on %s" % str(watch_dir))
|
||||||
|
|
||||||
EventDrainer(airtime_notifier,
|
EventDrainer(airtime_notifier,
|
||||||
interval=float(config['rmq_event_wait']))
|
interval=float(config['media-monitor']['rmq_event_wait']))
|
||||||
|
|
||||||
# Launch the toucher that updates the last time when the script was
|
# Launch the toucher that updates the last time when the script was
|
||||||
# ran every n seconds.
|
# ran every n seconds.
|
||||||
# TODO : verify that this does not interfere with bootstrapping because the
|
# TODO : verify that this does not interfere with bootstrapping because the
|
||||||
# toucher thread might update the last_ran variable too fast
|
# toucher thread might update the last_ran variable too fast
|
||||||
ToucherThread(path=user().touch_file_path(),
|
ToucherThread(path=user().touch_file_path(),
|
||||||
interval=int(config['touch_interval']))
|
interval=int(config['media-monitor']['touch_interval']))
|
||||||
|
|
||||||
success = False
|
success = False
|
||||||
while not success:
|
while not success:
|
||||||
|
|
|
@ -137,7 +137,7 @@ configure_locale()
|
||||||
|
|
||||||
# loading config file
|
# loading config file
|
||||||
try:
|
try:
|
||||||
config = ConfigObj('/etc/airtime/pypo.cfg')
|
config = ConfigObj('/etc/airtime/airtime.conf')
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger.error('Error loading config file: %s', e)
|
logger.error('Error loading config file: %s', e)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -241,8 +241,8 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
telnet_lock = Lock()
|
telnet_lock = Lock()
|
||||||
|
|
||||||
ls_host = config['ls_host']
|
ls_host = config['pypo']['ls_host']
|
||||||
ls_port = config['ls_port']
|
ls_port = config['pypo']['ls_port']
|
||||||
|
|
||||||
liquidsoap_startup_test()
|
liquidsoap_startup_test()
|
||||||
|
|
||||||
|
@ -269,19 +269,20 @@ if __name__ == '__main__':
|
||||||
"""
|
"""
|
||||||
media_q = Queue()
|
media_q = Queue()
|
||||||
|
|
||||||
pmh = PypoMessageHandler(pypoFetch_q, recorder_q, config)
|
# Pass only the configuration sections needed; PypoMessageHandler only needs rabbitmq settings
|
||||||
|
pmh = PypoMessageHandler(pypoFetch_q, recorder_q, config['rabbitmq'])
|
||||||
pmh.daemon = True
|
pmh.daemon = True
|
||||||
pmh.start()
|
pmh.start()
|
||||||
|
|
||||||
pfile = PypoFile(media_q, config)
|
pfile = PypoFile(media_q, config['pypo'])
|
||||||
pfile.daemon = True
|
pfile.daemon = True
|
||||||
pfile.start()
|
pfile.start()
|
||||||
|
|
||||||
pf = PypoFetch(pypoFetch_q, pypoPush_q, media_q, telnet_lock, pypo_liquidsoap, config)
|
pf = PypoFetch(pypoFetch_q, pypoPush_q, media_q, telnet_lock, pypo_liquidsoap, config['pypo'])
|
||||||
pf.daemon = True
|
pf.daemon = True
|
||||||
pf.start()
|
pf.start()
|
||||||
|
|
||||||
pp = PypoPush(pypoPush_q, telnet_lock, pypo_liquidsoap, config)
|
pp = PypoPush(pypoPush_q, telnet_lock, pypo_liquidsoap, config['pypo'])
|
||||||
pp.daemon = True
|
pp.daemon = True
|
||||||
pp.start()
|
pp.start()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue