blob: f34f97e6397adccb4619c1ab44e5581d30b0d894 [file] [log] [blame]
tom6d2a43e2014-09-08 01:50:20 -07001package org.onlab.onos.cli.net;
2
3import org.apache.karaf.shell.commands.Command;
4import org.onlab.onos.cli.AbstractShellCommand;
tom91c7bd02014-09-25 22:50:44 -07005import org.onlab.onos.cli.Comparators;
tom6d2a43e2014-09-08 01:50:20 -07006import org.onlab.onos.net.Device;
7import org.onlab.onos.net.device.DeviceService;
8
tomd79f7ec2014-09-08 13:29:18 -07009import java.util.Collections;
tomd79f7ec2014-09-08 13:29:18 -070010import java.util.List;
11
12import static com.google.common.collect.Lists.newArrayList;
13
tom6d2a43e2014-09-08 01:50:20 -070014/**
15 * Lists all infrastructure devices.
16 */
17@Command(scope = "onos", name = "devices",
18 description = "Lists all infrastructure devices")
19public class DevicesListCommand extends AbstractShellCommand {
20
21 private static final String FMT =
tomc290a122014-09-08 14:27:13 -070022 "id=%s, available=%s, role=%s, type=%s, mfr=%s, hw=%s, sw=%s, serial=%s";
tom6d2a43e2014-09-08 01:50:20 -070023
24 @Override
tom0872a172014-09-23 11:24:26 -070025 protected void execute() {
tomcaf3bf72014-09-23 13:20:53 -070026 DeviceService service = get(DeviceService.class);
tomd79f7ec2014-09-08 13:29:18 -070027 for (Device device : getSortedDevices(service)) {
tomc290a122014-09-08 14:27:13 -070028 printDevice(service, device);
tom6d2a43e2014-09-08 01:50:20 -070029 }
tom6d2a43e2014-09-08 01:50:20 -070030 }
tomff7eb7c2014-09-08 12:49:03 -070031
32 /**
tomd79f7ec2014-09-08 13:29:18 -070033 * Returns the list of devices sorted using the device ID URIs.
34 *
35 * @param service device service
36 * @return sorted device list
37 */
tom53945d52014-10-07 11:01:36 -070038 protected static List<Device> getSortedDevices(DeviceService service) {
tomd79f7ec2014-09-08 13:29:18 -070039 List<Device> devices = newArrayList(service.getDevices());
tom1380eee2014-09-24 09:22:02 -070040 Collections.sort(devices, Comparators.ELEMENT_COMPARATOR);
tomd79f7ec2014-09-08 13:29:18 -070041 return devices;
42 }
43
44 /**
tomff7eb7c2014-09-08 12:49:03 -070045 * Prints information about the specified device.
46 *
tomc290a122014-09-08 14:27:13 -070047 * @param service device service
48 * @param device infrastructure device
tomff7eb7c2014-09-08 12:49:03 -070049 */
tomc290a122014-09-08 14:27:13 -070050 protected void printDevice(DeviceService service, Device device) {
tom9eb57fb2014-09-11 19:42:38 -070051 if (device != null) {
52 print(FMT, device.id(), service.isAvailable(device.id()),
53 service.getRole(device.id()), device.type(),
54 device.manufacturer(), device.hwVersion(), device.swVersion(),
55 device.serialNumber());
56 }
tomff7eb7c2014-09-08 12:49:03 -070057 }
58
tom6d2a43e2014-09-08 01:50:20 -070059}