# -*- coding: utf-8 -*- import re from media.saas.launcher import setup_logger, setup_global, MM2 from media.saas.airtimeinstance import AirtimeInstance from os.path import isdir, join, abspath, exists, dirname from os import listdir def list_dirs(d): return (x for x in listdir(d) if isdir(join(d,x))) def filter_instance(d): return bool(re.match('.+\d+$',d)) def get_name(p): return re.match('.+/(\d+)$',p).group(1) def filter_instances(l): return (x for x in l if filter_instance(x)) def autoscan_instances(main_cfg): root = main_cfg['instance_root'] instances = [] for instance_machine in list_dirs(root): instance_machine = join(root, instance_machine) for instance_root in filter_instances(list_dirs(instance_machine)): full_path = abspath(join(instance_machine,instance_root)) ai = AirtimeInstance.root_make(get_name(full_path), full_path) instances.append(ai) return instances def verify_exists(p): if not exists(p): raise Exception("%s must exist" % p) def main(main_cfg): log_config, log_path = main_cfg['log_config'], main_cfg['log_path'] verify_exists(log_config) log = setup_logger(log_config, log_path) setup_global(log) for instance in autoscan_instances(main_cfg): print("Launching instance: %s" % str(instance)) #MM2(instance).start() print("Launched all instances") if __name__ == '__main__': pwd = dirname(__file__) default = { 'log_path' : join(pwd, 'test.log'), # config for log 'log_config' : join(pwd, 'configs/logging.cfg'), # where to log # root dir of all instances 'instance_root' : '/mnt/airtimepro/instances' } main(default)