public int decideSize(Capacity requestedCapacity, ClusterSpec.Type clusterType) { int requestedNodes = ensureRedundancy(requestedCapacity.nodeCount(), clusterType, requestedCapacity.canFail()); if (requestedCapacity.isRequired()) return requestedNodes; switch(zone.environment()) { case dev : case test : return 1; case perf : return Math.min(requestedCapacity.nodeCount(), 3); case staging: return requestedNodes <= 1 ? requestedNodes : Math.max(2, requestedNodes / 10); case prod : return requestedNodes; default : throw new IllegalArgumentException("Unsupported environment " + zone.environment()); } }
boolean exclusive = capacityPolicies.decideExclusivity(cluster.isExclusive()); requestedNodes = NodeSpec.from(nodeCount, flavor, exclusive, requestedCapacity.canFail());