role assertion failure is returned to DeviceProvider

Change-Id: Ic5189327c85fa37b3bbfa07d0e285cabae363712
diff --git a/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
index 1271bc8..8958fb6 100644
--- a/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -142,6 +142,26 @@
             providerService.portStatusChanged(deviceId(uri(dpid)), portDescription);
         }
 
+        @Override
+        public void roleAssertFailed(Dpid dpid, RoleState role) {
+            MastershipRole failed;
+            switch (role) {
+                case MASTER:
+                    failed = MastershipRole.MASTER;
+                    break;
+                case EQUAL:
+                    failed = MastershipRole.STANDBY;
+                    break;
+                case SLAVE:
+                    failed = MastershipRole.NONE;
+                    break;
+                default:
+                    LOG.warn("unknown role {}", role);
+                    return;
+            }
+            providerService.unableToAssertRole(deviceId(uri(dpid)), failed);
+        }
+
         /**
          * Builds a list of port descriptions for a given list of ports.
          *
@@ -169,6 +189,7 @@
                     !port.getConfig().contains(OFPortConfig.PORT_DOWN);
             return new DefaultPortDescription(portNo, enabled);
         }
+
     }
 
 }