MasteshipService, store, and CLI commands use RoleInfo
Change-Id: Ibc569498a67d33d088e5c9f89c6bb1f45eadc26e
diff --git a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java
index 28ba049..aaf056c 100644
--- a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java
+++ b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java
@@ -2,9 +2,6 @@
import static org.onlab.onos.mastership.MastershipEvent.Type.MASTER_CHANGED;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -16,6 +13,7 @@
import org.apache.felix.scr.annotations.Service;
import org.onlab.onos.cluster.ClusterService;
import org.onlab.onos.cluster.NodeId;
+import org.onlab.onos.cluster.RoleInfo;
import org.onlab.onos.mastership.MastershipEvent;
import org.onlab.onos.mastership.MastershipStore;
import org.onlab.onos.mastership.MastershipStoreDelegate;
@@ -161,20 +159,11 @@
@Override
- public List<NodeId> getNodes(DeviceId deviceId) {
- List<NodeId> nodes = new LinkedList<>();
-
- //add current master to head - if there is one.
+ public RoleInfo getNodes(DeviceId deviceId) {
roleMap.lock(deviceId);
try {
RoleValue rv = getRoleValue(deviceId);
- NodeId master = rv.get(MASTER);
- if (master != null) {
- nodes.add(master);
- }
- //We ignore NONE nodes.
- nodes.addAll(rv.nodesOfRole(STANDBY));
- return Collections.unmodifiableList(nodes);
+ return rv.roleInfo();
} finally {
roleMap.unlock(deviceId);
}
diff --git a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java
index 51dd293..1ccee6b 100644
--- a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java
+++ b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java
@@ -7,8 +7,8 @@
import java.util.Map;
import org.onlab.onos.cluster.NodeId;
+import org.onlab.onos.cluster.RoleInfo;
import org.onlab.onos.net.MastershipRole;
-import org.onlab.onos.store.common.RoleInfo;
/**
* A structure that holds node mastership roles associated with a
diff --git a/core/store/hz/common/src/main/java/org/onlab/onos/store/common/RoleInfo.java b/core/store/hz/common/src/main/java/org/onlab/onos/store/common/RoleInfo.java
deleted file mode 100644
index 904488b..0000000
--- a/core/store/hz/common/src/main/java/org/onlab/onos/store/common/RoleInfo.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.onlab.onos.store.common;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-
-import org.onlab.onos.cluster.NodeId;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * A container for detailed role information for a device,
- * within the current cluster. Role attributes include current
- * master and a preference-ordered list of backup nodes.
- */
-public class RoleInfo {
- private final NodeId master;
- private final List<NodeId> backups;
-
- public RoleInfo(NodeId master, List<NodeId> backups) {
- this.master = master;
- this.backups = new LinkedList<>();
-
- this.backups.addAll(checkNotNull(backups));
- }
-
- public NodeId master() {
- return master;
- }
-
- public List<NodeId> backups() {
- return Collections.unmodifiableList(backups);
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == null) {
- return false;
- }
- if (!(other instanceof RoleInfo)) {
- return false;
- }
- RoleInfo that = (RoleInfo) other;
- if (!Objects.equals(this.master, that.master)) {
- return false;
- }
- if (!Objects.equals(this.backups, that.backups)) {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(master, backups.hashCode());
- }
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("master: \n\t").append(master).append("\n");
- builder.append("backups: \n");
- for (NodeId n : backups) {
- builder.append("\t").append(n).append("\n");
- }
- return builder.toString();
- }
-}
diff --git a/core/store/hz/common/src/test/java/org/onlab/onos/store/common/RoleInfoTest.java b/core/store/hz/common/src/test/java/org/onlab/onos/store/common/RoleInfoTest.java
deleted file mode 100644
index c7e43ff..0000000
--- a/core/store/hz/common/src/test/java/org/onlab/onos/store/common/RoleInfoTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.onlab.onos.store.common;
-
-import java.util.List;
-
-import org.junit.Test;
-import org.onlab.onos.cluster.NodeId;
-
-import com.google.common.collect.Lists;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-/**
- * Test to check behavioral correctness of the RoleInfo structure.
- */
-public class RoleInfoTest {
- private static final NodeId N1 = new NodeId("n1");
- private static final NodeId N2 = new NodeId("n2");
- private static final NodeId N3 = new NodeId("n3");
- private static final NodeId N4 = new NodeId("n4");
-
- private static final List<NodeId> BKUP1 = Lists.newArrayList(N2, N3);
- private static final List<NodeId> BKUP2 = Lists.newArrayList(N3, N4);
-
- private static final RoleInfo RI1 = new RoleInfo(N1, BKUP1);
- private static final RoleInfo RI2 = new RoleInfo(N1, BKUP2);
- private static final RoleInfo RI3 = new RoleInfo(N2, BKUP1);
-
- @Test
- public void basics() {
- assertEquals("wrong master", new NodeId("n1"), RI1.master());
- System.out.println(RI1.toString());
- assertEquals("wrong Backups", RI1.backups(), Lists.newArrayList(N2, N3));
-
- assertNotEquals("equals() broken", RI1, RI2);
- assertNotEquals("equals() broken", RI1, RI3);
-
- List<NodeId> bkup3 = Lists.newArrayList(N3, new NodeId("n4"));
- assertEquals("equals() broken", new RoleInfo(N1, bkup3), RI2);
- }
-}