def _transaction(self): req = self._txn_q.popleft() txn = idl.Transaction(self._idl) uuids = req.func(self._idl.tables, txn.insert) status = txn.commit_block() insert_uuids = {} err_msg = None if status in (idl.Transaction.SUCCESS, idl.Transaction.UNCHANGED): if uuids: if isinstance(uuids, uuid.UUID): insert_uuids[uuids] = txn.get_insert_uuid(uuids) else: insert_uuids = dict((uuid, txn.get_insert_uuid(uuid)) for uuid in uuids) else: err_msg = txn.get_error() rep = event.EventModifyReply(self.system_id, status, insert_uuids, err_msg) self.reply_to_request(req, rep)
def modify_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.EventModifyReply(system_id, None, None, msg) return self.reply_to_request(ev, rep) return remote.modify_request_handler(ev)