diff options
Diffstat (limited to 'config-model/src/main/java/com')
6 files changed, 32 insertions, 29 deletions
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 1a1ed000478..6e21d0688ad 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 @@ -118,8 +118,7 @@ public class InMemoryProvisioner implements HostProvisioner { List<Host> defaultHosts = freeNodes.get(defaultResources); if (defaultHosts.isEmpty()) throw new IllegalArgumentException("No more hosts with default resources available"); Host newHost = freeNodes.removeValue(defaultResources, 0); - // 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()); + return new HostSpec(newHost.hostname(), List.of(alias)); } @Override @@ -173,12 +172,12 @@ public class InMemoryProvisioner implements HostProvisioner { private HostSpec retire(HostSpec host) { return new HostSpec(host.hostname(), - host.aliases(), - host.flavor(), - Optional.of(host.membership().get().retire()), + host.realResources(), + host.advertisedResources(), + host.requestedResources().orElse(NodeResources.unspecified()), + host.membership().get().retire(), host.version(), Optional.empty(), - Optional.empty(), host.dockerImageRepo()); } @@ -190,7 +189,7 @@ 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--) { Optional<NodeResources> currentResources = allocation.get(0).flavor().map(Flavor::resources); - if (currentResources.isEmpty() || requestedResources == NodeResources.unspecified) continue; + if (currentResources.isEmpty() || requestedResources.isUnspecified()) continue; if (!currentResources.get().compatibleWith(requestedResources)) { HostSpec removed = allocation.remove(i); freeNodes.put(currentResources.get(), new Host(removed.hostname())); // Return the node back to free pool @@ -202,7 +201,7 @@ public class InMemoryProvisioner implements HostProvisioner { // Find the smallest host that can fit the requested requested Optional<NodeResources> hostResources = freeNodes.keySet().stream() .sorted(new MemoryDiskCpu()) - .filter(resources -> requestedResources == NodeResources.unspecified || resources.satisfies(requestedResources)) + .filter(resources -> requestedResources.isUnspecified() || resources.satisfies(requestedResources)) .findFirst(); if (hostResources.isEmpty()) { if (canFail) @@ -214,10 +213,11 @@ 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(), newHost.aliases(), - hostResources.map(Flavor::new), Optional.of(membership), + allocation.add(new HostSpec(newHost.hostname(), + hostResources.get(), hostResources.get(), requestedResources, + membership, newHost.version(), Optional.empty(), - requestedResources == NodeResources.unspecified ? Optional.empty() : Optional.of(requestedResources))); + Optional.empty())); } 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 1f0e0755667..212ad9e5a96 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 @@ -7,11 +7,14 @@ 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) @@ -33,7 +36,10 @@ public class SingleNodeProvisioner implements HostProvisioner { public SingleNodeProvisioner(Flavor flavor) { host = new Host(HostName.getLocalhost()); - this.hostSpec = new HostSpec(host.hostname(), host.aliases(), flavor); + this.hostSpec = new HostSpec(host.hostname(), + List.of(), + flavor.resources(), flavor.resources(), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } @Override @@ -45,7 +51,11 @@ public class SingleNodeProvisioner implements HostProvisioner { public List<HostSpec> prepare(ClusterSpec cluster, Capacity capacity, ProvisionLogger logger) { // TODO: This should fail if capacity requested is more than 1 List<HostSpec> hosts = new ArrayList<>(); - hosts.add(new HostSpec(host.hostname(), host.aliases(), ClusterMembership.from(cluster, counter++))); + hosts.add(new HostSpec(host.hostname(), + List.of(), + NodeResources.unspecified(), NodeResources.unspecified(), + Optional.of(ClusterMembership.from(cluster, counter++)), + Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty())); return hosts; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java index 9dba6fde9d4..2390ad68aa2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java @@ -1,23 +1,16 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model; -import com.yahoo.component.Version; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.api.HostInfo; -import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; -import com.yahoo.config.provision.NodeResources; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.stream.Collectors; /** @@ -44,7 +37,7 @@ public class HostResource implements Comparable<HostResource> { * @param host {@link com.yahoo.vespa.model.Host} object to bind to. */ public HostResource(Host host) { - this(host, new HostSpec(host.getHostname(), Optional.empty())); + this(host, new HostSpec(host.getHostname(), List.of())); } public HostResource(Host host, HostSpec spec) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java index 5343a322382..24b7b0949f6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java @@ -44,8 +44,8 @@ public class ResourcesReductionValidator implements ChangeValidator { ClusterSpec.Id clusterId, ValidationOverrides overrides, Instant now) { - if (current.minResources().nodeResources() == NodeResources.unspecified) return; - if (next.minResources().nodeResources() == NodeResources.unspecified) return; + if (current.minResources().nodeResources().isUnspecified()) return; + if (next.minResources().nodeResources().isUnspecified()) return; List<String> illegalChanges = Stream.of( validateResource("vCPU", diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java index ea47e490b12..8f737f02dca 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java @@ -159,8 +159,8 @@ public class NodesSpecification { * Returns a requirement from <code>count</code> non-dedicated nodes in one group */ public static NodesSpecification nonDedicated(int count, ConfigModelContext context) { - return new NodesSpecification(new ClusterResources(count, 1, NodeResources.unspecified), - new ClusterResources(count, 1, NodeResources.unspecified), + return new NodesSpecification(new ClusterResources(count, 1, NodeResources.unspecified()), + new ClusterResources(count, 1, NodeResources.unspecified()), false, context.getDeployState().getWantedNodeVespaVersion(), false, @@ -172,8 +172,8 @@ public class NodesSpecification { /** Returns a requirement from <code>count</code> dedicated nodes in one group */ public static NodesSpecification dedicated(int count, ConfigModelContext context) { - return new NodesSpecification(new ClusterResources(count, 1, NodeResources.unspecified), - new ClusterResources(count, 1, NodeResources.unspecified), + return new NodesSpecification(new ClusterResources(count, 1, NodeResources.unspecified()), + new ClusterResources(count, 1, NodeResources.unspecified()), true, context.getDeployState().getWantedNodeVespaVersion(), false, @@ -224,7 +224,7 @@ public class NodesSpecification { return new Pair<>(flavorResources, flavorResources); } else { - return new Pair<>(NodeResources.unspecified, NodeResources.unspecified); + return new Pair<>(NodeResources.unspecified(), NodeResources.unspecified()); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 741e5ebffd1..559a4b8b668 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -664,7 +664,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { .dockerImageRepository(deployState.getWantedDockerImageRepo()) .build(); int nodeCount = deployState.zone().environment().isProduction() ? 2 : 1; - Capacity capacity = Capacity.from(new ClusterResources(nodeCount, 1, NodeResources.unspecified), + Capacity capacity = Capacity.from(new ClusterResources(nodeCount, 1, NodeResources.unspecified()), false, !deployState.getProperties().isBootstrap()); var hosts = hostSystem.allocateHosts(clusterSpec, capacity, log); |