Added a command-line to set device mastership role.
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java
new file mode 100644
index 0000000..32da169
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java
@@ -0,0 +1,33 @@
+package org.onlab.onos.cli.net;
+
+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.DeviceId;
+import org.onlab.onos.net.MastershipRole;
+import org.onlab.onos.net.device.DeviceAdminService;
+
+/**
+ * Sets role of the controller node for the given infrastructure device.
+ */
+@Command(scope = "onos", name = "device-role",
+ description = "Sets role of the controller node for the given infrastructure device")
+public class DeviceRoleCommand extends AbstractShellCommand {
+
+ @Argument(index = 0, name = "uri", description = "Device ID",
+ required = true, multiValued = false)
+ String uri = null;
+
+ @Argument(index = 1, name = "role", description = "Mastership role",
+ required = true, multiValued = false)
+ String role = null;
+
+ @Override
+ protected Object doExecute() throws Exception {
+ MastershipRole mastershipRole = MastershipRole.valueOf(role.toUpperCase());
+ getService(DeviceAdminService.class).setRole(DeviceId.deviceId(uri),
+ mastershipRole);
+ return null;
+ }
+
+}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/RoleCompleter.java b/cli/src/main/java/org/onlab/onos/cli/net/RoleCompleter.java
new file mode 100644
index 0000000..b540fca
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/net/RoleCompleter.java
@@ -0,0 +1,27 @@
+package org.onlab.onos.cli.net;
+
+import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.onlab.onos.net.MastershipRole;
+
+import java.util.List;
+import java.util.SortedSet;
+
+/**
+ * Device mastership role completer.
+ */
+public class RoleCompleter implements Completer {
+ @Override
+ public int complete(String buffer, int cursor, List<String> candidates) {
+ // Delegate string completer
+ StringsCompleter delegate = new StringsCompleter();
+ SortedSet<String> strings = delegate.getStrings();
+ strings.add(MastershipRole.MASTER.toString().toLowerCase());
+ strings.add(MastershipRole.STANDBY.toString().toLowerCase());
+ strings.add(MastershipRole.NONE.toString().toLowerCase());
+
+ // Now let the completer do the work for figuring out what to offer.
+ return delegate.complete(buffer, cursor, candidates);
+ }
+
+}