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/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java
index 782b389..c782530 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleClusterStore.java
@@ -62,4 +62,8 @@
         return ControllerNode.State.ACTIVE;
     }
 
+    @Override
+    public void removeNode(NodeId nodeId) {
+    }
+
 }
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
index e416756..78d6a4c 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceStore.java
@@ -248,23 +248,6 @@
     }
 
     @Override
-    public MastershipRole getRole(DeviceId deviceId) {
-        MastershipRole role = roles.get(deviceId);
-        return role != null ? role : MastershipRole.NONE;
-    }
-
-    @Override
-    public DeviceEvent setRole(DeviceId deviceId, MastershipRole role) {
-        synchronized (this) {
-            Device device = getDevice(deviceId);
-            checkArgument(device != null, DEVICE_NOT_FOUND, deviceId);
-            MastershipRole oldRole = roles.put(deviceId, role);
-            return oldRole == role ? null :
-                    new DeviceEvent(DEVICE_MASTERSHIP_CHANGED, device, null);
-        }
-    }
-
-    @Override
     public DeviceEvent removeDevice(DeviceId deviceId) {
         synchronized (this) {
             roles.remove(deviceId);
diff --git a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java
index 371a257..24480c6 100644
--- a/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java
+++ b/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleMastershipStore.java
@@ -38,7 +38,7 @@
     private ControllerNode instance;
 
     protected final ConcurrentMap<DeviceId, MastershipRole> roleMap =
-            new ConcurrentHashMap<DeviceId, MastershipRole>();
+            new ConcurrentHashMap<>();
 
     @Activate
     public void activate() {
@@ -53,7 +53,7 @@
 
     @Override
     public MastershipEvent setRole(NodeId nodeId, DeviceId deviceId,
-            MastershipRole role) {
+                                   MastershipRole role) {
         if (roleMap.get(deviceId) == null) {
             return null;
         }
@@ -62,14 +62,6 @@
     }
 
     @Override
-    public MastershipEvent addOrUpdateDevice(NodeId instance,
-            DeviceId deviceId, MastershipRole role) {
-        //TODO refine when we do listeners
-        roleMap.put(deviceId, role);
-        return null;
-    }
-
-    @Override
     public NodeId getMaster(DeviceId deviceId) {
         return instance.id();
     }
@@ -80,6 +72,11 @@
     }
 
     @Override
+    public MastershipRole requestRole(DeviceId deviceId) {
+        return getRole(instance.id(), deviceId);
+    }
+
+    @Override
     public MastershipRole getRole(NodeId nodeId, DeviceId deviceId) {
         MastershipRole role = roleMap.get(deviceId);
         if (role == null) {