blob: 6ecb482a2260d9d7d174c2a2949927bd17698459 [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;
5import org.onlab.onos.net.Device;
6import org.onlab.onos.net.device.DeviceService;
7
tomd79f7ec2014-09-08 13:29:18 -07008import java.util.Collections;
tomd79f7ec2014-09-08 13:29:18 -07009import java.util.List;
10
11import static com.google.common.collect.Lists.newArrayList;
12
tom6d2a43e2014-09-08 01:50:20 -070013/**
14 * Lists all infrastructure devices.
15 */
16@Command(scope = "onos", name = "devices",
17 description = "Lists all infrastructure devices")
18public class DevicesListCommand extends AbstractShellCommand {
19
20 private static final String FMT =
tomc290a122014-09-08 14:27:13 -070021 "id=%s, available=%s, role=%s, type=%s, mfr=%s, hw=%s, sw=%s, serial=%s";
tom6d2a43e2014-09-08 01:50:20 -070022
23 @Override
tom0872a172014-09-23 11:24:26 -070024 protected void execute() {
tomcaf3bf72014-09-23 13:20:53 -070025 DeviceService service = get(DeviceService.class);
tomd79f7ec2014-09-08 13:29:18 -070026 for (Device device : getSortedDevices(service)) {
tomc290a122014-09-08 14:27:13 -070027 printDevice(service, device);
tom6d2a43e2014-09-08 01:50:20 -070028 }
tom6d2a43e2014-09-08 01:50:20 -070029 }
tomff7eb7c2014-09-08 12:49:03 -070030
31 /**
tomd79f7ec2014-09-08 13:29:18 -070032 * Returns the list of devices sorted using the device ID URIs.
33 *
34 * @param service device service
35 * @return sorted device list
36 */
37 protected List<Device> getSortedDevices(DeviceService service) {
38 List<Device> devices = newArrayList(service.getDevices());
tom1380eee2014-09-24 09:22:02 -070039 Collections.sort(devices, Comparators.ELEMENT_COMPARATOR);
tomd79f7ec2014-09-08 13:29:18 -070040 return devices;
41 }
42
43 /**
tomff7eb7c2014-09-08 12:49:03 -070044 * Prints information about the specified device.
45 *
tomc290a122014-09-08 14:27:13 -070046 * @param service device service
47 * @param device infrastructure device
tomff7eb7c2014-09-08 12:49:03 -070048 */
tomc290a122014-09-08 14:27:13 -070049 protected void printDevice(DeviceService service, Device device) {
tom9eb57fb2014-09-11 19:42:38 -070050 if (device != null) {
51 print(FMT, device.id(), service.isAvailable(device.id()),
52 service.getRole(device.id()), device.type(),
53 device.manufacturer(), device.hwVersion(), device.swVersion(),
54 device.serialNumber());
55 }
tomff7eb7c2014-09-08 12:49:03 -070056 }
57
tom6d2a43e2014-09-08 01:50:20 -070058}