Generalized a lot of launching logic into the saas launcher away from the hosted installation script: mm2.py.

This commit is contained in:
Rudi Grinberg 2012-11-15 14:49:55 -05:00
parent c43dbe42a8
commit 11a43eb891
2 changed files with 38 additions and 33 deletions

View File

@ -1,7 +1,11 @@
import os import os, sys
from media.monitor.exceptions import FailedToObtainLocale, \
FailedToSetLocale
from media.saas.thread import InstanceThread, user, apc from media.saas.thread import InstanceThread, user, apc
from media.monitor.log import Loggable from media.monitor.log import Loggable
import media.monitor.pure as mmp
from media.monitor.exceptions import CouldNotCreateIndexFile from media.monitor.exceptions import CouldNotCreateIndexFile
from media.monitor.toucher import ToucherThread from media.monitor.toucher import ToucherThread
from media.monitor.airtime import AirtimeNotifier, \ from media.monitor.airtime import AirtimeNotifier, \
@ -9,6 +13,7 @@ from media.monitor.airtime import AirtimeNotifier, \
from media.monitor.watchersyncer import WatchSyncer from media.monitor.watchersyncer import WatchSyncer
from media.monitor.eventdrainer import EventDrainer from media.monitor.eventdrainer import EventDrainer
from media.monitor.manager import Manager from media.monitor.manager import Manager
from media.saas.airtimeinstance import AirtimeInstance
class MM2(InstanceThread, Loggable): class MM2(InstanceThread, Loggable):
@ -73,3 +78,28 @@ class MM2(InstanceThread, Loggable):
apiclient.register_component('media-monitor') apiclient.register_component('media-monitor')
manager.loop() manager.loop()
def launch_instance(name, root, global_cfg, apc_cfg, log_cfg):
cfg = {
'api_client' : apc_cfg,
'media_monitor' : global_cfg,
'logging' : log_cfg,
}
ai = AirtimeInstance('name', 'root', cfg)
MM2(ai).start()
def setup_global(log):
""" setup unicode and other stuff """
log.info("Attempting to set the locale...")
try: mmp.configure_locale(mmp.get_system_locale())
except FailedToSetLocale as e:
log.info("Failed to set the locale...")
sys.exit(1)
except FailedToObtainLocale as e:
log.info("Failed to obtain the locale form the default path: \
'/etc/default/locale'")
sys.exit(1)
except Exception as e:
log.info("Failed to set the locale for unknown reason. \
Logging exception.")
log.info(str(e))

View File

@ -5,13 +5,10 @@ import logging
import logging.config import logging.config
from media.monitor.log import get_logger, setup_logging from media.monitor.log import get_logger, setup_logging
from media.monitor.exceptions import FailedToObtainLocale, \
FailedToSetLocale
from std_err_override import LogWriter from std_err_override import LogWriter
from media.saas.launcher import MM2 from media.saas.launcher import setup_global, launch_instance
from media.saas.airtimeinstance import AirtimeInstance from media.saas.airtimeinstance import AirtimeInstance
from media.monitor.config import MMConfig
import media.monitor.pure as mmp
def setup_logger(log_config, logpath): def setup_logger(log_config, logpath):
logging.config.fileConfig(log_config) logging.config.fileConfig(log_config)
@ -24,35 +21,13 @@ def setup_logger(log_config, logpath):
log = get_logger() log = get_logger()
return log return log
def setup_global(log):
""" setup unicode and other stuff """
log.info("Attempting to set the locale...")
try: mmp.configure_locale(mmp.get_system_locale())
except FailedToSetLocale as e:
log.info("Failed to set the locale...")
sys.exit(1)
except FailedToObtainLocale as e:
log.info("Failed to obtain the locale form the default path: \
'/etc/default/locale'")
sys.exit(1)
except Exception as e:
log.info("Failed to set the locale for unknown reason. \
Logging exception.")
log.info(str(e))
def main(global_config, api_client_config, log_config): def main(global_config, api_client_config, log_config):
cfg = { """ function to run hosted install """
'api_client' : api_client_config, mm_config = MMConfig(global_config)
'media_monitor' : global_config, log = setup_logger( log_config, mm_config['logpath'] )
'logging' : log_config,
}
ai = AirtimeInstance('hosted_install', '/', cfg)
log = setup_logger( log_config, ai.mm_config['logpath'] )
setup_global(log) setup_global(log)
run_instance(ai) launch_instance('hosted_install', '/', global_config, api_client_config,
log_config)
def run_instance(airtime_intance):
MM2(airtime_intance).start()
__doc__ = """ __doc__ = """
Usage: Usage: