コード例 #1
0
    def wrapper(*args, **kwargs):
        callback = args[0].callback

        responses = func(*args, **kwargs)
        if callback:
            for resp in to_list(responses):
                callback(resp)
        return responses
コード例 #2
0
    def remove(self, endpoints):
        endpoints = to_list(endpoints)
        defunct = []
        for session in self.filter(endpoints):
            defunct.append(session.hostname)

        for hostname in defunct:
            del self._sessions[hostname]
コード例 #3
0
    def filter(self, patterns):
        """filter connections for hostname or tags"""

        filtered = []

        patterns = [re.compile(pat) for pat in to_list(patterns)]
        #print(self._sessions)
        for _, session in self._sessions.items():

            keys = [session.endpoint] + session.tags
            #print("KEYS:", keys)
            for pattern in patterns:
                for _ in filter(pattern.match, keys):
                    if session not in filtered:
                        filtered.append(session)

        return filtered  #list(filtered.items())
コード例 #4
0
def _send(endpoints, commands, callback=None, **kwargs):

    if not endpoints:
        raise ValueError("Empty list of endpoints: %s" % str(endpoints))

    responses = []

    commands = to_list(commands)

    kwargs.setdefault("encoding", "text")

    loop = asyncio.get_event_loop()

    for response in loop.run_until_complete(
            _asend(endpoints, commands, **kwargs)):
        # if raise_for_error:
        response.raise_for_error()

        if callback:
            callback(response)
        responses.append(response)

    return responses
コード例 #5
0
 def send(self, commands, *args, **kwargs):
     commands = to_list(commands)
     return self.session.send(commands, *args, **kwargs)[0]
コード例 #6
0
def _configure(commands):
    return ["configure"] + to_list(commands) + ["end"]