Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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}
Ejemplo n.º 5
0
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}
Ejemplo n.º 6
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.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)
Ejemplo n.º 7
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)
Ejemplo n.º 8
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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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}
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
    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()
Ejemplo n.º 15
0
    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
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
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)
Ejemplo n.º 18
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)
Ejemplo n.º 19
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)
Ejemplo n.º 20
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)