def read_request_handler(self, ev, bulk=False): result = ev.func(self._idl.tables) # NOTE(jkoelker) If this was a bulk request, the parent OVSDB app is # responsible for the reply if bulk: return (self.system_id, result) rep = event.EventReadReply(self.system_id, result) self.reply_to_request(ev, rep)
def read_request_handler(self, ev): system_id = ev.system_id client_name = client.RemoteOvsdb.instance_name(system_id) remote = self._clients.get(client_name) if not remote: msg = 'Unknown remote system_id %s' % system_id self.logger.info(msg) rep = event.EventReadReply(system_id, None, msg) return self.reply_to_request(ev, rep) return remote.read_request_handler(ev)
def _bulk_read_handler(self, ev): results = [] def done(gt, *args, **kwargs): if gt in self.threads: self.threads.remove(gt) results.append(gt.wait()) threads = [] for c in self._clients.values(): gt = hub.spawn(c.read_request_handler, ev, bulk=True) threads.append(gt) self.threads.append(gt) gt.link(done) hub.joinall(threads) rep = event.EventReadReply(None, results) self.reply_to_request(ev, rep)
def read_request_handler(self, ev): system_id = ev.system_id if system_id is None: def done(gt, *args, **kwargs): if gt in self.threads: self.threads.remove(gt) thread = hub.spawn(self._bulk_read_handler, ev) self.threads.append(thread) return thread.link(done) client_name = client.RemoteOvsdb.instance_name(system_id) remote = self._clients.get(client_name) if not remote: msg = 'Unknown remote system_id %s' % system_id self.logger.info(msg) rep = event.EventReadReply(system_id, None, msg) return self.reply_to_request(ev, rep) return remote.read_request_handler(ev)
def read_request_handler(self, ev): result = ev.func(self._idl.tables) rep = event.EventReadReply(self.system_id, result) self.reply_to_request(ev, rep)