From a8ed8292f49c953bb0f01a2c9602d7bcda7c2244 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Wed, 14 Aug 2019 14:45:11 +0200 Subject: Remove handling of legacy flavor allocations --- .../provision/provisioning/CapacityPolicies.java | 27 ++-------------------- .../provision/provisioning/NodeAllocation.java | 1 - .../provision/provisioning/NodePrioritizer.java | 18 ++------------- .../provisioning/NodeRepositoryProvisioner.java | 4 ++-- .../hosted/provision/provisioning/NodeSpec.java | 16 ++++--------- .../provision/testutils/MockNodeRepository.java | 1 - 6 files changed, 11 insertions(+), 56 deletions(-) (limited to 'node-repository/src/main/java/com/yahoo') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java index 6cee3005e91..64e2df78642 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java @@ -7,7 +7,6 @@ import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.Zone; -import com.yahoo.config.provision.NodeFlavors; import com.yahoo.vespa.flags.FlagSource; import com.yahoo.vespa.flags.Flags; @@ -22,12 +21,10 @@ import java.util.Optional; public class CapacityPolicies { private final Zone zone; - private final NodeFlavors flavors; private final FlagSource flagSource; - public CapacityPolicies(Zone zone, NodeFlavors flavors, FlagSource flagSource) { + public CapacityPolicies(Zone zone, FlagSource flagSource) { this.zone = zone; - this.flavors = flavors; this.flagSource = flagSource; } @@ -45,9 +42,7 @@ public class CapacityPolicies { } public NodeResources decideNodeResources(Optional requestedResources, ClusterSpec cluster) { - NodeResources resources = specifiedOrDefaultNodeResources(requestedResources, cluster); - - if (resources.allocateByLegacyName()) return resources; // Modification not possible + NodeResources resources = requestedResources.orElse(defaultNodeResources(cluster.type())); // Allow slow disks in zones which are not performance sensitive if (zone.system().isCd() || zone.environment() == Environment.dev || zone.environment() == Environment.test) @@ -60,24 +55,6 @@ public class CapacityPolicies { return resources; } - private NodeResources specifiedOrDefaultNodeResources(Optional requestedResources, ClusterSpec cluster) { - if (requestedResources.isPresent() && ! requestedResources.get().allocateByLegacyName()) - return requestedResources.get(); - - if (requestedResources.isEmpty()) - return defaultNodeResources(cluster.type()); - - switch (zone.environment()) { - case dev: case test: case staging: return defaultNodeResources(cluster.type()); - default: - flavors.getFlavorOrThrow(requestedResources.get().legacyName().get()); // verify existence - // Return this spec containing the legacy flavor name, not the flavor's capacity object - // which describes the flavors capacity, as the point of legacy allocation is to match - // by name, not by resources - return requestedResources.get(); - } - } - private NodeResources defaultNodeResources(ClusterSpec.Type clusterType) { if (clusterType == ClusterSpec.Type.admin) return nodeResourcesForAdminCluster(); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java index d4527452e9c..7dca60171a5 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java @@ -287,7 +287,6 @@ class NodeAllocation { .filter(NodeSpec.CountNodeSpec.class::isInstance) .map(NodeSpec.CountNodeSpec.class::cast) .map(spec -> new FlavorCount(spec.resources(), spec.fulfilledDeficitCount(acceptedOfRequestedFlavor))) - .filter(flavorCount -> ! flavorCount.getFlavor().allocateByLegacyName()) .filter(flavorCount -> flavorCount.getCount() > 0); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java index 6b27662448c..f6554b2dede 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java @@ -215,8 +215,7 @@ class NodePrioritizer { private PrioritizableNode toNodePriority(Node node, boolean isSurplusNode, boolean isNewNode) { PrioritizableNode.Builder builder = new PrioritizableNode.Builder(node) .withSurplusNode(isSurplusNode) - .withNewNode(isNewNode) - .withPreferredOnFlavor(preferredOnLegacyFlavor(node)); + .withNewNode(isNewNode); allNodes.parentOf(node).ifPresent(parent -> { builder.withParent(parent).withFreeParentCapacity(capacity.freeCapacityOf(parent, false)); @@ -229,18 +228,6 @@ class NodePrioritizer { return builder.build(); } - /** Needed to handle requests for legacy non-docker nodes only */ - private boolean preferredOnLegacyFlavor(Node node) { - if (requestedNodes instanceof NodeSpec.CountNodeSpec) { - NodeResources requestedNodeResources = ((NodeSpec.CountNodeSpec)requestedNodes).resources(); - if (requestedNodeResources.allocateByLegacyName()) { - Flavor requestedFlavor = flavors.getFlavorOrThrow(requestedNodeResources.legacyName().get()); - return ! requestedFlavor.isStock() && node.flavor().equals(requestedFlavor); - } - } - return false; - } - static boolean isPreferredNodeToBeRelocated(List nodes, Node node, Node parent) { NodeList list = new NodeList(nodes); return list.childrenOf(parent).asList().stream() @@ -261,8 +248,7 @@ class NodePrioritizer { } private boolean isDocker() { - NodeResources flavor = resources(requestedNodes); - return (flavor != null) && ! flavor.allocateByLegacyName(); + return resources(requestedNodes) != null; } private static int compareForRelocation(Node a, Node b) { 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 1cf5cfbb4f3..29e37b76ac3 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 @@ -57,10 +57,10 @@ public class NodeRepositoryProvisioner implements Provisioner { } @Inject - public NodeRepositoryProvisioner(NodeRepository nodeRepository, NodeFlavors flavors, Zone zone, + public NodeRepositoryProvisioner(NodeRepository nodeRepository, Zone zone, ProvisionServiceProvider provisionServiceProvider, FlagSource flagSource) { this.nodeRepository = nodeRepository; - this.capacityPolicies = new CapacityPolicies(zone, flavors, flagSource); + this.capacityPolicies = new CapacityPolicies(zone, flagSource); this.zone = zone; this.loadBalancerProvisioner = provisionServiceProvider.getLoadBalancerService().map(lbService -> new LoadBalancerProvisioner(nodeRepository, lbService)); this.preparer = new Preparer(nodeRepository, diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java index 66a8f2f8f6d..865b643b93b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java @@ -92,19 +92,13 @@ public interface NodeSpec { @Override public boolean isCompatible(Flavor flavor, NodeFlavors flavors) { - if (requestedNodeResources.allocateByLegacyName() && flavor.isConfigured()) { - if (flavor.satisfies(flavors.getFlavorOrThrow(requestedNodeResources.legacyName().get()))) + if (flavor.isDocker()) { // Docker nodes can satisfy a request for parts of their resources + if (flavor.resources().compatibleWith(requestedNodeResources)) return true; } - else { - if (flavor.isDocker()) { // Docker nodes can satisfy a request for parts of their resources - if (flavor.resources().compatibleWith(requestedNodeResources)) - return true; - } - else { // Other nodes must be matched exactly - if (requestedNodeResources.equals(flavor.resources())) - return true; - } + else { // Other nodes must be matched exactly + if (requestedNodeResources.equals(flavor.resources())) + return true; } return requestedFlavorCanBeAchievedByResizing(flavor); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java index a586bfa15c2..3da1d14541e 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java @@ -58,7 +58,6 @@ public class MockNodeRepository extends NodeRepository { private void populate() { NodeRepositoryProvisioner provisioner = new NodeRepositoryProvisioner(this, - flavors, Zone.defaultZone(), new MockProvisionServiceProvider(), new InMemoryFlagSource()); -- cgit v1.2.3