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" --- .../model/provision/HostsXmlProvisioner.java | 5 ++-- .../model/provision/InMemoryProvisioner.java | 29 +++++++++++----------- .../model/provision/SingleNodeProvisioner.java | 16 +++--------- 3 files changed, 20 insertions(+), 30 deletions(-) (limited to 'config-model/src/main/java/com/yahoo/config/model/provision') diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java index ab2e0f632e4..e55686accca 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java @@ -7,7 +7,6 @@ import com.yahoo.vespa.model.container.Container; import java.io.Reader; import java.util.List; -import java.util.Optional; /** * A host provisioner based on a hosts.xml file. @@ -39,7 +38,7 @@ public class HostsXmlProvisioner implements HostProvisioner { } for (Host host : hosts.asCollection()) { if (host.aliases().contains(alias)) { - return new HostSpec(host.hostname(), host.aliases(), Optional.empty()); + return new HostSpec(host.hostname(), host.aliases()); } } throw new IllegalArgumentException("Unable to find host for alias '" + alias + "'"); @@ -51,7 +50,7 @@ public class HostsXmlProvisioner implements HostProvisioner { } private HostSpec host2HostSpec(Host host) { - return new HostSpec(host.hostname(), host.aliases(), Optional.empty()); + return new HostSpec(host.hostname(), host.aliases()); } private Host getFirstHost() { diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java index 009bc225037..1a1ed000478 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java @@ -9,6 +9,7 @@ import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.ProvisionLogger; @@ -117,7 +118,8 @@ public class InMemoryProvisioner implements HostProvisioner { List defaultHosts = freeNodes.get(defaultResources); if (defaultHosts.isEmpty()) throw new IllegalArgumentException("No more hosts with default resources available"); Host newHost = freeNodes.removeValue(defaultResources, 0); - return new HostSpec(newHost.hostname(), List.of(alias), Optional.empty()); + // Note: Always returns HostSpec with empty dockerImageRepo, which is OK since this method is never used when docker image repo is set + return new HostSpec(newHost.hostname(), newHost.aliases(), newHost.flavor(), Optional.empty(), newHost.version(), Optional.empty()); } @Override @@ -171,12 +173,12 @@ public class InMemoryProvisioner implements HostProvisioner { private HostSpec retire(HostSpec host) { return new HostSpec(host.hostname(), - host.realResources(), - host.advertisedResources(), - host.requestedResources().orElse(NodeResources.unspecified()), - host.membership().get().retire(), + host.aliases(), + host.flavor(), + Optional.of(host.membership().get().retire()), host.version(), Optional.empty(), + Optional.empty(), host.dockerImageRepo()); } @@ -187,11 +189,11 @@ public class InMemoryProvisioner implements HostProvisioner { // Check if the current allocations are compatible with the new request for (int i = allocation.size() - 1; i >= 0; i--) { - NodeResources currentResources = allocation.get(0).advertisedResources(); - if (currentResources.isUnspecified() || requestedResources.isUnspecified()) continue; - if ( ! currentResources.compatibleWith(requestedResources)) { + Optional currentResources = allocation.get(0).flavor().map(Flavor::resources); + if (currentResources.isEmpty() || requestedResources == NodeResources.unspecified) continue; + if (!currentResources.get().compatibleWith(requestedResources)) { HostSpec removed = allocation.remove(i); - freeNodes.put(currentResources, new Host(removed.hostname())); // Return the node back to free pool + freeNodes.put(currentResources.get(), new Host(removed.hostname())); // Return the node back to free pool } } @@ -200,7 +202,7 @@ public class InMemoryProvisioner implements HostProvisioner { // Find the smallest host that can fit the requested requested Optional hostResources = freeNodes.keySet().stream() .sorted(new MemoryDiskCpu()) - .filter(resources -> requestedResources.isUnspecified() || resources.satisfies(requestedResources)) + .filter(resources -> requestedResources == NodeResources.unspecified || resources.satisfies(requestedResources)) .findFirst(); if (hostResources.isEmpty()) { if (canFail) @@ -212,11 +214,10 @@ public class InMemoryProvisioner implements HostProvisioner { Host newHost = freeNodes.removeValue(hostResources.get(), 0); if (freeNodes.get(hostResources.get()).isEmpty()) freeNodes.removeAll(hostResources.get()); ClusterMembership membership = ClusterMembership.from(clusterGroup, nextIndex++); - allocation.add(new HostSpec(newHost.hostname(), - hostResources.get(), hostResources.get(), requestedResources, - membership, + allocation.add(new HostSpec(newHost.hostname(), newHost.aliases(), + hostResources.map(Flavor::new), Optional.of(membership), newHost.version(), Optional.empty(), - Optional.empty())); + requestedResources == NodeResources.unspecified ? Optional.empty() : Optional.of(requestedResources))); } nextIndexInCluster.put(new Pair<>(clusterGroup.type(), clusterGroup.id()), nextIndex); diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java index b4fd55c6d33..1f0e0755667 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java @@ -1,21 +1,17 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.model.provision; -import com.yahoo.component.Version; import com.yahoo.config.model.api.HostProvisioner; import com.yahoo.config.provision.Capacity; 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.NodeResources; import com.yahoo.config.provision.ProvisionLogger; import com.yahoo.net.HostName; -import com.yahoo.vespa.model.builder.xml.dom.NodesSpecification; import java.util.ArrayList; import java.util.List; -import java.util.Optional; /** * A host provisioner used when there is no hosts.xml file (using localhost as the only host) @@ -32,15 +28,12 @@ public class SingleNodeProvisioner implements HostProvisioner { public SingleNodeProvisioner() { host = new Host(HostName.getLocalhost()); - this.hostSpec = new HostSpec(host.hostname(), host.aliases(), Optional.empty()); + this.hostSpec = new HostSpec(host.hostname(), host.aliases()); } public SingleNodeProvisioner(Flavor flavor) { host = new Host(HostName.getLocalhost()); - this.hostSpec = new HostSpec(host.hostname(), - flavor.resources(), flavor.resources(), flavor.resources(), - ClusterMembership.from(ClusterSpec.specification(ClusterSpec.Type.content, ClusterSpec.Id.from("test")).group(ClusterSpec.Group.from(0)).vespaVersion("1").build(), 0), - Optional.empty(), Optional.empty(), Optional.empty()); + this.hostSpec = new HostSpec(host.hostname(), host.aliases(), flavor); } @Override @@ -52,10 +45,7 @@ public class SingleNodeProvisioner implements HostProvisioner { public List prepare(ClusterSpec cluster, Capacity capacity, ProvisionLogger logger) { // TODO: This should fail if capacity requested is more than 1 List hosts = new ArrayList<>(); - hosts.add(new HostSpec(host.hostname(), - NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), - ClusterMembership.from(cluster, counter++), - Optional.empty(), Optional.empty(), Optional.empty())); + hosts.add(new HostSpec(host.hostname(), host.aliases(), ClusterMembership.from(cluster, counter++))); return hosts; } -- cgit v1.2.3