GUI -- Added port-statistics traffic visualization to the topo view.
Change-Id: I52b3c1739cc50a026c0796819d61ec1898937ced
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index 5e62e09..6277e79 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -15,14 +15,15 @@
*/
package org.onosproject.provider.of.device.impl;
+import com.google.common.base.Strings;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onlab.packet.ChassisId;
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.Device;
@@ -50,7 +51,6 @@
import org.onosproject.openflow.controller.OpenFlowSwitchListener;
import org.onosproject.openflow.controller.PortDescPropertyType;
import org.onosproject.openflow.controller.RoleState;
-import org.onlab.packet.ChassisId;
import org.projectfloodlight.openflow.protocol.OFFactory;
import org.projectfloodlight.openflow.protocol.OFMessage;
import org.projectfloodlight.openflow.protocol.OFPortConfig;
@@ -75,8 +75,6 @@
import java.util.HashSet;
import java.util.List;
-import com.google.common.base.Strings;
-
import static org.onosproject.net.DeviceId.deviceId;
import static org.onosproject.net.Port.Type.COPPER;
import static org.onosproject.net.Port.Type.FIBER;
@@ -204,36 +202,37 @@
private void pushPortMetrics(Dpid dpid, OFPortStatsReply msg) {
DeviceId deviceId = DeviceId.deviceId(dpid.uri(dpid));
-
Collection<PortStatistics> stats = buildPortStatistics(deviceId, msg);
-
providerService.updatePortStatistics(deviceId, stats);
}
private Collection<PortStatistics> buildPortStatistics(DeviceId deviceId, OFPortStatsReply msg) {
-
HashSet<PortStatistics> stats = Sets.newHashSet();
for (OFPortStatsEntry entry: msg.getEntries()) {
- if (entry.getPortNo().getPortNumber() < 0) {
- continue;
- }
- DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
- DefaultPortStatistics stat = builder.setDeviceId(deviceId)
- .setPort(entry.getPortNo().getPortNumber())
- .setPacketsReceived(entry.getRxPackets().getValue())
- .setPacketsSent(entry.getTxPackets().getValue())
- .setBytesReceived(entry.getRxBytes().getValue())
- .setBytesSent(entry.getTxBytes().getValue())
- .setPacketsRxDropped(entry.getRxDropped().getValue())
- .setPacketsTxDropped(entry.getTxDropped().getValue())
- .setPacketsRxErrors(entry.getRxErrors().getValue())
- .setPacketsTxErrors(entry.getTxErrors().getValue())
- .setDurationSec(entry.getDurationSec())
- .setDurationNano(entry.getDurationNsec())
- .build();
+ try {
+ if (entry.getPortNo().getPortNumber() < 0) {
+ continue;
+ }
+ DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
+ DefaultPortStatistics stat = builder.setDeviceId(deviceId)
+ .setPort(entry.getPortNo().getPortNumber())
+ .setPacketsReceived(entry.getRxPackets().getValue())
+ .setPacketsSent(entry.getTxPackets().getValue())
+ .setBytesReceived(entry.getRxBytes().getValue())
+ .setBytesSent(entry.getTxBytes().getValue())
+ .setPacketsRxDropped(entry.getRxDropped().getValue())
+ .setPacketsTxDropped(entry.getTxDropped().getValue())
+ .setPacketsRxErrors(entry.getRxErrors().getValue())
+ .setPacketsTxErrors(entry.getTxErrors().getValue())
+ .setDurationSec(entry.getVersion() == OFVersion.OF_10 ? 0 : entry.getDurationSec())
+ .setDurationNano(entry.getVersion() == OFVersion.OF_10 ? 0 : entry.getDurationNsec())
+ .build();
- stats.add(stat);
+ stats.add(stat);
+ } catch (Exception e) {
+ LOG.warn("Unable to process port stats", e);
+ }
}
return Collections.unmodifiableSet(stats);