def get_plugin_cmd(config, endpoint, pubsub, check_delay, ssh_server, debug=False, loglevel=None, logoutput=None): fqn = config['use'] # makes sure the name exists resolve_name(fqn) # we're good, serializing the config del config['use'] config = _cfg2str(config) cmd = "%s -c 'from circus import plugins;plugins.main()'" % sys.executable cmd += ' --endpoint %s' % endpoint cmd += ' --pubsub %s' % pubsub if ssh_server is not None: cmd += ' --ssh %s' % ssh_server if len(config) > 0: cmd += ' --config %s' % config if debug: cmd += ' --log-level DEBUG' elif loglevel: cmd += ' --log-level ' + loglevel if logoutput: cmd += ' --log-output ' + logoutput cmd += ' %s' % fqn return cmd
def get_plugin_cmd(config, endpoint, pubsub, check_delay): fqn = config['use'] # makes sure the name exists resolve_name(fqn) # we're good, serializing the config del config['use'] config = _cfg2str(config) cmd = "%s -c 'from circus import plugins;plugins.main()'" % sys.executable cmd += ' --endpoint %s' % endpoint cmd += ' --pubsub %s' % pubsub if len(config) > 0: cmd += ' --config %s' % config cmd += ' %s' % fqn return cmd
def get_plugin_cmd(config, endpoint, pubsub, check_delay): fqn = config['use'] # makes sure the name exists resolve_name(fqn) # we're good, serializing the config del config['use'] config = _cfg2str(config) cmd = "%s -c 'from circus import plugins;plugins.main()'" % sys.executable cmd += ' --endpoint %s' % endpoint cmd += ' --pubsub %s' % pubsub if len(config) > 0: cmd += ' --config %s' % config cmd += ' %s' % fqn return cmd
def stream_config(watcher_name, stream_conf): if not stream_conf: return stream_conf if not 'class' in stream_conf: # we can handle othe class there if 'filename' in stream_conf: obj = FileStream else: raise ValueError("stream configuration invalid in %r" % watcher_name) else: class_name = stream_conf.pop('class') if not "." in class_name: class_name = "circus.stream.%s" % class_name obj = util.resolve_name(class_name) # default refres_time if not 'refresh_time' in stream_conf: refresh_time = 0.3 else: refresh_time = float(stream_conf.pop('refresh_time')) # initialize stream instance inst = obj(**stream_conf) return {'stream': inst, 'refresh_time': refresh_time}
def stream_config(watcher_name, stream_conf): if not stream_conf: return stream_conf if not 'class' in stream_conf: # we can handle othe class there if 'filename' in stream_conf: obj = FileStream else: raise ValueError("stream configuration invalid in %r" % watcher_name) else: class_name = stream_conf.pop('class') if not "." in class_name: class_name = "circus.stream.%s" % class_name obj = util.resolve_name(class_name) # default refres_time if not 'refresh_time' in stream_conf: refresh_time = 0.3 else: refresh_time = float(stream_conf.pop('refresh_time')) # initialize stream instance inst = obj(**stream_conf) return {'stream': inst, 'refresh_time': refresh_time}
def main(): parser = argparse.ArgumentParser(description="Runs a plugin.") parser.add_argument("--endpoint", help="The circusd ZeroMQ socket to connect to", default=DEFAULT_ENDPOINT_DEALER) parser.add_argument( "--pubsub", help="The circusd ZeroMQ pub/sub socket to connect to", default=DEFAULT_ENDPOINT_SUB ) parser.add_argument("--config", help="The plugin configuration", default=None) parser.add_argument("--version", action="store_true", default=False, help="Displays Circus version and exits.") parser.add_argument("--check-delay", type=float, default=5.0, help="Checck delay.") parser.add_argument("plugin", help="Fully qualified name of the plugin class.", nargs="?") parser.add_argument("--log-level", dest="loglevel", default="info", help="log level") parser.add_argument("--log-output", dest="logoutput", default="-", help="log output") parser.add_argument("--ssh", default=None, help="SSH Server") args = parser.parse_args() if args.version: print(__version__) sys.exit(0) if args.plugin is None: parser.print_usage() sys.exit(0) # configure the logger loglevel = LOG_LEVELS.get(args.loglevel.lower(), logging.INFO) logger.setLevel(loglevel) if args.logoutput == "-": h = logging.StreamHandler() else: h = logging.handlers.WatchedFileHandler(args.logoutput) close_on_exec(h.stream.fileno()) fmt = logging.Formatter(LOG_FMT, LOG_DATE_FMT) h.setFormatter(fmt) logger.addHandler(h) # load the plugin and run it. logger.info("Loading the plugin...") logger.info("Endpoint: %r" % args.endpoint) logger.info("Pub/sub: %r" % args.pubsub) plugin = resolve_name(args.plugin)(args.endpoint, args.pubsub, args.check_delay, args.ssh, **_str2cfg(args.config)) logger.info("Starting") try: plugin.start() except KeyboardInterrupt: pass finally: logger.info("Stopping") plugin.stop() sys.exit(0)
def _resolve_hook(self, name, callable_or_name, ignore_failure): if callable(callable_or_name): self.hooks[name] = callable_or_name else: # will raise ImportError on failure self.hooks[name] = resolve_name(callable_or_name) if ignore_failure: self.ignore_hook_failure.append(name)
def _resolve_hook(self, name, callable_or_name, ignore_failure): if callable(callable_or_name): self.hooks[name] = callable_or_name else: # will raise ImportError on failure self.hooks[name] = resolve_name(callable_or_name) if ignore_failure: self.ignore_hook_failure.append(name)
def get_plugin_cmd(config, endpoint, pubsub, check_delay, ssh_server, debug=False): fqn = config["use"] # makes sure the name exists resolve_name(fqn) # we're good, serializing the config del config["use"] config = _cfg2str(config) cmd = "%s -c 'from circus import plugins;plugins.main()'" % sys.executable cmd += " --endpoint %s" % endpoint cmd += " --pubsub %s" % pubsub if ssh_server is not None: cmd += " --ssh %s" % ssh_server if len(config) > 0: cmd += " --config %s" % config if debug: cmd += " --log-level DEBUG" cmd += " %s" % fqn return cmd
def get_plugin_cmd(config, endpoint, pubsub, check_delay, ssh_server, debug=False, loglevel=None, logoutput=None): fqn = config['use'] # makes sure the name exists resolve_name(fqn) # we're good, serializing the config del config['use'] config = _cfg2str(config) cmd = "%s -c 'from circus import plugins;plugins.main()'" % sys.executable cmd += ' --endpoint %s' % endpoint cmd += ' --pubsub %s' % pubsub if ssh_server is not None: cmd += ' --ssh %s' % ssh_server if len(config) > 0: cmd += ' --config %s' % config if debug: cmd += ' --log-level DEBUG' elif loglevel: cmd += ' --log-level ' + loglevel if logoutput: cmd += ' --log-output ' + logoutput cmd += ' %s' % fqn return cmd
def get_stream(conf): if not conf: return conf # we can have 'stream' or 'class' or 'filename' if 'filename' in conf: inst = FileStream(**conf) elif 'stream' in conf: inst = conf['stream'] elif 'class' in conf: class_name = conf.pop('class') if not "." in class_name: class_name = "circus.stream.%s" % class_name inst = resolve_name(class_name)(**conf) else: raise ValueError("stream configuration invalid") return {'stream': inst}
def get_stream(conf, reload=False): if conf: # we can have 'stream' or 'class' or 'filename' if 'class' in conf: class_name = conf.pop('class') if "." not in class_name: cls = globals()[class_name] inst = cls(**conf) else: inst = resolve_name(class_name, reload=reload)(**conf) elif 'stream' in conf: inst = conf['stream'] elif 'filename' in conf: inst = FileStream(**conf) else: raise ValueError("stream configuration invalid") return inst
def get_stream(conf, reload=False): if conf: # we can have 'stream' or 'class' or 'filename' if 'class' in conf: class_name = conf.pop('class') if not "." in class_name: cls = globals()[class_name] inst = cls(**conf) else: inst = resolve_name(class_name, reload=reload)(**conf) elif 'stream' in conf: inst = conf['stream'] elif 'filename' in conf: inst = FileStream(**conf) else: raise ValueError("stream configuration invalid") return inst
def _start_plugins(self): self._stop_plugins() self._plugins.clear() if self.plugins is None: return for config in self.plugins: fqn = config['use'] del config['use'] cls = resolve_name(fqn) instance = cls(self.context, self.endpoint, self.pubsub_endpoint, self.check_delay, **config) self._plugins[cls.name] = instance for plugin in self._plugins.values(): if not plugin.active: continue plugin.start()
def _resolve_hooks(self, hooks): """Check the supplied hooks argument to make sure we can find callables""" if not hooks: return {} resolved_hooks = {} for hook_name, hook_value in hooks.items(): callable_or_name, ignore_failure = hook_value if callable(callable_or_name): resolved_hooks[hook_name] = callable_or_name else: # will raise ImportError on failure resolved_hook = resolve_name(callable_or_name) resolved_hooks[hook_name] = resolved_hook if ignore_failure: self.ignore_hook_failure.append(hook_name) return resolved_hooks
def _resolve_hooks(self, hooks): """Check the supplied hooks argument to make sure we can find callables""" if not hooks: return {} resolved_hooks = {} for hook_name, hook_value in hooks.items(): callable_or_name, ignore_failure = hook_value if callable(callable_or_name): resolved_hooks[hook_name] = callable_or_name else: # will raise ImportError on failure resolved_hook = resolve_name(callable_or_name) resolved_hooks[hook_name] = resolved_hook if ignore_failure: self.ignore_hook_failure.append(hook_name) return resolved_hooks
def main(): parser = argparse.ArgumentParser(description='Runs a plugin.') parser.add_argument('--endpoint', help='The circusd ZeroMQ socket to connect to', default=DEFAULT_ENDPOINT_DEALER) parser.add_argument('--pubsub', help='The circusd ZeroMQ pub/sub socket to connect to', default=DEFAULT_ENDPOINT_SUB) parser.add_argument('--config', help='The plugin configuration', default=None) parser.add_argument('--version', action='store_true', default=False, help='Displays Circus version and exits.') parser.add_argument('--check-delay', type=float, default=5., help='Checck delay.') parser.add_argument('plugin', help='Fully qualified name of the plugin class.', nargs='?') parser.add_argument('--log-level', dest='loglevel', default='info', help="log level") parser.add_argument('--log-output', dest='logoutput', default='-', help="log output") parser.add_argument('--ssh', default=None, help='SSH Server') args = parser.parse_args() if args.version: print(__version__) sys.exit(0) if args.plugin is None: parser.print_usage() sys.exit(0) # configure the logger logging.basicConfig() loglevel = LOG_LEVELS.get(args.loglevel.lower(), logging.INFO) logger.setLevel(loglevel) if args.logoutput == "-": h = logging.StreamHandler() else: h = logging.FileHandler(args.logoutput) close_on_exec(h.stream.fileno()) fmt = logging.Formatter(LOG_FMT, LOG_DATE_FMT) h.setFormatter(fmt) logger.addHandler(h) # load the plugin and run it. logger.info('Loading the plugin...') logger.info('Endpoint: %r' % args.endpoint) logger.info('Pub/sub: %r' % args.pubsub) plugin = resolve_name(args.plugin)(args.endpoint, args.pubsub, args.check_delay, args.ssh, **_str2cfg(args.config)) logger.info('Starting') try: plugin.start() except KeyboardInterrupt: pass finally: logger.info('Stopping') plugin.stop() sys.exit(0)
def main(): parser = argparse.ArgumentParser(description='Runs a plugin.') parser.add_argument('--endpoint', help='The circusd ZeroMQ socket to connect to', default=DEFAULT_ENDPOINT_DEALER) parser.add_argument('--pubsub', help='The circusd ZeroMQ pub/sub socket to connect to', default=DEFAULT_ENDPOINT_SUB) parser.add_argument('--config', help='The plugin configuration', default=None) parser.add_argument('--version', action='store_true', default=False, help='Displays Circus version and exits.') parser.add_argument('--check-delay', type=float, default=5., help='Checck delay.') parser.add_argument('plugin', help='Fully qualified name of the plugin class.', nargs='?') parser.add_argument('--log-level', dest='loglevel', default='info', help="log level") parser.add_argument('--log-output', dest='logoutput', default='-', help="log output") parser.add_argument('--ssh', default=None, help='SSH Server') args = parser.parse_args() if args.version: print(__version__) sys.exit(0) if args.plugin is None: parser.print_usage() sys.exit(0) # configure the logger logging.basicConfig() loglevel = LOG_LEVELS.get(args.loglevel.lower(), logging.INFO) logger.setLevel(loglevel) if args.logoutput == "-": h = logging.StreamHandler() else: h = logging.FileHandler(args.logoutput) close_on_exec(h.stream.fileno()) fmt = logging.Formatter(LOG_FMT, LOG_DATE_FMT) h.setFormatter(fmt) logger.addHandler(h) # load the plugin and run it. logger.info('Loading the plugin...') logger.info('Endpoint: %r' % args.endpoint) logger.info('Pub/sub: %r' % args.pubsub) plugin = resolve_name(args.plugin)(args.endpoint, args.pubsub, args.check_delay, args.ssh, **_str2cfg(args.config)) logger.info('Starting') try: plugin.start() except KeyboardInterrupt: pass finally: logger.info('Stopping') plugin.stop() sys.exit(0)
def main(): parser = argparse.ArgumentParser(description='Runs a plugin.') parser.add_argument('--endpoint', help='The circusd ZeroMQ socket to connect to', default=DEFAULT_ENDPOINT_DEALER) parser.add_argument('--pubsub', help='The circusd ZeroMQ pub/sub socket to connect to', default=DEFAULT_ENDPOINT_SUB) parser.add_argument('--config', help='The plugin configuration', default=None) parser.add_argument('--version', action='store_true', default=False, help='Displays Circus version and exits.') parser.add_argument('--check-delay', type=float, default=5., help='Checck delay.') parser.add_argument('plugin', help='Fully qualified name of the plugin class.', nargs='?') parser.add_argument('--log-level', dest='loglevel', default='info', help="log level") parser.add_argument('--log-output', dest='logoutput', default='-', help="log output") parser.add_argument('--ssh', default=None, help='SSH Server') args = parser.parse_args() if args.version: print(__version__) sys.exit(0) if args.plugin is None: parser.print_usage() sys.exit(0) factory = resolve_name(args.plugin) # configure the logger configure_logger(logger, args.loglevel, args.logoutput, name=factory.name) # load the plugin and run it. logger.info('Loading the plugin...') logger.info('Endpoint: %r' % args.endpoint) logger.info('Pub/sub: %r' % args.pubsub) plugin = factory(args.endpoint, args.pubsub, args.check_delay, args.ssh, **_str2cfg(args.config)) logger.info('Starting') try: plugin.start() except KeyboardInterrupt: pass finally: logger.info('Stopping') plugin.stop() sys.exit(0)
def main(): parser = argparse.ArgumentParser(description='Runs a plugin.') parser.add_argument('--endpoint', help='The circusd ZeroMQ socket to connect to', default=DEFAULT_ENDPOINT_DEALER) parser.add_argument('--pubsub', help='The circusd ZeroMQ pub/sub socket to connect to', default=DEFAULT_ENDPOINT_SUB) parser.add_argument('--config', help='The plugin configuration', default=None) parser.add_argument('--version', action='store_true', default=False, help='Displays Circus version and exits.') parser.add_argument('--check-delay', type=float, default=5., help='Checck delay.') parser.add_argument('plugin', help='Fully qualified name of the plugin class.', nargs='?') parser.add_argument('--log-level', dest='loglevel', default='info', help="log level") parser.add_argument('--log-output', dest='logoutput', default='-', help="log output") parser.add_argument('--ssh', default=None, help='SSH Server') args = parser.parse_args() if args.version: print(__version__) sys.exit(0) if args.plugin is None: parser.print_usage() sys.exit(0) factory = resolve_name(args.plugin) # configure the logger configure_logger(logger, args.loglevel, args.logoutput, name=factory.name) # load the plugin and run it. logger.info('Loading the plugin...') logger.info('Endpoint: %r' % args.endpoint) logger.info('Pub/sub: %r' % args.pubsub) plugin = factory(args.endpoint, args.pubsub, args.check_delay, args.ssh, **_str2cfg(args.config)) logger.info('Starting') try: plugin.start() except KeyboardInterrupt: pass finally: logger.info('Stopping') plugin.stop() sys.exit(0)