Supports methods to get interface-related information in ovsdbclient service.
Change-Id: Ic7e45178c8adc9b207b43d893e64b1f2f47cebd4
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 38f8ede..9ffa26e 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
@@ -106,7 +106,29 @@
import java.util.function.Consumer;
import java.util.stream.Collectors;
-import static org.onosproject.ovsdb.controller.OvsdbConstant.*;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGE;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGES;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGE_CONTROLLER;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.CONTROLLER;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.DATABASENAME;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.EXTERNAL_ID;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.EXTERNAL_ID_INTERFACE_ID;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.INTERFACE;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.INTERFACES;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.MIRROR;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.MIRRORS;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.OFPORT;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.OFPORT_ERROR;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.PORT;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.PORTS;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.PORT_QOS;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.QOS;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.QOS_EXTERNAL_ID_KEY;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.QUEUE;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.QUEUES;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.QUEUE_EXTERNAL_ID_KEY;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.TYPEVXLAN;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.UUID;
/**
* An representation of an ovsdb client.
@@ -1600,7 +1622,15 @@
@Override
public Set<OvsdbPort> getPorts() {
- Set<OvsdbPort> ovsdbPorts;
+ return (Set<OvsdbPort>) getElements(this::getOvsdbPort);
+ }
+
+ @Override
+ public Set<Interface> getInterfaces() {
+ return (Set<Interface>) getElements(this::getInterface);
+ }
+
+ private Set<?> getElements(Function<Row, ?> method) {
OvsdbTableStore tableStore = getTableStore(DATABASENAME);
if (tableStore == null) {
return null;
@@ -1610,16 +1640,32 @@
return null;
}
ConcurrentMap<String, Row> rows = rowStore.getRowStore();
- ovsdbPorts = rows.keySet()
+
+ return rows.keySet()
.stream()
.map(uuid -> getRow(DATABASENAME, INTERFACE, uuid))
- .map(this::getOvsdbPort)
+ .map(method)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
- return ovsdbPorts;
}
@Override
+ public Interface getInterface(String intf) {
+ return getInterfaces().stream()
+ .filter(ovsdbIntf -> ovsdbIntf.getName().equals(intf))
+ .findAny().orElse(null);
+ }
+
+ private Interface getInterface(Row row) {
+ DatabaseSchema dbSchema = getDatabaseSchema(DATABASENAME);
+ Interface intf = (Interface) TableGenerator
+ .getTable(dbSchema, row, OvsdbTable.INTERFACE);
+ if (intf == null) {
+ return null;
+ }
+ return intf;
+ }
+ @Override
public DatabaseSchema getDatabaseSchema(String dbName) {
return schema.get(dbName);
}