[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/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java b/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java
index 8086206..e93ce33 100644
--- a/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java
+++ b/core/net/src/main/java/org/onosproject/cluster/impl/ConfigFileBasedClusterMetadataProvider.java
@@ -28,6 +28,7 @@
import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Sets;
import com.google.common.io.Files;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
@@ -111,10 +112,14 @@
private ClusterMetadataPrototype toPrototype(ClusterMetadata metadata) {
ClusterMetadataPrototype prototype = new ClusterMetadataPrototype();
prototype.setName(metadata.getName());
- prototype.setCluster(metadata.getNodes()
- .stream()
- .map(this::toPrototype)
- .collect(Collectors.toSet()));
+ prototype.setController(metadata.getNodes()
+ .stream()
+ .map(this::toPrototype)
+ .collect(Collectors.toSet()));
+ prototype.setStorage(metadata.getStorageNodes()
+ .stream()
+ .map(this::toPrototype)
+ .collect(Collectors.toSet()));
return prototype;
}
@@ -241,13 +246,20 @@
metadata.getNode().getPort() != null
? metadata.getNode().getPort()
: DefaultControllerNode.DEFAULT_PORT) : null,
- metadata.getCluster()
- .stream()
- .map(node -> new DefaultControllerNode(
- NodeId.nodeId(node.getId()),
- IpAddress.valueOf(node.getIp()),
- node.getPort() != null ? node.getPort() : 5679))
- .collect(Collectors.toSet())),
+ metadata.getController()
+ .stream()
+ .map(node -> new DefaultControllerNode(
+ NodeId.nodeId(node.getId()),
+ IpAddress.valueOf(node.getIp()),
+ node.getPort() != null ? node.getPort() : 5679))
+ .collect(Collectors.toSet()),
+ metadata.getStorage()
+ .stream()
+ .map(node -> new DefaultControllerNode(
+ NodeId.nodeId(node.getId()),
+ IpAddress.valueOf(node.getIp()),
+ node.getPort() != null ? node.getPort() : 5679))
+ .collect(Collectors.toSet())),
version);
} catch (IOException e) {
throw new IllegalArgumentException(e);
@@ -278,7 +290,8 @@
private static class ClusterMetadataPrototype {
private String name;
private NodePrototype node;
- private Set<NodePrototype> cluster;
+ private Set<NodePrototype> controller = Sets.newHashSet();
+ private Set<NodePrototype> storage = Sets.newHashSet();
public String getName() {
return name;
@@ -296,12 +309,20 @@
this.node = node;
}
- public Set<NodePrototype> getCluster() {
- return cluster;
+ public Set<NodePrototype> getController() {
+ return controller;
}
- public void setCluster(Set<NodePrototype> cluster) {
- this.cluster = cluster;
+ public void setController(Set<NodePrototype> controller) {
+ this.controller = controller;
+ }
+
+ public Set<NodePrototype> getStorage() {
+ return storage;
+ }
+
+ public void setStorage(Set<NodePrototype> storage) {
+ this.storage = storage;
}
}