From 820f034f98ad41bfdaee93a8a69cbb3d8f904522 Mon Sep 17 00:00:00 2001 From: Yuta HIGUCHI Date: Tue, 28 Nov 2017 11:27:42 -0800 Subject: [PATCH] Fix few commands handling PortNumber as args. - should now be able to handle named ports Change-Id: Ic913f2ac8e1cfd7a0fa2a7631bd5c207b9747eee --- .../cli/net/DevicePortStateCommand.java | 4 +-- .../cli/net/DevicePortStatsCommand.java | 31 +++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/cli/src/main/java/org/onosproject/cli/net/DevicePortStateCommand.java b/cli/src/main/java/org/onosproject/cli/net/DevicePortStateCommand.java index 490d514d92..7cd177fcc2 100644 --- a/cli/src/main/java/org/onosproject/cli/net/DevicePortStateCommand.java +++ b/cli/src/main/java/org/onosproject/cli/net/DevicePortStateCommand.java @@ -37,7 +37,7 @@ public class DevicePortStateCommand extends AbstractShellCommand { @Argument(index = 1, name = "portNumber", description = "Port Number", required = true, multiValued = false) - Integer portNumber = null; + String portNumber = null; @Argument(index = 2, name = "portState", description = "Desired State. Either \"enable\" or \"disable\".", @@ -53,7 +53,7 @@ public class DevicePortStateCommand extends AbstractShellCommand { print(" %s", "Device does not exist"); return; } - PortNumber pnum = PortNumber.portNumber(portNumber); + PortNumber pnum = PortNumber.fromString(portNumber); Port p = deviceService.getPort(dev.id(), pnum); if (p == null) { print(" %s", "Port does not exist"); diff --git a/cli/src/main/java/org/onosproject/cli/net/DevicePortStatsCommand.java b/cli/src/main/java/org/onosproject/cli/net/DevicePortStatsCommand.java index 2aa631f95f..eb07071494 100644 --- a/cli/src/main/java/org/onosproject/cli/net/DevicePortStatsCommand.java +++ b/cli/src/main/java/org/onosproject/cli/net/DevicePortStatsCommand.java @@ -18,6 +18,7 @@ package org.onosproject.cli.net; import static org.onosproject.cli.net.DevicesListCommand.getSortedDevices; import static org.onosproject.net.DeviceId.deviceId; +import java.util.Comparator; import java.util.List; import java.util.concurrent.TimeUnit; @@ -28,6 +29,7 @@ import org.apache.karaf.shell.commands.Option; import org.onosproject.cli.AbstractShellCommand; import org.onosproject.net.Device; import org.onosproject.net.DeviceId; +import org.onosproject.net.PortNumber; import org.onosproject.net.device.DeviceService; import org.onosproject.net.device.PortStatistics; @@ -60,7 +62,9 @@ public class DevicePortStatsCommand extends AbstractShellCommand { @Argument(index = 1, name = "portNumber", description = "Port Number", required = false, multiValued = false) - Integer portNumber = null; + String portNumberStr = null; + + PortNumber portNumber = null; private static final String FORMAT = " port=%s, pktRx=%s, pktTx=%s, bytesRx=%s, bytesTx=%s, pktRxDrp=%s, pktTxDrp=%s, Dur=%s"; @@ -69,6 +73,10 @@ public class DevicePortStatsCommand extends AbstractShellCommand { protected void execute() { DeviceService deviceService = get(DeviceService.class); + if (portNumberStr != null) { + portNumber = PortNumber.fromString(portNumberStr); + } + if (uri == null) { for (Device d : getSortedDevices(deviceService)) { if (delta) { @@ -106,17 +114,22 @@ public class DevicePortStatsCommand extends AbstractShellCommand { private void printPortStats(DeviceId deviceId, Iterable portStats) { print("deviceId=%s", deviceId); for (PortStatistics stat : sortByPort(portStats)) { - if (portNumber != null && stat.port() != portNumber) { + if (isIrrelevant(stat)) { continue; } if (nonzero && stat.isZero()) { continue; } - print(FORMAT, stat.port(), stat.packetsReceived(), stat.packetsSent(), stat.bytesReceived(), + print(FORMAT, stat.portNumber(), stat.packetsReceived(), stat.packetsSent(), stat.bytesReceived(), stat.bytesSent(), stat.packetsRxDropped(), stat.packetsTxDropped(), stat.durationSec()); } } + private boolean isIrrelevant(PortStatistics stat) { + // TODO revisit logical port (e.g., ALL) handling + return portNumber != null && !portNumber.equals(stat.portNumber()); + } + /** * Prints Port delta statistics. * @@ -128,7 +141,7 @@ public class DevicePortStatsCommand extends AbstractShellCommand { + " rateRx=%s, rateTx=%s, pktRxDrp=%s, pktTxDrp=%s, interval=%s"; print("deviceId=%s", deviceId); for (PortStatistics stat : sortByPort(portStats)) { - if (portNumber != null && stat.port() != portNumber) { + if (isIrrelevant(stat)) { continue; } if (nonzero && stat.isZero()) { @@ -138,7 +151,7 @@ public class DevicePortStatsCommand extends AbstractShellCommand { (((float) stat.durationNano()) / TimeUnit.SECONDS.toNanos(1)); float rateRx = stat.bytesReceived() * 8 / duration; float rateTx = stat.bytesSent() * 8 / duration; - print(formatDelta, stat.port(), + print(formatDelta, stat.portNumber(), stat.packetsReceived(), stat.packetsSent(), stat.bytesReceived(), @@ -167,7 +180,7 @@ public class DevicePortStatsCommand extends AbstractShellCommand { print("|---------------------------------------------------------------------------------------------------|"); for (PortStatistics stat : sortByPort(portStats)) { - if (portNumber != null && stat.port() != portNumber) { + if (isIrrelevant(stat)) { continue; } if (nonzero && stat.isZero()) { @@ -177,7 +190,7 @@ public class DevicePortStatsCommand extends AbstractShellCommand { (((float) stat.durationNano()) / TimeUnit.SECONDS.toNanos(1)); float rateRx = duration > 0 ? stat.bytesReceived() * 8 / duration : 0; float rateTx = duration > 0 ? stat.bytesSent() * 8 / duration : 0; - print(formatDeltaTable, stat.port(), + print(formatDeltaTable, stat.portNumber(), humanReadable(stat.packetsReceived()), humanReadable(stat.bytesReceived()), humanReadableBps(rateRx), @@ -225,8 +238,8 @@ public class DevicePortStatsCommand extends AbstractShellCommand { private static List sortByPort(Iterable portStats) { List portStatsList = Lists.newArrayList(portStats); - portStatsList.sort((PortStatistics o1, PortStatistics o2) -> - o1.port() - o2.port()); + + portStatsList.sort(Comparator.comparing(ps -> ps.portNumber().toLong())); return portStatsList; } }