[ONOS-2096] Let GUI support tunnel
1.add a tunnelEndPoint formatter.
2.let the tunnel page show bandwidth.
3.optimize some codes.
Change-Id: I57583f915c23e65b27b328292c9690237eba6a69
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEndPointFormatter.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEndPointFormatter.java
new file mode 100644
index 0000000..964d451
--- /dev/null
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelEndPointFormatter.java
@@ -0,0 +1,33 @@
+package org.onosproject.incubator.net.tunnel;
+
+
+import org.onosproject.ui.table.CellFormatter;
+import org.onosproject.ui.table.cell.AbstractCellFormatter;
+
+/**
+ * Formats a optical tunnel endpoint as "(type)/(element-id)/(port)".
+ * Formats a ip tunnel endpoint as "ip".
+ */
+public final class TunnelEndPointFormatter extends AbstractCellFormatter {
+ //non-instantiable
+ private TunnelEndPointFormatter() {
+ }
+
+ @Override
+ protected String nonNullFormat(Object value) {
+
+ if (value instanceof DefaultOpticalTunnelEndPoint) {
+ DefaultOpticalTunnelEndPoint cp = (DefaultOpticalTunnelEndPoint) value;
+ return cp.type() + "/" + cp.elementId().get() + "/" + cp.portNumber().get();
+ } else if (value instanceof IpTunnelEndPoint) {
+ IpTunnelEndPoint cp = (IpTunnelEndPoint) value;
+ return cp.ip().toString();
+ }
+ return "";
+ }
+
+ /**
+ * An instance of this class.
+ */
+ public static final CellFormatter INSTANCE = new TunnelEndPointFormatter();
+}
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
index c0a2725..13ce939 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TunnelViewMessageHandler.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.ImmutableSet;
import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelEndPointFormatter;
import org.onosproject.incubator.net.tunnel.TunnelService;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiMessageHandler;
@@ -52,6 +53,8 @@
protected TableModel createTableModel() {
TableModel tm = super.createTableModel();
//TODO add more formater class so that we can get a more readable table
+ tm.setFormatter(ONE, TunnelEndPointFormatter.INSTANCE);
+ tm.setFormatter(TWO, TunnelEndPointFormatter.INSTANCE);
tm.setFormatter(TYPE, EnumFormatter.INSTANCE);
return tm;
}
@@ -59,9 +62,7 @@
@Override
protected void populateTable(TableModel tm, ObjectNode payload) {
TunnelService ts = get(TunnelService.class);
- ts.queryAllTunnels().forEach(tunnel -> {
- populateRow(tm.addRow(), tunnel);
- });
+ ts.queryAllTunnels().forEach(tunnel -> populateRow(tm.addRow(), tunnel));
}
}
diff --git a/web/gui/src/main/webapp/app/view/tunnel/tunnel.html b/web/gui/src/main/webapp/app/view/tunnel/tunnel.html
index 3f1d761..4909cc0 100644
--- a/web/gui/src/main/webapp/app/view/tunnel/tunnel.html
+++ b/web/gui/src/main/webapp/app/view/tunnel/tunnel.html
@@ -61,6 +61,7 @@
<td>{{tunnel.two}}</td>
<td>{{tunnel.type}}</td>
<td>{{tunnel.group_id}}</td>
+ <td>{{tunnel.bandwidth}}</td>
<td>{{tunnel.path}}</td>
</tr>
</table>