def match_rows(manager, system_id, table, fn): def _match_rows(tables): return (r for r in tables[table].rows.values() if fn(r)) request = ovsdb_event.EventReadRequest(system_id, _match_rows) reply = manager.send_request(request) return reply.result
def match_row(manager, system_id, table, fn): def _match_row(tables): return next((r for r in tables[table].rows.values() if fn(r)), None) request_to_get_tables = ovsdb_event.EventReadRequest(system_id, _match_row) reply_to_get_tables = manager.send_request(request_to_get_tables) return reply_to_get_tables.result
def get_system_id_for_datapath_id(manager, datapath_id): def _get_dp_ids(tables): bridges = tables.get('Bridge') if not bridges: return None for bridge in bridges.rows.values(): datapath_ids = [ dpidlib.str_to_dpid(dp_id) for dp_id in bridge.datapath_id ] if datapath_id in datapath_ids: openvswitch = tables['Open_vSwitch'].rows if openvswitch: row = openvswitch.get(list(openvswitch.keys())[0]) return row.external_ids.get('system-id') return None request = ovsdb_event.EventReadRequest(None, _get_dp_ids) reply = manager.send_request(request) # NOTE(jkoelker) Bulk reads return a tuple of (system_id, result) for result in reply.result: if result[1]: return result[0] return None
def get_table(manager, system_id, name): def _get_table(tables): return tables[name] request_to_get_tables = ovsdb_event.EventReadRequest(system_id, _get_table) reply_to_get_tables = manager.send_request(request_to_get_tables) return reply_to_get_tables.result
def get_datapath_ids_for_systemd_id(manager, system_id): def _get_dp_ids(tables): dp_ids = [] bridges = tables.get('Bridge') if not bridges: return dp_ids for bridge in bridges.rows.values(): datapath_ids = bridge.datapath_id dp_ids.extend(dpidlib.str_to_dpid(dp_id) for dp_id in datapath_ids) return dp_ids request = ovsdb_event.EventReadRequest(system_id, _get_dp_ids) reply = manager.send_request(request) return reply.result