[ONOS-5184] Allow configuring cluster partition size
Adds a new parameter to onos-form-cluster: -s <partition-size>
to allow specifying the partition size to be used when creating
the cluster.
Change-Id: I4c31d6e97fe0fd811831296f41a09160bebb58de
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java
index 250fd02..63a4081 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ClusterWebResource.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.rest.resources;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.onosproject.cluster.ClusterAdminService;
@@ -94,7 +95,16 @@
ObjectNode root = (ObjectNode) mapper().readTree(config);
List<ControllerNode> nodes = codec.decode((ArrayNode) root.path("nodes"), this);
- get(ClusterAdminService.class).formCluster(new HashSet<>(nodes));
+ JsonNode partitionSizeNode = root.get("partitionSize");
+ if (partitionSizeNode != null) {
+ int partitionSize = partitionSizeNode.asInt();
+ if (partitionSize == 0) {
+ return Response.notAcceptable(null).build();
+ }
+ get(ClusterAdminService.class).formCluster(new HashSet<>(nodes), partitionSize);
+ } else {
+ get(ClusterAdminService.class).formCluster(new HashSet<>(nodes));
+ }
return Response.ok().build();
}