[ONOS-7374] OvsdbBridges obtained by DefaultOvsdbClient.getBridges() do not have controller information
Change-Id: I74640e991940e1b63e34c95512466e0807d33271
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
index 5d521ca..b36032b 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
@@ -1506,8 +1506,8 @@
}
ConcurrentMap<String, Row> rows = rowStore.getRowStore();
for (String uuid : rows.keySet()) {
- Row row = getRow(DATABASENAME, BRIDGE, uuid);
- OvsdbBridge ovsdbBridge = getOvsdbBridge(row);
+ Row bridgeRow = getRow(DATABASENAME, BRIDGE, uuid);
+ OvsdbBridge ovsdbBridge = getOvsdbBridge(bridgeRow, Uuid.uuid(uuid));
if (ovsdbBridge != null) {
ovsdbBridges.add(ovsdbBridge);
}
@@ -1652,7 +1652,7 @@
return new OvsdbPort(new OvsdbPortNumber(ofPort), new OvsdbPortName(portName));
}
- private OvsdbBridge getOvsdbBridge(Row row) {
+ private OvsdbBridge getOvsdbBridge(Row row, Uuid bridgeUuid) {
DatabaseSchema dbSchema = getDatabaseSchema(DATABASENAME);
Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, row, OvsdbTable.BRIDGE);
if (bridge == null) {
@@ -1670,7 +1670,26 @@
if ((datapathId == null) || (bridgeName == null)) {
return null;
}
- return OvsdbBridge.builder().name(bridgeName).datapathId(datapathId).build();
+
+ List<Controller> controllers = getControllers(bridgeUuid);
+
+ if (controllers != null) {
+ List<ControllerInfo> controllerInfos = controllers.stream().map(
+ controller -> new ControllerInfo(
+ (String) controller.getTargetColumn()
+ .data())).collect(Collectors.toList());
+
+ return OvsdbBridge.builder()
+ .name(bridgeName)
+ .datapathId(datapathId)
+ .controllers(controllerInfos)
+ .build();
+ } else {
+ return OvsdbBridge.builder()
+ .name(bridgeName)
+ .datapathId(datapathId)
+ .build();
+ }
}
private OvsdbQos getOvsdbQos(Row row) {