Create local storage for topic candidates mapping. This also includes:
- using Optional in Leadership, and some commenting.
- using MutableBooleans + compute()
part of: Device Mastership store on top of LeadershipService
Reference: ONOS-76
Conflicts:
core/api/src/main/java/org/onosproject/cluster/LeadershipService.java
core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DistributedLeadershipManager.java
Change-Id: I7f090abb123cf23bb5126a935a6e72be00f3e3ce
diff --git a/cli/src/main/java/org/onosproject/cli/net/LeaderCommand.java b/cli/src/main/java/org/onosproject/cli/net/LeaderCommand.java
index 07b5b2b..bd5ba3a 100644
--- a/cli/src/main/java/org/onosproject/cli/net/LeaderCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/LeaderCommand.java
@@ -85,7 +85,7 @@
}
private void displayCandidates(Map<String, Leadership> leaderBoard,
- Map<String, List<NodeId>> candidates) {
+ Map<String, Leadership> candidates) {
print("--------------------------------------------------------------");
print(FMT_C, "Topic", "Leader", "Candidates");
print("--------------------------------------------------------------");
@@ -94,13 +94,13 @@
.stream()
.sorted(leadershipComparator)
.forEach(l -> {
- List<NodeId> list = candidates.get(l.topic());
+ List<NodeId> list = candidates.get(l.topic()).candidates();
print(FMT_C,
l.topic(),
l.leader(),
- list.remove(0).toString());
+ list.get(0).toString());
// formatting hacks to get it into a table
- list.forEach(n -> print(FMT_C, " ", " ", n));
+ list.subList(1, list.size()).forEach(n -> print(FMT_C, " ", " ", n));
print(FMT_C, " ", " ", " ");
});
print("--------------------------------------------------------------");
@@ -139,7 +139,7 @@
print("%s", json(leaderBoard));
} else {
if (showCandidates) {
- Map<String, List<NodeId>> candidates = leaderService.getCandidates();
+ Map<String, Leadership> candidates = leaderService.getCandidates();
displayCandidates(leaderBoard, candidates);
} else {
displayLeaders(leaderBoard);