From 7c90b8113babc5d74186ca23d354299af2088ee8 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Fri, 28 Oct 2022 16:54:08 +0200 Subject: Revert "Bratseth/fully specified" --- .../java/com/yahoo/vespa/hosted/provision/NodeList.java | 14 ++------------ .../provision/autoscale/AllocatableClusterResources.java | 8 ++++---- .../yahoo/vespa/hosted/provision/autoscale/Autoscaler.java | 2 +- .../provision/maintenance/AutoscalingMaintainer.java | 2 +- .../provision/provisioning/NodeRepositoryProvisioner.java | 2 +- .../hosted/provision/restapi/ApplicationSerializer.java | 6 ++---- 6 files changed, 11 insertions(+), 23 deletions(-) (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java index bf855661a09..58535b54a1b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java @@ -251,21 +251,11 @@ public class NodeList extends AbstractFilteringList { } - /** - * Returns the requested resources of the nodes in this - * - * @throws IllegalStateException if there are no nodes in this list, or they do not all belong to the same cluster - */ - public NodeResources requestedResources() { - ensureSingleCluster(); - if (isEmpty()) throw new IllegalStateException("No nodes"); - return first().get().allocation().get().requestedResources(); - } - /** * Returns the cluster spec of the nodes in this, without any group designation * - * @throws IllegalStateException if there are no nodes in this list, or they do not all belong to the same cluster + * @throws IllegalStateException if there are no nodes in thus list or they do not all belong + * to the same cluster */ public ClusterSpec clusterSpec() { ensureSingleCluster(); 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 552f67ba6d3..5ed07153f32 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 @@ -43,12 +43,12 @@ public class AllocatableClusterResources { this.fulfilment = 1; } - public AllocatableClusterResources(NodeList nodes, NodeRepository nodeRepository) { + public AllocatableClusterResources(List nodes, NodeRepository nodeRepository) { this.nodes = nodes.size(); this.groups = (int)nodes.stream().map(node -> node.allocation().get().membership().cluster().group()).distinct().count(); - this.realResources = averageRealResourcesOf(nodes.asList(), nodeRepository); // Average since we average metrics over nodes - this.advertisedResources = nodes.requestedResources(); - this.clusterSpec = nodes.clusterSpec(); + this.realResources = averageRealResourcesOf(nodes, nodeRepository); // Average since we average metrics over nodes + this.advertisedResources = nodes.get(0).allocation().get().requestedResources(); + this.clusterSpec = nodes.get(0).allocation().get().membership().cluster(); this.fulfilment = 1; } 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 689b5a9a950..4d50250e61a 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 @@ -68,7 +68,7 @@ public class Autoscaler { if ( ! clusterIsStable(clusterNodes, nodeRepository)) return Advice.none(Status.waiting, "Cluster change in progress"); - var currentAllocation = new AllocatableClusterResources(clusterNodes, nodeRepository); + var currentAllocation = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository); Optional bestAllocation = allocationOptimizer.findBestAllocation(clusterModel.loadAdjustment(), currentAllocation, clusterModel, limits); if (bestAllocation.isEmpty()) diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java index c51aad9c9b1..97691c84be8 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java @@ -86,7 +86,7 @@ public class AutoscalingMaintainer extends NodeRepositoryMaintainer { applications().put(application.get().with(updatedCluster), lock); if (advice.isPresent() && advice.target().isPresent() && !cluster.get().targetResources().equals(advice.target())) { // 2. Also autoscale - ClusterResources before = new AllocatableClusterResources(clusterNodes, nodeRepository()).advertisedResources(); + ClusterResources before = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository()).advertisedResources(); try (MaintenanceDeployment deployment = new MaintenanceDeployment(applicationId, deployer, metric, nodeRepository())) { if (deployment.isValid()) { deployment.activate(); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java index aa620630b3a..ca483fe27b4 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java @@ -169,7 +169,7 @@ public class NodeRepositoryProvisioner implements Provisioner { AllocatableClusterResources currentResources = firstDeployment // start at min, preserve current resources otherwise ? new AllocatableClusterResources(initialResourcesFrom(requested, clusterSpec, application.id()), clusterSpec, nodeRepository) - : new AllocatableClusterResources(nodes, nodeRepository); + : new AllocatableClusterResources(nodes.asList(), nodeRepository); var clusterModel = new ClusterModel(application, clusterSpec, cluster, nodes, nodeRepository.metricsDb(), nodeRepository.clock()); return within(Limits.of(requested), currentResources, firstDeployment, clusterModel); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java index 3f840c09198..3615b9afa97 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java @@ -10,7 +10,6 @@ import com.yahoo.vespa.hosted.provision.applications.Application; import com.yahoo.vespa.hosted.provision.applications.Cluster; import com.yahoo.vespa.hosted.provision.applications.ScalingEvent; import com.yahoo.vespa.hosted.provision.autoscale.ClusterModel; -import com.yahoo.vespa.hosted.provision.autoscale.Limits; import com.yahoo.vespa.hosted.provision.autoscale.Load; import com.yahoo.vespa.hosted.provision.autoscale.MetricsDb; @@ -66,9 +65,8 @@ public class ApplicationSerializer { Optional clusterModel = ClusterModel.create(application, nodes.clusterSpec(), cluster, nodes, metricsDb, nodeRepository.clock()); Cursor clusterObject = clustersObject.setObject(cluster.id().value()); clusterObject.setString("type", nodes.clusterSpec().type().name()); - Limits limits = Limits.of(cluster).fullySpecified(applicationNodes.clusterSpec(), nodeRepository, application.id()); - toSlime(limits.min(), clusterObject.setObject("min")); - toSlime(limits.max(), clusterObject.setObject("max")); + toSlime(cluster.minResources(), clusterObject.setObject("min")); + toSlime(cluster.maxResources(), clusterObject.setObject("max")); toSlime(currentResources, clusterObject.setObject("current")); if (cluster.shouldSuggestResources(currentResources)) cluster.suggestedResources().ifPresent(suggested -> toSlime(suggested.resources(), clusterObject.setObject("suggested"))); -- cgit v1.2.3