DistributedLeadershipManager tracks topic election candidates in addition to
leaders. Includes update to leaders CLI command to list candidates.
part of: Device Mastership store on top of LeadershipService
Reference: ONOS-76
Conflicts:
core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DistributedLeadershipManager.java
Change-Id: I587bb9e9ad16a9c8392969dde45001181053e5e6
diff --git a/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java b/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java
index ac0036e..c4f59be 100644
--- a/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java
+++ b/core/api/src/main/java/org/onosproject/cluster/LeadershipEvent.java
@@ -49,11 +49,10 @@
LEADER_BOOTED,
/**
- * Signifies that the list of candidates for leadership for a resource
- * has changed. If the change in the backups list is accompanied by a
- * change in the leader, the event is subsumed by the leadership change.
+ * Signifies that the list of candidates for leadership for a topic has
+ * changed.
*/
- LEADER_CANDIDATES_CHANGED
+ CANDIDATES_CHANGED
}
/**
diff --git a/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java b/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java
index 65ec687..15a198c 100644
--- a/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java
+++ b/core/api/src/main/java/org/onosproject/cluster/LeadershipService.java
@@ -17,6 +17,7 @@
import java.util.Map;
import java.util.Set;
+import java.util.List;
/**
* Service for leader election.
@@ -67,6 +68,19 @@
Map<String, Leadership> getLeaderBoard();
/**
+ * Returns the candidates for all known topics.
+ * @return A map of topics to lists of NodeIds.
+ */
+ Map<String, List<NodeId>> getCandidates();
+
+ /**
+ * Returns the candidates for a given topic.
+ * @param path topic
+ * @return A lists of NodeIds, which may be empty.
+ */
+ List<NodeId> getCandidates(String path);
+
+ /**
* Registers a event listener to be notified of leadership events.
* @param listener listener that will asynchronously notified of leadership events.
*/
diff --git a/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java b/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java
index 818edb9..02742d4 100644
--- a/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/cluster/LeadershipServiceAdapter.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.cluster;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -62,4 +63,14 @@
public void removeListener(LeadershipEventListener listener) {
}
+
+ @Override
+ public Map<String, List<NodeId>> getCandidates() {
+ return null;
+ }
+
+ @Override
+ public List<NodeId> getCandidates(String path) {
+ return null;
+ }
}