summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/config/model/provision
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-05-23 07:21:43 +0200
committerGitHub <noreply@github.com>2020-05-23 07:21:43 +0200
commit52e8214e1dfcc987b8227d19c288d05b54e711f9 (patch)
tree5e2355e5c08ba7698cf9c6e930496fb2a5ce9385 /config-model/src/main/java/com/yahoo/config/model/provision
parent5c0bfb06784075ac72c7891b7dce6454d85bdff8 (diff)
Revert "Bratseth/real resources in model"
Diffstat (limited to 'config-model/src/main/java/com/yahoo/config/model/provision')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/HostsXmlProvisioner.java5
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java29
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/SingleNodeProvisioner.java16
3 files changed, 20 insertions, 30 deletions
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<Host> 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<NodeResources> 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<NodeResources> 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<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(),
- 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;
}