vertical feedback path for Role replies
Change-Id: I31bdb85f90901ec79147adeea0df8ceae00ed1dc
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 8aa3d77..1a96fca 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
@@ -226,23 +226,31 @@
}
@Override
- public void roleAssertFailed(Dpid dpid, RoleState role) {
- MastershipRole failed;
- switch (role) {
+ public void receivedRoleReply(Dpid dpid, RoleState requested, RoleState response) {
+ MastershipRole request = roleOf(requested);
+ MastershipRole reply = roleOf(response);
+
+ providerService.receivedRoleReply(deviceId(uri(dpid)), request, reply);
+ }
+
+ /**
+ * Translates a RoleState to the corresponding MastershipRole.
+ *
+ * @param response
+ * @return a MastershipRole
+ */
+ private MastershipRole roleOf(RoleState response) {
+ switch (response) {
case MASTER:
- failed = MastershipRole.MASTER;
- break;
+ return MastershipRole.MASTER;
case EQUAL:
- failed = MastershipRole.STANDBY;
- break;
+ return MastershipRole.STANDBY;
case SLAVE:
- failed = MastershipRole.NONE;
- break;
+ return MastershipRole.NONE;
default:
- LOG.warn("unknown role {}", role);
- return;
+ LOG.warn("unknown role {}", response);
+ return null;
}
- providerService.unableToAssertRole(deviceId(uri(dpid)), failed);
}
/**
diff --git a/providers/openflow/device/src/test/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProviderTest.java b/providers/openflow/device/src/test/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProviderTest.java
index e7e57b2..76d32e4 100644
--- a/providers/openflow/device/src/test/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProviderTest.java
+++ b/providers/openflow/device/src/test/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProviderTest.java
@@ -136,12 +136,13 @@
}
@Test
- public void roleAssertFailed() {
- controller.listener.roleAssertFailed(DPID1, RoleState.MASTER);
+ public void receivedRoleReply() {
+ // check translation capabilities
+ controller.listener.receivedRoleReply(DPID1, RoleState.MASTER, RoleState.MASTER);
assertEquals("wrong role reported", DPID1, registry.roles.get(MASTER));
- controller.listener.roleAssertFailed(DPID1, RoleState.EQUAL);
+ controller.listener.receivedRoleReply(DPID1, RoleState.EQUAL, RoleState.MASTER);
assertEquals("wrong role reported", DPID1, registry.roles.get(STANDBY));
- controller.listener.roleAssertFailed(DPID1, RoleState.SLAVE);
+ controller.listener.receivedRoleReply(DPID1, RoleState.SLAVE, RoleState.MASTER);
assertEquals("wrong role reported", DPID1, registry.roles.get(NONE));
}
@@ -210,8 +211,9 @@
}
@Override
- public void unableToAssertRole(DeviceId deviceId, MastershipRole role) {
- roles.put(role, Dpid.dpid(deviceId.uri()));
+ public void receivedRoleReply(DeviceId deviceId,
+ MastershipRole requested, MastershipRole response) {
+ roles.put(requested, Dpid.dpid(deviceId.uri()));
}
}
@@ -372,12 +374,12 @@
}
@Override
- public void returnRoleAssertFailure(RoleState role) {
+ public boolean isOptical() {
+ return false;
}
@Override
- public boolean isOptical() {
- return false;
+ public void returnRoleReply(RoleState requested, RoleState reponse) {
}
}