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 test_post_init(self): test_eh = EventHandler(self.opts, self.vmm, self.terminator) assert "on_health_check_success" not in test_eh.lua_scripts test_eh.post_init() assert test_eh.lua_scripts["on_health_check_success"] assert isinstance(test_eh.lua_scripts["on_health_check_success"], Script)
def setup_method(self, method): self.test_root_path = tempfile.mkdtemp() self.terminate_pb_path = "{}/terminate.yml".format(self.test_root_path) self.opts = Munch( redis_db=9, redis_port=7777, ssh=Munch(transport="ssh"), build_groups={ 0: { "terminate_playbook": self.terminate_pb_path, "name": "base", "archs": ["i386", "x86_64"], "vm_max_check_fails": 2, } }, fedmsg_enabled=False, sleeptime=0.1, do_sign=True, timeout=1800, # destdir=self.tmp_dir_path, results_baseurl="/tmp", ) self.rc = get_redis_connection(self.opts) self.checker = MagicMock() self.spawner = MagicMock() self.terminator = MagicMock() self.queue = Queue() self.vmm = MagicMock() self.vmm.rc = self.rc self.grl_patcher = mock.patch("{}.get_redis_logger".format(MODULE_REF)) self.grl_patcher.start() self.eh = EventHandler(self.opts, self.vmm, self.terminator) self.eh.post_init() self.vm_ip = "127.0.0.1" self.vm_name = "localhost" self.group = 0 self.username = "******" self.msg = { "vm_ip": self.vm_ip, "vm_name": self.vm_name, "group": self.group } self.stage = 0