baby.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # -*- coding: utf-8 -*-
  2. import re
  3. from media.saas.launcher import setup_logger, setup_global, MM2
  4. from media.saas.airtimeinstance import AirtimeInstance
  5. from os.path import isdir, join, abspath, exists, dirname
  6. from os import listdir
  7. def list_dirs(d): return (x for x in listdir(d) if isdir(join(d,x)))
  8. def filter_instance(d): return bool(re.match('.+\d+$',d))
  9. def get_name(p): return re.match('.+/(\d+)$',p).group(1)
  10. def filter_instances(l): return (x for x in l if filter_instance(x))
  11. def autoscan_instances(main_cfg):
  12. root = main_cfg['instance_root']
  13. instances = []
  14. for instance_machine in list_dirs(root):
  15. instance_machine = join(root, instance_machine)
  16. for instance_root in filter_instances(list_dirs(instance_machine)):
  17. full_path = abspath(join(instance_machine,instance_root))
  18. ai = AirtimeInstance.root_make(get_name(full_path), full_path)
  19. instances.append(ai)
  20. return instances
  21. def verify_exists(p):
  22. if not exists(p): raise Exception("%s must exist" % p)
  23. def main(main_cfg):
  24. log_config, log_path = main_cfg['log_config'], main_cfg['log_path']
  25. verify_exists(log_config)
  26. log = setup_logger(log_config, log_path)
  27. setup_global(log)
  28. for instance in autoscan_instances(main_cfg):
  29. print("Launching instance: %s" % str(instance))
  30. #MM2(instance).start()
  31. print("Launched all instances")
  32. if __name__ == '__main__':
  33. pwd = dirname(__file__)
  34. default = {
  35. 'log_path' : join(pwd, 'test.log'), # config for log
  36. 'log_config' : join(pwd, 'configs/logging.cfg'), # where to log
  37. # root dir of all instances
  38. 'instance_root' : '/mnt/airtimepro/instances'
  39. }
  40. main(default)