Enhanced the CLIs.
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DeviceIdCompleter.java b/cli/src/main/java/org/onlab/onos/cli/net/DeviceIdCompleter.java
index 2614d51..5d38bca 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/DeviceIdCompleter.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DeviceIdCompleter.java
@@ -24,7 +24,7 @@
Iterator<Device> it = service.getDevices().iterator();
SortedSet<String> strings = delegate.getStrings();
while (it.hasNext()) {
- strings.add(it.next().id().uri().toString());
+ strings.add(it.next().id().toString());
}
// Now let the completer do the work for figuring out what to offer.
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java
index f09e39a..95f23af 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DevicePortsListCommand.java
@@ -2,10 +2,15 @@
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
-import org.onlab.onos.cli.AbstractShellCommand;
+import org.onlab.onos.net.Device;
import org.onlab.onos.net.Port;
import org.onlab.onos.net.device.DeviceService;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
import static org.onlab.onos.net.DeviceId.deviceId;
/**
@@ -13,21 +18,42 @@
*/
@Command(scope = "onos", name = "ports",
description = "Lists all ports of a device")
-public class DevicePortsListCommand extends AbstractShellCommand {
+public class DevicePortsListCommand extends DevicesListCommand {
- private static final String FMT = "port=%s, state=%s";
+ private static final String FMT = " port=%s, state=%s";
@Argument(index = 0, name = "deviceId", description = "Device ID",
- required = true, multiValued = false)
- String deviceId = null;
+ required = false, multiValued = false)
+ String uri = null;
+
+ private static final Comparator<Port> PORT_COMPARATOR = new Comparator<Port>() {
+ @Override
+ public int compare(Port p1, Port p2) {
+ long delta = p1.number().toLong() - p2.number().toLong();
+ return delta == 0 ? 0 : (delta < 0 ? -1 : +1);
+ }
+ };
@Override
protected Object doExecute() throws Exception {
DeviceService service = getService(DeviceService.class);
- Iterable<Port> ports = service.getPorts(deviceId(deviceId));
- for (Port port : ports) {
- print(FMT, port.number(), port.isEnabled() ? "enabled" : "disabled");
+ if (uri == null) {
+ for (Device device : service.getDevices()) {
+ printDevicePorts(service, device);
+ }
+ } else {
+ printDevicePorts(service, service.getDevice(deviceId(uri)));
}
return null;
}
+
+ private void printDevicePorts(DeviceService service, Device device) {
+ List<Port> ports = new ArrayList<>(service.getPorts(device.id()));
+ Collections.sort(ports, PORT_COMPARATOR);
+ printDevice(device, service.isAvailable(device.id()));
+ for (Port port : ports) {
+ print(FMT, port.number(), port.isEnabled() ? "enabled" : "disabled");
+ }
+ }
+
}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java
index c7e2c8c..21bb892 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DevicesListCommand.java
@@ -13,14 +13,27 @@
public class DevicesListCommand extends AbstractShellCommand {
private static final String FMT =
- "id=%s, type=%s, mfr=%s, hw=%s, sw=%s, serial=%s";
+ "id=%s, available=%s, type=%s, mfr=%s, hw=%s, sw=%s, serial=%s";
@Override
protected Object doExecute() throws Exception {
- for (Device device : getService(DeviceService.class).getDevices()) {
- print(FMT, device.id().uri(), device.type(), device.manufacturer(),
- device.hwVersion(), device.swVersion(), device.serialNumber());
+ DeviceService service = getService(DeviceService.class);
+ for (Device device : service.getDevices()) {
+ printDevice(device, service.isAvailable(device.id()));
}
return null;
}
+
+ /**
+ * Prints information about the specified device.
+ *
+ * @param device infrastructure device
+ * @param isAvailable true of device is available
+ */
+ protected void printDevice(Device device, boolean isAvailable) {
+ print(FMT, device.id(), isAvailable, device.type(),
+ device.manufacturer(), device.hwVersion(), device.swVersion(),
+ device.serialNumber());
+ }
+
}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java
index d94d547..7197361 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java
@@ -27,8 +27,8 @@
Iterable<Link> links = deviceId != null ?
service.getDeviceLinks(deviceId(deviceId)) : service.getLinks();
for (Link link : links) {
- print(FMT, link.src().deviceId().uri(), link.src().port(),
- link.dst().deviceId().uri(), link.dst().port(), link.type());
+ print(FMT, link.src().deviceId(), link.src().port(),
+ link.dst().deviceId(), link.dst().port(), link.type());
}
return null;
}