def main(): logger = effective_config = None try: logger, effective_config = parse_options() # We now have the effective_config except OptionError as e: print(str(e), file=sys.stderr) exit(1, status="virt-who can't be started: %s" % str(e)) lock = PIDLock(PIDFILE) if lock.is_locked(): msg = "virt-who seems to be already running. If not, remove %s" % \ PIDFILE print(msg, file=sys.stderr) exit(1, status=msg) if not effective_config[VW_GLOBAL].is_valid(): message = "Required section 'global' is invalid:\n" message += "\n".join([ msg for (level, msg) in effective_config[VW_GLOBAL].validation_messages ]) message += "\n" exit(1, "virt-who can't be started: %s" % message) valid_virt_sections = [(name, section) for (name, section) in effective_config.virt_sections() if section.is_valid()] if not valid_virt_sections: err = "virt-who can't be started: no valid configuration found" logger.error(err) exit(1, err) global executor has_error = False try: executor = Executor(logger, effective_config) except (InvalidKeyFile, InvalidPasswordFormat) as e: logger.error(str(e)) exit(1, "virt-who can't be started: %s" % str(e)) if len(executor.dest_to_source_mapper.dests) == 0: if has_error: err = "virt-who can't be started: no valid destination found" logger.error(err) exit(1, err) if len(effective_config[VW_GLOBAL]['configs']) > 0: # When config file is provided using -c or --config, then other config # files in /etc/virt-who.d are ignored. When it is not possible to read # any configuration file, then virt-who should be terminated cli_config_file_readable = False for file_name in effective_config[VW_GLOBAL]['configs']: if os.path.isfile(file_name): cli_config_file_readable = True if cli_config_file_readable is False: err = 'No valid configuration file provided using -c/--config' logger.error(err) exit(1, "virt-who can't be started: %s" % str(err)) for name, config in executor.dest_to_source_mapper.configs: logger.info('Using configuration "%s" ("%s" mode)', name, config['type']) logger.info("Using reporter_id='%s'", effective_config[VW_GLOBAL]['reporter_id']) log.closeLogger(logger) with lock: signal.signal(signal.SIGHUP, reload) signal.signal(signal.SIGTERM, atexit_fn) executor.logger = logger = log.getLogger(name='main', queue=True) sd_notify("READY=1\nMAINPID=%d" % os.getpid()) while True: try: return _main(executor) except ReloadRequest: logger.info("Reloading") continue except ExitRequest as e: exit(e.code, status=e.message)
def main(): logger = options = None try: logger, options = parseOptions() except OptionError as e: print >>sys.stderr, str(e) exit(1, status="virt-who can't be started: %s" % str(e)) lock = PIDLock(PIDFILE) if lock.is_locked(): msg = "virt-who seems to be already running. If not, remove %s" % PIDFILE print >>sys.stderr, msg exit(1, status=msg) global executor try: executor = Executor(logger, options) except (InvalidKeyFile, InvalidPasswordFormat) as e: logger.error(str(e)) exit(1, "virt-who can't be started: %s" % str(e)) if options.virtType is not None: config = Config("env/cmdline", options.virtType, executor.configManager._defaults, **options) try: config.checkOptions(logger) except InvalidOption as e: err = "virt-who can't be started: %s" % str(e) logger.error(err) exit(1, err) executor.configManager.addConfig(config) has_error = False for conffile in options.configs: try: executor.configManager.readFile(conffile) except InvalidPasswordFormat as e: err = "virt-who can't be started: %s" % str(e) logger.error(err) exit(1, err) except Exception as e: logger.error('Config file "%s" skipped because of an error: %s', conffile, str(e)) has_error = True if len(executor.configManager.configs) == 0: if has_error: err = "virt-who can't be started: no valid configuration found" logger.error(err) exit(1, err) # In order to keep compatibility with older releases of virt-who, # fallback to using libvirt as default virt backend logger.info("No configurations found, using libvirt as backend") executor.configManager.addConfig(Config("env/cmdline", "libvirt")) for config in executor.configManager.configs: if config.name is None: logger.info('Using commandline or sysconfig configuration ("%s" mode)', config.type) else: logger.info('Using configuration "%s" ("%s" mode)', config.name, config.type) logger.info("Using reporter_id='%s'", options.reporter_id) log.closeLogger(logger) if options.background: locker = lambda: daemon.DaemonContext(pidfile=lock) # flake8: noqa else: locker = lambda: lock # flake8: noqa with locker(): signal.signal(signal.SIGHUP, reload) signal.signal(signal.SIGTERM, atexit_fn) executor.logger = logger = log.getLogger(name='main', config=None, queue=True) sd_notify("READY=1\nMAINPID=%d" % os.getpid()) while True: try: return _main(executor) except ReloadRequest: logger.info("Reloading") continue
def main(): logger = effective_config = None try: logger, effective_config = parse_options() # We now have the effective_config except OptionError as e: print(str(e), file=sys.stderr) exit(1, status="virt-who can't be started: %s" % str(e)) lock = PIDLock(PIDFILE) if lock.is_locked(): msg = "virt-who seems to be already running. If not, remove %s" % \ PIDFILE print(msg, file=sys.stderr) exit(1, status=msg) if not effective_config[VW_GLOBAL].is_valid(): message = "Required section 'global' is invalid:\n" message += "\n".join([msg for (level, msg) in effective_config[VW_GLOBAL].validation_messages]) message += "\n" exit(1, "virt-who can't be started: %s" % message) valid_virt_sections = [(name, section) for (name, section) in effective_config.virt_sections() if section.is_valid()] if not valid_virt_sections: err = "virt-who can't be started: no valid configuration found" logger.error(err) exit(1, err) global executor has_error = False try: executor = Executor(logger, effective_config) except (InvalidKeyFile, InvalidPasswordFormat) as e: logger.error(str(e)) exit(1, "virt-who can't be started: %s" % str(e)) if len(executor.dest_to_source_mapper.dests) == 0: if has_error: err = "virt-who can't be started: no valid destination found" logger.error(err) exit(1, err) for name, config in executor.dest_to_source_mapper.configs: logger.info('Using configuration "%s" ("%s" mode)', name, config['type']) logger.info("Using reporter_id='%s'", effective_config[VW_GLOBAL]['reporter_id']) log.closeLogger(logger) with lock: signal.signal(signal.SIGHUP, reload) signal.signal(signal.SIGTERM, atexit_fn) executor.logger = logger = log.getLogger(name='main', queue=True) sd_notify("READY=1\nMAINPID=%d" % os.getpid()) while True: try: return _main(executor) except ReloadRequest: logger.info("Reloading") continue except ExitRequest as e: exit(e.code, status=e.message)
def main(): logger = options = None try: logger, options = parse_options() # We now have the effective_config except OptionError as e: print(str(e), file=sys.stderr) exit(1, status="virt-who can't be started: %s" % str(e)) lock = PIDLock(PIDFILE) if lock.is_locked(): msg = "virt-who seems to be already running. If not, remove %s" % \ PIDFILE print(msg, file=sys.stderr) exit(1, status=msg) if not options[VW_GLOBAL].is_valid(): message = "Required section 'global' is invalid:\n" message += "\n".join([msg for (level, msg) in options[VW_GLOBAL].validation_messages]) message += "\n" exit(1, "virt-who can't be started: %s" % message) valid_virt_sections = [(name, section) for (name, section) in options.virt_sections() if section.is_valid()] if not valid_virt_sections: err = "virt-who can't be started: no valid configuration found" logger.error(err) exit(1, err) global executor has_error = False try: executor = Executor(logger, options) except (InvalidKeyFile, InvalidPasswordFormat) as e: logger.error(str(e)) exit(1, "virt-who can't be started: %s" % str(e)) if len(executor.dest_to_source_mapper.dests) == 0: if has_error: err = "virt-who can't be started: no valid destination found" logger.error(err) exit(1, err) for name, config in executor.dest_to_source_mapper.configs: logger.info('Using configuration "%s" ("%s" mode)', name, config['type']) logger.info("Using reporter_id='%s'", options[VW_GLOBAL]['reporter_id']) log.closeLogger(logger) with lock: signal.signal(signal.SIGHUP, reload) signal.signal(signal.SIGTERM, atexit_fn) executor.logger = logger = log.getLogger(name='main', queue=True) sd_notify("READY=1\nMAINPID=%d" % os.getpid()) while True: try: return _main(executor) except ReloadRequest: logger.info("Reloading") continue except ExitRequest as e: exit(e.code, status=e.message)