def run(self): # todo: 1) do all ansible calls through subprocess # 2) move to Python 3 and asyncIO all in one thread + executors # ... -> eliminate multiprocessing here, # ... possible to use simple logging, with redis handler self.log.info("Creating VM Spawner, HealthChecker, Terminator") self.spawner = Spawner(self.opts) self.checker = HealthChecker(self.opts) self.terminator = Terminator(self.opts) self.vm_manager = VmManager( opts=self.opts, logger=self.log, ) self.log.info("Starting up VM EventHandler") self.event_handler = EventHandler(self.opts, vmm=self.vm_manager, terminator=self.terminator) self.event_handler.post_init() self.event_handler.start() self.log.info("Starting up VM Master") self.vm_master = VmMaster(self.opts, vmm=self.vm_manager, spawner=self.spawner, checker=self.checker) self.vm_master.start() setproctitle("Copr VMM base process")
def setup_method(self, method): self.vm_spawn_min_interval = 30 self.opts = Munch( redis_host="127.0.0.1", redis_db=9, redis_port=7777, ssh=Munch(transport="ssh"), build_groups_count=2, build_groups={ 0: { "name": "base", "archs": ["i386", "x86_64"], "max_vm_total": 5, "max_spawn_processes": 3, "vm_spawn_min_interval": self.vm_spawn_min_interval, "vm_dirty_terminating_timeout": 120, "vm_health_check_period": 10, "vm_health_check_max_time": 60, "vm_terminating_timeout": 300, }, 1: { "name": "arm", "archs": ["armV7"], "vm_spawn_min_interval": self.vm_spawn_min_interval, "vm_dirty_terminating_timeout": 120, "vm_health_check_period": 10, "vm_health_check_max_time": 60, "vm_terminating_timeout": 300, } }, fedmsg_enabled=False, sleeptime=0.1, vm_cycle_timeout=10, ) self.queue = Queue() self.vm_ip = "127.0.0.1" self.vm_name = "localhost" self.group = 0 self.username = "******" self.rc = get_redis_connection(self.opts) self.ps = None self.log_msg_list = [] self.callback = TestCallback() # checker = HealthChecker(self.opts, self.callback) self.checker = MagicMock() self.spawner = MagicMock() self.terminator = MagicMock() self.mc_logger = MagicMock() self.vmm = VmManager(self.opts, logger=self.mc_logger) self.vmm.post_init() self.event_handler = MagicMock() self.vm_master = VmMaster( self.opts, self.vmm, self.spawner, self.checker, ) self.vm_master.event_handler = MagicMock() self.pid = 12345 self.vm_ip = "127.0.0.1" self.vm_name = "build 12345"