コード例 #1
0
ファイル: util.py プロジェクト: marcinkuzminski/circus
def convert_option(key, val):
    if key == "numprocesses":
        return int(val)
    elif key == "warmup_delay":
        return float(val)
    elif key == "working_dir":
        return val
    elif key == "uid":
        return val
    elif key == "gid":
        return val
    elif key == "send_hup":
        return util.to_bool(val)
    elif key == "shell":
        return util.to_bool(val)
    elif key == "env":
        return util.parse_env(val)
    elif key == "cmd":
        return val
    elif key == "flapping_attempts":
        return int(val)
    elif key == "flapping_window":
        return float(val)
    elif key == "retry_in":
        return float(val)
    elif key == "max_retry":
        return int(val)
    elif key == "graceful_timeout":
        return float(val)
    raise ArgumentError("unkown key %r" % key)
コード例 #2
0
    def message(self, *args, **opts):
        if len(args) < 3:
            raise ArgumentError("number of arguments invalid")

        args = list(args)
        watcher_name = args.pop(0)
        if len(args) % 2 != 0:
            raise ArgumentError("List of key/values is invalid")

        options = {}
        while len(args) > 0:
            kv, args = args[:2], args[2:]
            kvl = kv[0].lower()
            options[kvl] = convert_option(kvl, kv[1])

        return self.make_message(name=watcher_name, options=options)
コード例 #3
0
 def _get_signal(self, sig):
     if sig.lower() in ('quit', 'hup', 'kill', 'term', 'ttin', 'ttou',
                        'usr1', 'usr2'):
         return getattr(signal, "SIG%s" % sig.upper())
     elif sig.isdigit():
         return int(sig)
     raise ArgumentError("signal %r not supported" % sig)
コード例 #4
0
 def message(self, *args, **opts):
     if len(args) < 1:
         raise ArgumentError("number of arguments invalid")
     options = {'name': args[0]}
     if len(args) > 1:
         options['nb'] = int(args[1])
     return self.make_message(**options)
コード例 #5
0
    def dispatch(self, args):
        cmd, globalopts, opts, args = self._parse(args)

        if globalopts['help'] or cmd == "help":
            del globalopts["help"]
            return self.display_help(*args, **globalopts)
        elif globalopts['version'] or cmd == "version":
            return self.display_version()

        else:
            if cmd not in self.commands:
                raise ArgumentError('Unknown command %r' % cmd)

            cmd = self.commands[cmd]

        endpoint = globalopts.get('endpoint')
        if not endpoint:
            if cmd.msg_type == "sub":
                endpoint = "tcp://127.0.0.1:5556"
            else:
                endpoint = "tcp://127.0.0.1:5555"

        timeout = globalopts.get("timeout", 5.0)
        msg = cmd.message(*args, **opts)
        return getattr(self, "handle_%s" % cmd.msg_type)(cmd, globalopts, msg,
                                                         endpoint, timeout)
コード例 #6
0
    def message(self, *args, **opts):
        if len(args) < 2:
            raise ArgumentError("Invalid number of arguments")

        return self.make_message(name=args[0],
                                 cmd=" ".join(args[1:]),
                                 start=opts.get('start', False))
コード例 #7
0
ファイル: list.py プロジェクト: zerok/circus
    def message(self, *args, **opts):
        if len(args) > 1:
            raise ArgumentError("invalid number of arguments")

        if len(args) == 1:
            return self.make_message(name=args[0])
        else:
            return self.make_message()
コード例 #8
0
    def message(self, *args, **opts):
        if len(args) > 1:
            raise ArgumentError("invalid number of arguments")

        graceful = not opts.get("terminate", False)
        if len(args) == 1:
            return self.make_message(name=args[0], graceful=graceful)
        else:
            return self.make_message(graceful=graceful)
コード例 #9
0
    def message(self, *args, **opts):
        if len(args) > 2:
            raise ArgumentError("message invalid")

        if len(args) == 2:
            return self.make_message(name=args[0], process=int(args[1]))
        elif len(args) == 1:
            return self.make_message(name=args[0])
        else:
            return self.make_message()
コード例 #10
0
    def validate(self, props):
        super(Signal, self).validate(props)

        if 'childpid' in props and not 'pid' in props:
            raise ArgumentError('cannot specify childpid without pid')

        try:
            props['signum'] = to_signum(props['signum'])
        except ValueError:
            raise MessageError('signal invalid')
コード例 #11
0
 def message(self, *args, **opts):
     numArgs = 3
     if len(args) < numArgs:
         raise ArgumentError(
             'Invalid number of arguments. Usage: <identifier> <address> <cluster>'
         )
     if len(args) == numArgs:
         opts['identifier'] = args[0]
         opts['address'] = args[1]
         opts['cluster'] = args[2].split(',')
     return self.make_message(**opts)
コード例 #12
0
ファイル: sendsignal.py プロジェクト: zerok/circus
    def validate(self, props):
        super(Signal, self).validate(props)

        signum = props.get('signum')
        if 'statspid' in props and not 'pid' in props:
            raise ArgumentError('cannot specify childpid without pid')
        if 'children' in props and not 'pid' in props:
            raise ArgumentError('cannot specify children without pid')

        if isinstance(signum, int):
            if signum not in (signal.SIGQUIT, signal.SIGHUP, signal.SIGKILL,
                              signal.SIGTERM, signal.SIGTTIN, signal.SIGTTOU,
                              signal.SIGUSR1, signal.SIGUSR2):
                raise MessageError('signal invalid')

        elif isinstance(signum, string_types):
            if signum.lower() in ('quit', 'hup', 'kill', 'term', 'ttin',
                                  'ttou', 'usr1', 'usr2'):
                props['signum'] = getattr(signal, "SIG%s" % signum.upper())
            else:
                raise MessageError('signal invalid')
コード例 #13
0
ファイル: kill.py プロジェクト: yegorich/circus
    def message(self, *args, **opts):
        if len(args) < 1 or len(args) > 2:
            raise ArgumentError("Invalid number of arguments")

        props = {}
        props['name'] = args[0]
        if len(args) > 1:
            props['pid'] = args[1]
        if opts['signum'] is not None:
            props['signum'] = opts['signum']
        if opts['graceful_timeout'] is not None:
            props['graceful_timeout'] = opts['graceful_timeout']
        return self.make_message(**props)
コード例 #14
0
ファイル: stats.py プロジェクト: yegorich/circus
    def message(self, *args, **opts):
        if len(args) > 2:
            raise ArgumentError("message invalid")

        extended = opts.get("extended", False)
        if len(args) == 2:
            return self.make_message(name=args[0],
                                     process=int(args[1]),
                                     extended=extended)
        elif len(args) == 1:
            return self.make_message(name=args[0], extended=extended)
        else:
            return self.make_message(extended=extended)
コード例 #15
0
def convert_option(key, val):
    if key == "numprocesses":
        return int(val)
    elif key == "warmup_delay":
        return float(val)
    elif key == "working_dir":
        return val
    elif key == "uid":
        return val
    elif key == "gid":
        return val
    elif key == "send_hup":
        return util.to_bool(val)
    elif key == "shell":
        return util.to_bool(val)
    elif key == "copy_env":
        return util.to_bool(val)
    elif key == "env":
        return util.parse_env_dict(val)
    elif key == "cmd":
        return val
    elif key == "flapping_attempts":
        return int(val)
    elif key == "flapping_window":
        return float(val)
    elif key == "retry_in":
        return float(val)
    elif key == "max_retry":
        return int(val)
    elif key == "graceful_timeout":
        return float(val)
    elif key == 'max_age':
        return int(val)
    elif key == 'max_age_variance':
        return int(val)
    elif key == 'respawn':
        return util.to_bool(val)
    elif key.startswith('stderr_stream.') or key.startswith('stdout_stream.'):
        subkey = key.split('.', 1)[-1]
        if subkey in ('max_bytes', 'backup_count'):
            return int(val)
        return val
    elif key.startswith('hooks.'):
        subkey = key.split('.', 1)[-1]

        if subkey in ('before_start', 'after_start', 'before_stop',
                      'after_stop', 'before_spawn'):
            return val

    raise ArgumentError("unknown key %r" % key)
コード例 #16
0
    def message(self, *args, **opts):
        largs = len(args)
        if largs < 2 or largs > 3:
            raise ArgumentError("Invalid number of arguments")

        props = {
            'name': args[0],
            'children': opts.get("children", False),
            'recursive': opts.get("recursive", False),
            'signum': args[-1],
        }
        if len(args) == 3:
            props['pid'] = int(args[1])
        return self.make_message(**props)
コード例 #17
0
    def message(self, *args, **opts):
        if len(args) > 1:
            raise ArgumentError("invalid number of arguments")

        graceful = not opts.get("terminate", False)
        waiting = opts.get("waiting", False)
        sequential = opts.get("sequential", False)
        if len(args) == 1:
            return self.make_message(name=args[0],
                                     graceful=graceful,
                                     waiting=waiting,
                                     sequential=sequential)
        else:
            return self.make_message(graceful=graceful,
                                     waiting=waiting,
                                     sequential=sequential)
コード例 #18
0
    def message(self, *args, **opts):
        largs = len(args)
        if largs < 2 or largs > 4:
            raise ArgumentError("number of arguments invalid")

        if len(args) == 4:
            signum = self._get_signal(args[3])
            return self.make_message(name=args[0],
                                     process=args[1],
                                     pid=args[2],
                                     signum=signum)
        elif len(args) == 3:
            signum = self._get_signal(args[2])
            children = opts.get("children", False)
            return self.make_message(name=args[0],
                                     process=args[1],
                                     signum=signum,
                                     children=children)
        else:
            signum = self._get_signal(args[1])
            return self.make_message(name=args[0], signum=signum)
コード例 #19
0
 def message(self, *args, **opts):
     if len(args) > 0:
         raise ArgumentError("message invalid")
     return self.make_message()
コード例 #20
0
ファイル: options.py プロジェクト: zerok/circus
    def message(self, *args, **opts):

        if len(args) < 1:
            raise ArgumentError("number of arguments invalid")

        return self.make_message(name=args[0])
コード例 #21
0
ファイル: util.py プロジェクト: suligap/circus
def convert_option(key, val):
    if key == "numprocesses":
        return int(val)
    elif key == "warmup_delay":
        return float(val)
    elif key == "working_dir":
        return val
    elif key == "uid":
        return val
    elif key == "gid":
        return val
    elif key == "send_hup":
        return util.to_bool(val)
    elif key == "shell":
        return util.to_bool(val)
    elif key == "copy_env":
        return util.to_bool(val)
    elif key == "env":
        return util.parse_env_dict(val)
    elif key == "cmd":
        return val
    elif key == "flapping_attempts":
        return int(val)
    elif key == "flapping_window":
        return float(val)
    elif key == "retry_in":
        return float(val)
    elif key == "max_retry":
        return int(val)
    elif key == "graceful_timeout":
        return float(val)
    elif key == 'max_age':
        return int(val)
    elif key == 'max_age_variance':
        return int(val)
    elif key == 'respawn':
        return util.to_bool(val)
    elif key.startswith('stderr_stream.') or key.startswith('stdout_stream.'):
        subkey = key.split('.', 1)[-1]
        if subkey in ('max_bytes', 'backup_count'):
            return int(val)
        return val
    elif key == 'hooks':
        res = {}
        for hook in val.split(','):
            if hook == '':
                continue
            hook = hook.split(':')
            if len(hook) != 2:
                raise ArgumentError(hook)

            name, value = hook
            if name not in _HOOKS:
                raise ArgumentError(name)

            res[name] = value

        return res
    elif key.startswith('hooks.'):
        # we can also set a single hook
        name = key.split('.', 1)[-1]
        if name not in _HOOKS:
            raise ArgumentError(name)
        return val

    raise ArgumentError("unknown key %r" % key)
コード例 #22
0
ファイル: numwatchers.py プロジェクト: zerok/circus
 def message(self, *args, **opts):
     if len(args) > 0:
         raise ArgumentError("invalid number of arguments")
     return self.make_message()
コード例 #23
0
    def message(self, *args, **opts):
        if len(args) < 2:
            raise ArgumentError("Invalid number of arguments")

        return self.make_message(name=args[0], keys=args[1:])