DeviceManager queries MastershipService

Change-Id: I0d391ecb7f0b1e4cced99cfe8083b46f74ee35bb
diff --git a/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java
index 8dcba64..179e214 100644
--- a/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/device/impl/DeviceManager.java
@@ -6,6 +6,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
+import org.onlab.onos.cluster.MastershipService;
 import org.onlab.onos.event.AbstractListenerRegistry;
 import org.onlab.onos.event.EventDeliveryService;
 import org.onlab.onos.net.Device;
@@ -29,6 +30,7 @@
 
 import java.util.List;
 
+import static org.onlab.onos.net.device.DeviceEvent.Type.*;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -58,6 +60,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected EventDeliveryService eventDispatcher;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected MastershipService mastershipService;
+
     @Activate
     public void activate() {
         eventDispatcher.addSink(DeviceEvent.class, listenerRegistry);
@@ -171,6 +176,10 @@
             // If there was a change of any kind, trigger role selection process.
             if (event != null) {
                 log.info("Device {} connected", deviceId);
+                if (event.type().equals(DEVICE_ADDED)) {
+                    MastershipRole role = mastershipService.requestRoleFor(deviceId);
+                    store.setRole(deviceId, role);
+                }
                 Device device = event.subject();
                 provider().roleChanged(device, store.getRole(device.id()));
                 post(event);