12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # -*- 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)
|