diff options
author | jonmv <venstad@gmail.com> | 2023-05-30 12:26:22 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-05-30 12:26:22 +0200 |
commit | 84dd006054d1583df0313e81cc697fc91eedee61 (patch) | |
tree | 1f1c96c499ca0462400cc64778756b66df39ec78 /node-repository/src/main | |
parent | f20e878c588dcc45a0d3b9d1abeb9f1e43a01201 (diff) |
Move host TTL setting to node-reposotiry
Diffstat (limited to 'node-repository/src/main')
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, |