From 52e8214e1dfcc987b8227d19c288d05b54e711f9 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Sat, 23 May 2020 07:21:43 +0200 Subject: Revert "Bratseth/real resources in model" --- .../hosted/provision/autoscale/AllocationOptimizer.java | 4 ++-- .../yahoo/vespa/hosted/provision/provisioning/Activator.java | 5 ++--- .../provision/provisioning/NodeRepositoryProvisioner.java | 9 ++++----- .../yahoo/vespa/hosted/provision/restapi/NodesResponse.java | 2 +- .../com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java | 1 + .../hosted/provision/persistence/NodeSerializerTest.java | 6 +++--- .../hosted/provision/provisioning/AllocationVisualizer.java | 4 ++-- .../provision/provisioning/DynamicDockerAllocationTest.java | 8 ++++---- .../provision/provisioning/DynamicDockerProvisionTest.java | 4 ++-- .../hosted/provision/provisioning/ProvisioningTest.java | 12 ++++++------ 10 files changed, 27 insertions(+), 28 deletions(-) (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java index 475f2feaebd..f0f53161d9b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java @@ -40,8 +40,8 @@ public class AllocationOptimizer { AllocatableClusterResources current, Limits limits) { if (limits.isEmpty()) - limits = Limits.of(new ClusterResources(minimumNodes, 1, NodeResources.unspecified()), - new ClusterResources(maximumNodes, maximumNodes, NodeResources.unspecified())); + limits = Limits.of(new ClusterResources(minimumNodes, 1, NodeResources.unspecified), + new ClusterResources(maximumNodes, maximumNodes, NodeResources.unspecified)); Optional bestAllocation = Optional.empty(); for (int groups = limits.min().groups(); groups <= limits.max().groups(); groups++) { for (int nodes = limits.min().nodes(); nodes <= limits.max().nodes(); nodes++) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java index ebe9327967e..36034b62cfb 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Activator.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.ParentHostUnavailableException; import com.yahoo.transaction.Mutex; @@ -184,8 +183,8 @@ class Activator { for (Node node : nodes) { HostSpec hostSpec = getHost(node.hostname(), hosts); node = hostSpec.membership().get().retired() ? node.retire(nodeRepository.clock().instant()) : node.unretire(); - if (! hostSpec.advertisedResources().equals(node.flavor().resources())) // A resized node - node = node.with(new Flavor(hostSpec.advertisedResources())); + if (hostSpec.flavor().isPresent()) // Docker nodes may change flavor + node = node.with(hostSpec.flavor().get()); Allocation allocation = node.allocation().get() .with(hostSpec.membership().get()) .withRequestedResources(hostSpec.requestedResources() 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 78ccf258675..bd92357ea79 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 @@ -7,7 +7,6 @@ import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeResources; @@ -197,12 +196,12 @@ public class NodeRepositoryProvisioner implements Provisioner { log.log(Level.FINE, () -> "Prepared node " + node.hostname() + " - " + node.flavor()); Allocation nodeAllocation = node.allocation().orElseThrow(IllegalStateException::new); hosts.add(new HostSpec(node.hostname(), - nodeRepository.resourcesCalculator().realResourcesOf(node, nodeRepository), - node.flavor().resources(), - requestedResources, - nodeAllocation.membership(), + List.of(), + Optional.of(node.flavor()), + Optional.of(nodeAllocation.membership()), node.status().vespaVersion(), nodeAllocation.networkPorts(), + requestedResources.isUnspecified() ? Optional.empty() : Optional.of(requestedResources), node.status().dockerImage())); if (nodeAllocation.networkPorts().isPresent()) { log.log(Level.FINE, () -> "Prepared node " + node.hostname() + " has port allocations"); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java index e3edf394da6..9d02d2907cc 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java @@ -145,7 +145,7 @@ class NodesResponse extends HttpResponse { object.setString("flavor", node.flavor().name()); node.reservedTo().ifPresent(reservedTo -> object.setString("reservedTo", reservedTo.value())); if (node.flavor().isConfigured()) - object.setDouble("cpuCores", node.flavor().resources().vcpu()); + object.setDouble("cpuCores", node.flavor().getMinCpuCores()); NodeResourcesSerializer.toSlime(node.flavor().resources(), object.setObject("resources")); if (node.flavor().cost() > 0) object.setLong("cost", node.flavor().cost()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java index 914008af227..6b03def7e57 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java @@ -229,6 +229,7 @@ public class OsVersionsTest { // All hosts are deprovisioning assertEquals(hostCount, hostNodes.get().deprovisioning().size()); + // Nodes complete their upgrade by being reprovisioned completeUpgradeOf(hostNodes.get().deprovisioning().asList(), NodeType.confighost); assertEquals(hostCount, hostNodes.get().onOsVersion(version1).size()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java index f3fe1fc4915..134b3bc1cd7 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java @@ -275,12 +275,12 @@ public class NodeSerializerTest { @Test public void flavor_overrides_serialization() { Node node = createNode(); - assertEquals(20, node.flavor().resources().diskGb(), 0); + assertEquals(20, node.flavor().getMinDiskAvailableGb(), 0); node = node.with(node.flavor().with(FlavorOverrides.ofDisk(1234))); - assertEquals(1234, node.flavor().resources().diskGb(), 0); + assertEquals(1234, node.flavor().getMinDiskAvailableGb(), 0); Node copy = nodeSerializer.fromJson(Node.State.provisioned, nodeSerializer.toJson(node)); - assertEquals(1234, copy.flavor().resources().diskGb(), 0); + assertEquals(1234, copy.flavor().getMinDiskAvailableGb(), 0); assertEquals(node, copy); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java index ea4386f2fd5..fd2374c55b7 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationVisualizer.java @@ -102,13 +102,13 @@ public class AllocationVisualizer extends JPanel { if (isHost) { g.setColor(Color.GRAY); - for (int i = 0; i < node.flavor().resources().memoryGb(); i++) { + for (int i = 0; i < node.flavor().getMinMainMemoryAvailableGb(); i++) { g.fillRect(x, y - nodeHeight, nodeWidth, nodeHeight); y = y - (nodeHeight + 2); } } else { g.setColor(Color.YELLOW); - int multi = (int) node.flavor().resources().memoryGb(); + int multi = (int) node.flavor().getMinMainMemoryAvailableGb(); int height = multi * nodeHeight + ((multi - 1) * 2); g.fillRect(x, y - height, nodeWidth, height); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java index 7350df40718..24c1b0b5d2f 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java @@ -346,8 +346,8 @@ public class DynamicDockerAllocationTest { List hosts = tester.prepare(application, cluster, 2, 1, resources); assertEquals(2, hosts.size()); - assertEquals(NodeResources.DiskSpeed.slow, hosts.get(0).advertisedResources().diskSpeed()); - assertEquals(NodeResources.DiskSpeed.slow, hosts.get(1).advertisedResources().diskSpeed()); + assertEquals(NodeResources.DiskSpeed.slow, hosts.get(0).flavor().get().resources().diskSpeed()); + assertEquals(NodeResources.DiskSpeed.slow, hosts.get(1).flavor().get().resources().diskSpeed()); tester.activate(application, hosts); } @@ -386,9 +386,9 @@ public class DynamicDockerAllocationTest { List hosts = tester.prepare(application, cluster, 4, 1, resources); assertEquals(1, hosts.size()); tester.activate(application, hosts); - assertEquals(0.1, hosts.get(0).advertisedResources().vcpu(), 0.000001); + assertEquals(0.1, hosts.get(0).flavor().get().resources().vcpu(), 0.000001); assertEquals("Slow nodes are allowed in dev and preferred because they are cheaper", - NodeResources.DiskSpeed.slow, hosts.get(0).advertisedResources().diskSpeed()); + NodeResources.DiskSpeed.slow, hosts.get(0).flavor().get().resources().diskSpeed()); } @Test diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java index 7ef780b8b7f..e1a66d2ae21 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java @@ -270,8 +270,8 @@ public class DynamicDockerProvisionTest { app1, cluster1); // Stop specifying node resources - tester.activate(app1, cluster1, Capacity.from(new ClusterResources(6, 3, NodeResources.unspecified()), - new ClusterResources(9, 3, NodeResources.unspecified()))); + tester.activate(app1, cluster1, Capacity.from(new ClusterResources(6, 3, NodeResources.unspecified), + new ClusterResources(9, 3, NodeResources.unspecified))); tester.assertNodes("Existing allocation is preserved", 9, 3, 2, 20, 15, app1, cluster1); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java index 9e211fd497c..03c07515cd5 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java @@ -418,8 +418,8 @@ public class ProvisioningTest { ApplicationId app1 = tester.makeApplicationId("app1"); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.content, new ClusterSpec.Id("cluster1")).vespaVersion("7").build(); - tester.activate(app1, cluster1, Capacity.from(new ClusterResources(2, 1, NodeResources.unspecified()), - new ClusterResources(4, 1, NodeResources.unspecified()))); + tester.activate(app1, cluster1, Capacity.from(new ClusterResources(2, 1, NodeResources.unspecified), + new ClusterResources(4, 1, NodeResources.unspecified))); tester.assertNodes("Initial allocation at min with default resources", 2, 1, 1.5, 8, 50, 0.3, app1, cluster1); @@ -479,8 +479,8 @@ public class ProvisioningTest { app1, cluster1); // Stop specifying node resources - tester.activate(app1, cluster1, Capacity.from(new ClusterResources(6, 3, NodeResources.unspecified()), - new ClusterResources(9, 3, NodeResources.unspecified()))); + tester.activate(app1, cluster1, Capacity.from(new ClusterResources(6, 3, NodeResources.unspecified), + new ClusterResources(9, 3, NodeResources.unspecified))); tester.assertNodes("No change", 9, 3, 8, 35, 15, app1, cluster1); @@ -622,7 +622,7 @@ public class ProvisioningTest { tester.makeReadyHosts(4, defaultResources).deployZoneApp(); ApplicationId application = tester.makeApplicationId(); ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("music")).vespaVersion("4.5.6").build(); - tester.prepare(application, cluster, Capacity.from(new ClusterResources(5, 1, NodeResources.unspecified()), false, false)); + tester.prepare(application, cluster, Capacity.from(new ClusterResources(5, 1, NodeResources.unspecified), false, false)); // No exception; Success } @@ -881,7 +881,7 @@ public class ProvisioningTest { allHosts.addAll(content0); allHosts.addAll(content1); - Function capacity = count -> Capacity.from(new ClusterResources(count, 1, NodeResources.unspecified()), required, true); + Function capacity = count -> Capacity.from(new ClusterResources(count, 1, NodeResources.unspecified), required, true); int expectedContainer0Size = tester.capacityPolicies().decideSize(container0Size, capacity.apply(container0Size), containerCluster0, application); int expectedContainer1Size = tester.capacityPolicies().decideSize(container1Size, capacity.apply(container1Size), containerCluster1, application); int expectedContent0Size = tester.capacityPolicies().decideSize(content0Size, capacity.apply(content0Size), contentCluster0, application); -- cgit v1.2.3