Added graceful shutdown for upstart service.
Reworked slightly the mastership & device managers and stores to make it work (sort-of) in the distributed env.
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
index 60a203a..dfb8283 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/DeviceRoleCommand.java
@@ -3,9 +3,11 @@
 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.cluster.MastershipAdminService;
+import org.onlab.onos.cluster.NodeId;
 import org.onlab.onos.net.MastershipRole;
-import org.onlab.onos.net.device.DeviceAdminService;
+
+import static org.onlab.onos.net.DeviceId.deviceId;
 
 /**
  * Sets role of the controller node for the given infrastructure device.
@@ -18,15 +20,19 @@
               required = true, multiValued = false)
     String uri = null;
 
-    @Argument(index = 1, name = "role", description = "Mastership role",
+    @Argument(index = 1, name = "node", description = "Node ID",
+              required = true, multiValued = false)
+    String node = null;
+
+    @Argument(index = 2, name = "role", description = "Mastership role",
               required = true, multiValued = false)
     String role = null;
 
     @Override
     protected void execute() {
+        MastershipAdminService service = get(MastershipAdminService.class);
         MastershipRole mastershipRole = MastershipRole.valueOf(role.toUpperCase());
-        get(DeviceAdminService.class).setRole(DeviceId.deviceId(uri),
-                                                     mastershipRole);
+        service.setRole(new NodeId(node), deviceId(uri), mastershipRole);
     }
 
 }