def reload(self): """ Reload and re-apply configuration settings Existing child processes are sent a SIGHUP signal and will exit after completing existing requests. New child processes, which will have the updated configuration, are spawned. This allows preventing interruption to the service. """ def _has_changed(old, new, param): old = old.get(param) new = getattr(new, param) return (new != old) old_conf = utils.stash_conf_values() has_changed = functools.partial(_has_changed, old_conf, CONF) CONF.reload_config_files() os.killpg(self.pgid, signal.SIGHUP) self.stale_children = self.children self.children = set() # Ensure any logging config changes are picked up logging.setup(CONF, 'searchlight') config.set_config_defaults() self.configure(old_conf, has_changed) self.start_wsgi()
def main(): CONF.register_cli_opt(command_opt) if len(sys.argv) < 2: script_name = sys.argv[0] print("%s command action [<args>]" % script_name) print(_("Available commands:")) for command in COMMANDS: print(_("\t%s") % command) sys.exit(2) try: logging.register_options(CONF) cfg_files = cfg.find_config_files(project='searchlight', prog='searchlight') config.parse_args(default_config_files=cfg_files) config.set_config_defaults() logging.setup(CONF, 'searchlight') func_kwargs = {} for k in CONF.command.action_kwargs: v = getattr(CONF.command, 'action_kwarg_' + k) if v is None: continue if isinstance(v, six.string_types): v = encodeutils.safe_decode(v) func_kwargs[k] = v func_args = [ encodeutils.safe_decode(arg) for arg in CONF.command.action_args ] return CONF.command.action_fn(*func_args, **func_kwargs) except RuntimeError as e: sys.exit("ERROR: %s" % e)
def main(): CONF.register_cli_opt(command_opt) if len(sys.argv) < 2: script_name = sys.argv[0] print("%s command action [<args>]" % script_name) print(_("Available commands:")) for command in COMMANDS: print(_("\t%s") % command) sys.exit(2) try: logging.register_options(CONF) cfg_files = cfg.find_config_files(project='searchlight', prog='searchlight') config.parse_args(default_config_files=cfg_files) config.set_config_defaults() logging.setup(CONF, 'searchlight') func_kwargs = {} for k in CONF.command.action_kwargs: v = getattr(CONF.command, 'action_kwarg_' + k) if v is None: continue if isinstance(v, six.string_types): v = encodeutils.safe_decode(v) func_kwargs[k] = v func_args = [encodeutils.safe_decode(arg) for arg in CONF.command.action_args] return CONF.command.action_fn(*func_args, **func_kwargs) except RuntimeError as e: sys.exit("ERROR: %s" % e)
def main(): try: config.parse_args() config.set_config_defaults() wsgi.set_eventlet_hub() logging.setup(CONF, 'searchlight') utils.register_plugin_opts() # Fail fast if service policy files aren't found service_policies.check_policy_files() if CONF.profiler.enabled: _notifier = osprofiler.notifier.create("Messaging", notifier.messaging, {}, notifier.get_transport(), "searchlight", "search", CONF.api.bind_host) osprofiler.notifier.set(_notifier) else: osprofiler.web.disable() server = wsgi.Server(workers=CONF.api.workers) server.start(config.load_paste_app('searchlight'), default_port=9393) server.wait() except KNOWN_EXCEPTIONS as e: fail(e)
def configure_wsgi(): config.parse_args() config.set_config_defaults() logging.setup(CONF, 'searchlight') utils.register_plugin_opts() # Fail fast if service policy files aren't found service_policies.check_policy_files() if CONF.profiler.enabled: _notifier = osprofiler.notifier.create("Messaging", notifier.messaging, {}, notifier.get_transport(), "searchlight", "search", CONF.api.bind_host) osprofiler.notifier.set(_notifier) else: osprofiler.web.disable()
def configure_wsgi(): # NOTE(hberaud): Call reset to ensure the ConfigOpts object doesn't # already contain registered options if the app is reloaded. CONF.reset() config.parse_args() config.set_config_defaults() logging.setup(CONF, 'searchlight') gmr.TextGuruMeditation.setup_autorun(version) utils.register_plugin_opts() # Fail fast if service policy files aren't found service_policies.check_policy_files() if CONF.profiler.enabled: _notifier = osprofiler.notifier.create("Messaging", notifier.messaging, {}, notifier.get_transport(), "searchlight", "search", CONF.api.bind_host) osprofiler.notifier.set(_notifier) else: osprofiler.web.disable()
def main(): try: config.parse_args() config.set_config_defaults() wsgi.set_eventlet_hub() logging.setup(CONF, 'searchlight') utils.register_plugin_opts() if CONF.profiler.enabled: _notifier = osprofiler.notifier.create("Messaging", notifier.messaging, {}, notifier.get_transport(), "searchlight", "search", CONF.api.bind_host) osprofiler.notifier.set(_notifier) else: osprofiler.web.disable() server = wsgi.Server(workers=CONF.api.workers) server.start(config.load_paste_app('searchlight'), default_port=9393) server.wait() except KNOWN_EXCEPTIONS as e: fail(e)