summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-03-25 20:31:06 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-03-25 20:31:06 +0100
commit34d5d8e4539462eb69045fc2def38d2529ba4288 (patch)
tree0609c67ceaea57f86512967c1e9816f29ccce8c2 /node-repository
parentf2e14e9ac5e5ea2b05f7aa34bf21dc73b6d8e0eb (diff)
Remove clustertype from ClusterResources
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java13
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterResources.java14
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceIterator.java3
4 files changed, 22 insertions, 21 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
index 40af5f43312..4d0de686a16 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java
@@ -33,20 +33,25 @@ public class AllocatableClusterResources {
this.clusterType = nodes.get(0).allocation().get().membership().cluster().type();
}
- public AllocatableClusterResources(ClusterResources realResources, NodeResources advertisedResources) {
+ public AllocatableClusterResources(ClusterResources realResources,
+ NodeResources advertisedResources,
+ ClusterSpec.Type clusterType) {
this.realResources = realResources.nodeResources();
this.advertisedResources = advertisedResources;
this.nodes = realResources.nodes();
this.groups = realResources.groups();
- this.clusterType = realResources.clusterType();
+ this.clusterType = clusterType;
}
- public AllocatableClusterResources(ClusterResources realResources, Flavor flavor, HostResourcesCalculator calculator) {
+ public AllocatableClusterResources(ClusterResources realResources,
+ Flavor flavor,
+ ClusterSpec.Type clusterType,
+ HostResourcesCalculator calculator) {
this.realResources = realResources.nodeResources();
this.advertisedResources = calculator.advertisedResourcesOf(flavor);
this.nodes = realResources.nodes();
this.groups = realResources.groups();
- this.clusterType = realResources.clusterType();
+ this.clusterType = clusterType;
}
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
index 0e70178f71e..d5658ff59f3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
@@ -99,7 +99,8 @@ public class Autoscaler {
Optional<AllocatableClusterResources> bestAllocation = Optional.empty();
for (ResourceIterator i = new ResourceIterator(cpuLoad, memoryLoad, diskLoad, currentAllocation); i.hasNext(); ) {
ClusterResources allocation = i.next();
- Optional<AllocatableClusterResources> allocatableResources = toAllocatableResources(allocation);
+ Optional<AllocatableClusterResources> allocatableResources = toAllocatableResources(allocation,
+ currentAllocation.clusterType());
if (allocatableResources.isEmpty()) continue;
if (bestAllocation.isEmpty() || allocatableResources.get().cost() < bestAllocation.get().cost())
bestAllocation = allocatableResources;
@@ -123,15 +124,16 @@ public class Autoscaler {
* Returns the smallest allocatable node resources larger than the given node resources,
* or empty if none available.
*/
- private Optional<AllocatableClusterResources> toAllocatableResources(ClusterResources resources) {
- NodeResources nodeResources = nodeResourceLimits.enlargeToLegal(resources.nodeResources(),
- resources.clusterType());
+ private Optional<AllocatableClusterResources> toAllocatableResources(ClusterResources resources,
+ ClusterSpec.Type clusterType) {
+ NodeResources nodeResources = nodeResourceLimits.enlargeToLegal(resources.nodeResources(), clusterType);
if (allowsHostSharing(nodeRepository.zone().cloud())) {
// return the requested resources, or empty if they cannot fit on existing hosts
for (Flavor flavor : nodeRepository.getAvailableFlavors().getFlavors()) {
if (flavor.resources().satisfies(nodeResources))
return Optional.of(new AllocatableClusterResources(resources.with(nodeResources),
- nodeResources));
+ nodeResources,
+ clusterType));
}
return Optional.empty();
}
@@ -145,6 +147,7 @@ public class Autoscaler {
flavor = flavor.with(FlavorOverrides.ofDisk(nodeResources.diskGb()));
var candidate = new AllocatableClusterResources(resources.with(flavor.resources()),
flavor,
+ clusterType,
resourcesCalculator);
if (best.isEmpty() || candidate.cost() <= best.get().cost())
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterResources.java
index ebceba8c97f..7676b36add6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterResources.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterResources.java
@@ -20,24 +20,19 @@ public class ClusterResources {
/** The resources of each node in the cluster */
private final NodeResources nodeResources;
- /** The kind of cluster these resources are for */
- private final ClusterSpec.Type clusterType;
-
- public ClusterResources(int nodes, int groups, NodeResources nodeResources, ClusterSpec.Type clusterType) {
+ public ClusterResources(int nodes, int groups, NodeResources nodeResources) {
this.nodes = nodes;
this.groups = groups;
this.nodeResources = nodeResources;
- this.clusterType = clusterType;
}
/** Returns the total number of allocated nodes (over all groups) */
public int nodes() { return nodes; }
public int groups() { return groups; }
public NodeResources nodeResources() { return nodeResources; }
- public ClusterSpec.Type clusterType() { return clusterType; }
public ClusterResources with(NodeResources resources) {
- return new ClusterResources(nodes, groups, resources, clusterType);
+ return new ClusterResources(nodes, groups, resources);
}
@Override
@@ -49,18 +44,17 @@ public class ClusterResources {
if (other.nodes != this.nodes) return false;
if (other.groups != this.groups) return false;
if (other.nodeResources != this.nodeResources) return false;
- if (other.clusterType != this.clusterType) return false;
return true;
}
@Override
public int hashCode() {
- return Objects.hash(nodes, groups, nodeResources, clusterType);
+ return Objects.hash(nodes, groups, nodeResources);
}
@Override
public String toString() {
- return clusterType + " cluster resources: " + nodes + " * " + nodeResources + (groups > 1 ? " in " + groups + " groups" : "");
+ return "cluster resources: " + nodes + " * " + nodeResources + (groups > 1 ? " in " + groups + " groups" : "");
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceIterator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceIterator.java
index ee1af65753a..f8b9ae6924a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceIterator.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceIterator.java
@@ -58,8 +58,7 @@ public class ResourceIterator {
int nodesWithRedundancy = currentNodes - (singleGroupMode ? 1 : groupSize);
ClusterResources next = new ClusterResources(currentNodes,
singleGroupMode ? 1 : currentNodes / groupSize,
- resourcesFor(nodesWithRedundancy),
- allocation.clusterType());
+ resourcesFor(nodesWithRedundancy));
currentNodes += nodeIncrement;
return next;
}