class find_user(defer.Deferred): log = Logger() def __init__(self, username): defer.Deferred.__init__(self) self.log.debug('looking for user: {u:}', u = username) self.username = username self.client = EtcdClient(reactor) d = self.client.get('/secant/users/{}/passwords'.format(self.username)) d.addCallbacks(self.gotResponse, self.errResponse) def gotResponse(self, response): passwords = json.loads(response.node.value) passwords_index = response.node.modifiedIndex self.callback(User(username = self.username, passwords = passwords, passwords_index = response.node.modifiedIndex)) def errResponse(self, failure): self.errback(failure)