def wrapper(*args, **kwargs): callback = args[0].callback responses = func(*args, **kwargs) if callback: for resp in to_list(responses): callback(resp) return responses
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]
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())
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
def send(self, commands, *args, **kwargs): commands = to_list(commands) return self.session.send(commands, *args, **kwargs)[0]
def _configure(commands): return ["configure"] + to_list(commands) + ["end"]