summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-05-30 12:26:22 +0200
committerjonmv <venstad@gmail.com>2023-05-30 12:26:22 +0200
commit84dd006054d1583df0313e81cc697fc91eedee61 (patch)
tree1f1c96c499ca0462400cc64778756b66df39ec78 /node-repository/src/main
parentf20e878c588dcc45a0d3b9d1abeb9f1e43a01201 (diff)
Move host TTL setting to node-reposotiry
Diffstat (limited to 'node-repository/src/main')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java4
5 files changed, 10 insertions, 17 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java
index 9369897efa3..f3b76537463 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostCapacityMaintainer.java
@@ -233,10 +233,10 @@ public class HostCapacityMaintainer extends NodeRepositoryMaintainer {
List<Integer> provisionIndices = nodeRepository().database().readProvisionIndices(count);
List<Node> hosts = new ArrayList<>();
hostProvisioner.provisionHosts(provisionIndices, NodeType.host, nodeResources, ApplicationId.defaultId(), osVersion,
- HostSharing.shared, Optional.empty(), Optional.empty(), Duration.ZERO,
+ HostSharing.shared, Optional.empty(), Optional.empty(),
nodeRepository().zone().cloud().account(),
provisionedHosts -> {
- hosts.addAll(provisionedHosts.stream().map(ProvisionedHost::generateHost).toList());
+ hosts.addAll(provisionedHosts.stream().map(host -> host.generateHost(Duration.ZERO)).toList());
nodeRepository().nodes().addNodes(hosts, Agent.HostCapacityMaintainer);
});
return hosts;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
index 0fa6d3c57fa..5ae5a4f09d9 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
@@ -100,13 +100,13 @@ public class GroupPreparer {
NodeAllocation.HostDeficit deficit = allocation.hostDeficit().get();
List<Node> hosts = new ArrayList<>();
Consumer<List<ProvisionedHost>> provisionedHostsConsumer = provisionedHosts -> {
- hosts.addAll(provisionedHosts.stream().map(ProvisionedHost::generateHost).toList());
+ hosts.addAll(provisionedHosts.stream().map(host -> host.generateHost(requestedNodes.hostTTL())).toList());
nodeRepository.nodes().addNodes(hosts, Agent.application);
// Offer the nodes on the newly provisioned hosts, this should be enough to cover the deficit
List<NodeCandidate> candidates = provisionedHosts.stream()
.map(host -> NodeCandidate.createNewExclusiveChild(host.generateNode(),
- host.generateHost()))
+ host.generateHost(requestedNodes.hostTTL())))
.toList();
allocation.offer(candidates);
};
@@ -114,7 +114,7 @@ public class GroupPreparer {
try {
hostProvisioner.get().provisionHosts(
allocation.provisionIndices(deficit.count()), hostType, deficit.resources(), application,
- osVersion, sharing, Optional.of(cluster.type()), Optional.of(cluster.id()), requestedNodes.hostTTL(),
+ osVersion, sharing, Optional.of(cluster.type()), Optional.of(cluster.id()),
requestedNodes.cloudAccount(), provisionedHostsConsumer);
} catch (NodeAllocationException e) {
// Mark the nodes that were written to ZK in the consumer for deprovisioning. While these hosts do
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
index d4a0b7de057..7c17c22334f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostProvisioner.java
@@ -54,7 +54,7 @@ public interface HostProvisioner {
* to be shared by multiple cluster nodes
* @param cloudAccount the cloud account to use
* @param provisionedHostConsumer consumer of {@link ProvisionedHost}s describing the provisioned nodes,
- * the {@link Node} returned from {@link ProvisionedHost#generateHost()} must be
+ * the {@link Node} returned from {@link ProvisionedHost#generateHost} must be
* written to ZK immediately in case the config server goes down while waiting
* for the provisioning to finish.
* @throws NodeAllocationException if the cloud provider cannot satisfy the request
@@ -67,7 +67,6 @@ public interface HostProvisioner {
HostSharing sharing,
Optional<ClusterSpec.Type> clusterType,
Optional<ClusterSpec.Id> clusterId,
- Duration hostTTL,
CloudAccount cloudAccount,
Consumer<List<ProvisionedHost>> provisionedHostConsumer) throws NodeAllocationException;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
index 3b3a5e3a82b..c9fd1d08759 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionedHost.java
@@ -33,7 +33,6 @@ public class ProvisionedHost {
private final NodeType hostType;
private final Optional<ApplicationId> exclusiveToApplicationId;
private final Optional<ClusterSpec.Type> exclusiveToClusterType;
- private final Duration hostTTL;
private final List<HostName> nodeHostnames;
private final NodeResources nodeResources;
private final Version osVersion;
@@ -41,7 +40,7 @@ public class ProvisionedHost {
public ProvisionedHost(String id, String hostHostname, Flavor hostFlavor, NodeType hostType,
Optional<ApplicationId> exclusiveToApplicationId, Optional<ClusterSpec.Type> exclusiveToClusterType,
- Duration hostTTL, List<HostName> nodeHostnames, NodeResources nodeResources,
+ List<HostName> nodeHostnames, NodeResources nodeResources,
Version osVersion, CloudAccount cloudAccount) {
if (!hostType.isHost()) throw new IllegalArgumentException(hostType + " is not a host");
this.id = Objects.requireNonNull(id, "Host id must be set");
@@ -49,7 +48,6 @@ public class ProvisionedHost {
this.hostFlavor = Objects.requireNonNull(hostFlavor, "Host flavor must be set");
this.hostType = Objects.requireNonNull(hostType, "Host type must be set");
this.exclusiveToApplicationId = Objects.requireNonNull(exclusiveToApplicationId, "exclusiveToApplicationId must be set");
- this.hostTTL = Objects.requireNonNull(hostTTL, "hostTTL must be set");
this.exclusiveToClusterType = Objects.requireNonNull(exclusiveToClusterType, "exclusiveToClusterType must be set");
this.nodeHostnames = validateNodeAddresses(nodeHostnames);
this.nodeResources = Objects.requireNonNull(nodeResources, "Node resources must be set");
@@ -66,7 +64,7 @@ public class ProvisionedHost {
}
/** Generate {@link Node} instance representing the provisioned physical host */
- public Node generateHost() {
+ public Node generateHost(Duration hostTTL) {
Node.Builder builder = Node.create(id, IP.Config.of(Set.of(), Set.of(), nodeHostnames), hostHostname, hostFlavor, hostType)
.status(Status.initial().withOsVersion(OsVersion.EMPTY.withCurrent(Optional.of(osVersion))))
.cloudAccount(cloudAccount);
@@ -107,7 +105,6 @@ public class ProvisionedHost {
hostType == that.hostType &&
exclusiveToApplicationId.equals(that.exclusiveToApplicationId) &&
exclusiveToClusterType.equals(that.exclusiveToClusterType) &&
- hostTTL.equals(that.hostTTL) &&
nodeHostnames.equals(that.nodeHostnames) &&
nodeResources.equals(that.nodeResources) &&
osVersion.equals(that.osVersion) &&
@@ -116,7 +113,7 @@ public class ProvisionedHost {
@Override
public int hashCode() {
- return Objects.hash(id, hostHostname, hostFlavor, hostType, exclusiveToApplicationId, exclusiveToClusterType, hostTTL, nodeHostnames, nodeResources, osVersion, cloudAccount);
+ return Objects.hash(id, hostHostname, hostFlavor, hostType, exclusiveToApplicationId, exclusiveToClusterType, nodeHostnames, nodeResources, osVersion, cloudAccount);
}
@Override
@@ -128,7 +125,6 @@ public class ProvisionedHost {
", hostType=" + hostType +
", exclusiveToApplicationId=" + exclusiveToApplicationId +
", exclusiveToClusterType=" + exclusiveToClusterType +
- ", hostTTL=" + hostTTL +
", nodeAddresses=" + nodeHostnames +
", nodeResources=" + nodeResources +
", osVersion=" + osVersion +
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
index 962c45cff5b..5e3cdaec216 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
@@ -68,8 +68,7 @@ public class MockHostProvisioner implements HostProvisioner {
public void provisionHosts(List<Integer> provisionIndices, NodeType hostType, NodeResources resources,
ApplicationId applicationId, Version osVersion, HostSharing sharing,
Optional<ClusterSpec.Type> clusterType, Optional<ClusterSpec.Id> clusterId,
- Duration hostTTL, CloudAccount cloudAccount,
- Consumer<List<ProvisionedHost>> provisionedHostsConsumer) {
+ CloudAccount cloudAccount, Consumer<List<ProvisionedHost>> provisionedHostsConsumer) {
Flavor hostFlavor = hostFlavors.get(clusterType.orElse(ClusterSpec.Type.content));
if (hostFlavor == null)
hostFlavor = flavors.stream()
@@ -87,7 +86,6 @@ public class MockHostProvisioner implements HostProvisioner {
hostType,
sharing == HostSharing.exclusive ? Optional.of(applicationId) : Optional.empty(),
Optional.empty(),
- hostTTL,
createHostnames(hostType, hostFlavor, index),
resources,
osVersion,