[ONOS-7757] Support onos-local and embedded cluster configurations
- Refactor cluster.json to support internal/external nodes ('controller' and 'storage')
- Bootstrap embedded partitions when 'storage' nodes not present
- Update onos-gen-config script to generate cluster.json based on environment variables
- Update setup scenario to ignore missing $OCC# environment variables
Change-Id: Ia93b64e13d7a7c35ed712da4c681425e3ccf9fe9
diff --git a/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java b/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java
index 8f7d960..e1f664e 100644
--- a/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java
+++ b/core/api/src/main/java/org/onosproject/cluster/ClusterMetadata.java
@@ -44,7 +44,8 @@
private final ProviderId providerId;
private final String name;
private final ControllerNode localNode;
- private final Set<Node> nodes;
+ private final Set<ControllerNode> controllerNodes;
+ private final Set<Node> storageNodes;
public static final Funnel<ClusterMetadata> HASH_FUNNEL = new Funnel<ClusterMetadata>() {
@Override
@@ -58,22 +59,26 @@
providerId = null;
name = null;
localNode = null;
- nodes = null;
+ controllerNodes = null;
+ storageNodes = null;
}
public ClusterMetadata(
ProviderId providerId,
String name,
ControllerNode localNode,
- Set<Node> nodes) {
+ Set<ControllerNode> controllerNodes,
+ Set<Node> storageNodes) {
this.providerId = checkNotNull(providerId);
this.name = checkNotNull(name);
this.localNode = localNode;
- this.nodes = ImmutableSet.copyOf(checkNotNull(nodes));
+ this.controllerNodes = ImmutableSet.copyOf(checkNotNull(controllerNodes));
+ this.storageNodes = ImmutableSet.copyOf(checkNotNull(storageNodes));
}
- public ClusterMetadata(String name, ControllerNode localNode, Set<Node> nodes) {
- this(new ProviderId("none", "none"), name, localNode, nodes);
+ public ClusterMetadata(
+ String name, ControllerNode localNode, Set<ControllerNode> controllerNodes, Set<Node> storageNodes) {
+ this(new ProviderId("none", "none"), name, localNode, controllerNodes, storageNodes);
}
@Override
@@ -102,8 +107,17 @@
* Returns the collection of {@link org.onosproject.cluster.ControllerNode nodes} that make up the cluster.
* @return cluster nodes
*/
+ @Deprecated
public Collection<ControllerNode> getNodes() {
- return (Collection) nodes;
+ return getControllerNodes();
+ }
+
+ /**
+ * Returns the collection of {@link org.onosproject.cluster.ControllerNode nodes} that make up the cluster.
+ * @return controller nodes
+ */
+ public Collection<ControllerNode> getControllerNodes() {
+ return controllerNodes;
}
/**
@@ -112,7 +126,7 @@
* @return the collection of storage nodes
*/
public Collection<Node> getStorageNodes() {
- return nodes;
+ return storageNodes;
}
/**
@@ -131,13 +145,14 @@
return MoreObjects.toStringHelper(ClusterMetadata.class)
.add("providerId", providerId)
.add("name", name)
- .add("nodes", nodes)
+ .add("controllerNodes", controllerNodes)
+ .add("storageNodes", storageNodes)
.toString();
}
@Override
public int hashCode() {
- return Arrays.deepHashCode(new Object[] {providerId, name, nodes});
+ return Arrays.deepHashCode(new Object[] {providerId, name, controllerNodes, storageNodes});
}
/*
@@ -157,8 +172,10 @@
ClusterMetadata that = (ClusterMetadata) object;
return Objects.equals(this.name, that.name) &&
- this.localNode.equals(that.localNode) &&
- Objects.equals(this.nodes.size(), that.nodes.size()) &&
- Sets.symmetricDifference(this.nodes, that.nodes).isEmpty();
+ this.localNode.equals(that.localNode) &&
+ Objects.equals(this.controllerNodes.size(), that.controllerNodes.size()) &&
+ Sets.symmetricDifference(this.controllerNodes, that.controllerNodes).isEmpty() &&
+ Objects.equals(this.storageNodes.size(), that.storageNodes.size()) &&
+ Sets.symmetricDifference(this.storageNodes, that.storageNodes).isEmpty();
}
}
diff --git a/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataEventTest.java b/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataEventTest.java
index b176aee..49ff25f 100644
--- a/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataEventTest.java
+++ b/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataEventTest.java
@@ -38,11 +38,11 @@
private final ControllerNode n2 =
new DefaultControllerNode(nid2, IpAddress.valueOf("10.0.0.2"), 9876);
private final ClusterMetadata metadata1 =
- new ClusterMetadata("foo", n1, ImmutableSet.of(n1));
+ new ClusterMetadata("foo", n1, ImmutableSet.of(), ImmutableSet.of(n1));
private final ClusterMetadata metadata2 =
- new ClusterMetadata("bar", n1, ImmutableSet.of(n1, n2));
+ new ClusterMetadata("bar", n1, ImmutableSet.of(), ImmutableSet.of(n1, n2));
private final ClusterMetadata metadata3 =
- new ClusterMetadata("baz", n1, ImmutableSet.of(n2));
+ new ClusterMetadata("baz", n1, ImmutableSet.of(), ImmutableSet.of(n2));
private final ClusterMetadataEvent event1 =
new ClusterMetadataEvent(ClusterMetadataEvent.Type.METADATA_CHANGED, metadata1, time1);
diff --git a/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataServiceAdapter.java b/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataServiceAdapter.java
index b1b46f9..f4f6100 100644
--- a/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataServiceAdapter.java
@@ -27,7 +27,11 @@
public ClusterMetadata getClusterMetadata() {
final NodeId nid = new NodeId("test-node");
final IpAddress addr = IpAddress.valueOf(0);
- return new ClusterMetadata("test-cluster", new DefaultControllerNode(nid, addr), Sets.newHashSet());
+ return new ClusterMetadata(
+ "test-cluster",
+ new DefaultControllerNode(nid, addr),
+ Sets.newHashSet(),
+ Sets.newHashSet());
}
@Override
diff --git a/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataTest.java b/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataTest.java
index d6e2f33..1b32363 100644
--- a/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataTest.java
+++ b/core/api/src/test/java/org/onosproject/cluster/ClusterMetadataTest.java
@@ -39,11 +39,11 @@
new DefaultControllerNode(nid2, IpAddress.valueOf("10.0.0.2"), 9876);
private final ClusterMetadata metadata1 =
- new ClusterMetadata("foo", n1, ImmutableSet.of(n1));
+ new ClusterMetadata("foo", n1, ImmutableSet.of(), ImmutableSet.of(n1));
private final ClusterMetadata sameAsMetadata1 =
- new ClusterMetadata("foo", n1, ImmutableSet.of(n1));
+ new ClusterMetadata("foo", n1, ImmutableSet.of(), ImmutableSet.of(n1));
private final ClusterMetadata metadata2 =
- new ClusterMetadata("bar", n1, ImmutableSet.of(n1, n2));
+ new ClusterMetadata("bar", n1, ImmutableSet.of(n1), ImmutableSet.of(n1, n2));
private final ProviderId defaultProvider =
new ProviderId("none", "none");
/**
@@ -64,8 +64,10 @@
@Test
public void checkConstruction() {
assertThat(metadata2.getName(), is("bar"));
- assertThat(metadata2.getNodes(), hasSize(2));
- assertThat(metadata2.getNodes(), contains(n1, n2));
+ assertThat(metadata2.getControllerNodes(), hasSize(1));
+ assertThat(metadata2.getControllerNodes(), contains(n1));
+ assertThat(metadata2.getStorageNodes(), hasSize(2));
+ assertThat(metadata2.getStorageNodes(), contains(n1, n2));
assertThat(metadata1.providerId(), is(defaultProvider));
}
}