def disable_plugin(self, plugin_name): if plugin_name not in self.plugins: log.info("Plugin %s is not enabled, no need to disable", plugin_name) return instance = self.plugins[plugin_name] instance.disable() component.deregister(instance) self.plugins.pop(plugin_name)
def shutdown_handler(signo, frame): import mirror.configmanager pidfile = mirror.configmanager.get_config_dir("mirrord.pid") if os.path.isfile(pidfile): os.remove(pidfile) log.info("Got signal %s, exiting...", signals[signo]) import sys scheduler = component.get("Scheduler") if scheduler is None: sys.exit(0) # We will waitpid() in stop_all_tasks(), # so unregister sigchld_handler here. signal.signal(signal.SIGCHLD, signal.SIG_DFL) scheduler.stop_all_tasks() if hasattr(scheduler, "buspid"): os.kill(scheduler.buspid, signal.SIGTERM) pid, status = os.waitpid(scheduler.buspid, 0) log.info("Killed mirror dbus with pid: %d", pid) event_manager = component.get("EventManager") while event_manager.plugin_thread and len(event_manager.plugin_thread.event_queue) > 0: time.sleep(0.1) component.deregister(event_manager) component.deregister(component.get("PluginManager")) # Deregister the scheduler, # this will call scheduler's stop(). # But scheduler's start() is called # directly, not by component's start(). component.deregister(scheduler) log.info("Bye bye... :)") sys.exit(0)
def shutdown_handler(signo, frame): import mirror.configmanager pidfile = mirror.configmanager.get_config_dir("mirrord.pid") if os.path.isfile(pidfile): os.remove(pidfile) log.info("Got signal %s, exiting...", signals[signo]) import sys scheduler = component.get("Scheduler") if scheduler is None: sys.exit(0) # We will waitpid() in stop_all_tasks(), # so unregister sigchld_handler here. signal.signal(signal.SIGCHLD, signal.SIG_DFL) scheduler.stop_all_tasks() if hasattr(scheduler, "buspid"): os.kill(scheduler.buspid, signal.SIGTERM) pid, status = os.waitpid(scheduler.buspid, 0) log.info("Killed mirror dbus with pid: %d", pid) event_manager = component.get("EventManager") while (event_manager.plugin_thread and len(event_manager.plugin_thread.event_queue) > 0): time.sleep(0.1) component.deregister(event_manager) component.deregister(component.get("PluginManager")) # Deregister the scheduler, # this will call scheduler's stop(). # But scheduler's start() is called # directly, not by component's start(). component.deregister(scheduler) log.info("Bye bye... :)") sys.exit(0)