CORD-613 Adding ability to administratively enable or disable a port via CLI.
Currently uses the OpenFlow device provider to change portState.
Also fixes a bug in PortNumberCompleter.
Adds completion options to portstats for deviceId and portNumber.
Change-Id: Idcce775fe8bc5484fdd0e630bcb5026b85125478
diff --git a/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java b/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java
index 0a05d31..949f4f8 100644
--- a/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/net/PortNumberCompleter.java
@@ -15,15 +15,16 @@
*/
package org.onosproject.cli.net;
-import static com.google.common.base.Preconditions.checkArgument;
import static org.onlab.osgi.DefaultServiceDirectory.getService;
+import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import org.apache.karaf.shell.console.completer.ArgumentCompleter.ArgumentList;
import org.onosproject.cli.AbstractChoicesCompleter;
+import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.device.DeviceService;
@@ -37,13 +38,22 @@
@Override
protected List<String> choices() {
ArgumentList args = getArgumentList();
- checkArgument(args.getCursorArgumentIndex() >= 1,
- "Expects DeviceId as previous argument");
-
- String deviceIdStr = args.getArguments()[args.getCursorArgumentIndex() - 1];
- DeviceId deviceId = DeviceId.deviceId(deviceIdStr);
-
+ //parse argument list for deviceId
DeviceService deviceService = getService(DeviceService.class);
+ Device dev = null;
+ for (String str : args.getArguments()) {
+ if (str.contains(":")) {
+ dev = deviceService.getDevice(DeviceId.deviceId(str));
+ if (dev != null) {
+ break;
+ }
+ }
+ }
+ if (dev == null) {
+ return Collections.singletonList("Missing device");
+ }
+ DeviceId deviceId = dev.id();
+
return StreamSupport.stream(deviceService.getPorts(deviceId).spliterator(), false)
.map(port -> port.number().toString())
.collect(Collectors.toList());