summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2022-11-02 14:24:49 +0100
committerValerij Fredriksen <valerijf@yahooinc.com>2022-11-02 15:58:06 +0100
commit2a348d61213778f11c762de5f3570d8174f9f294 (patch)
treea4c6927aece141e2d7d5f86596b32b795c59cf97 /node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
parent6688797036b4239ba58c8774f4c0893ed660bbc9 (diff)
Move resume provisioning to separate maintainer
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java50
1 files changed, 0 insertions, 50 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
index 6470e4fdb23..245bce1b9e8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
@@ -26,17 +26,13 @@ import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.NodesAndHosts;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.History;
-import com.yahoo.vespa.hosted.provision.node.IP;
-import com.yahoo.vespa.hosted.provision.provisioning.FatalProvisioningException;
import com.yahoo.vespa.hosted.provision.provisioning.HostProvisioner;
import com.yahoo.vespa.hosted.provision.provisioning.HostProvisioner.HostSharing;
import com.yahoo.vespa.hosted.provision.provisioning.NodeCandidate;
import com.yahoo.vespa.hosted.provision.provisioning.NodePrioritizer;
import com.yahoo.vespa.hosted.provision.provisioning.NodeSpec;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisionedHost;
-import com.yahoo.yolean.Exceptions;
-import javax.naming.NamingException;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
@@ -45,7 +41,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.Set;
import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -77,46 +72,10 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
@Override
protected double maintain() {
NodeList nodes = nodeRepository().nodes().list();
- resumeProvisioning(nodes);
convergeToCapacity(nodes);
return 1.0;
}
- /** Resume provisioning of already provisioned hosts and their children */
- private void resumeProvisioning(NodeList nodes) {
- Map<String, Set<Node>> nodesByProvisionedParentHostname =
- nodes.nodeType(NodeType.tenant, NodeType.config, NodeType.controller)
- .asList()
- .stream()
- .filter(node -> node.parentHostname().isPresent())
- .collect(Collectors.groupingBy(node -> node.parentHostname().get(), Collectors.toSet()));
-
- nodes.state(Node.State.provisioned).nodeType(NodeType.host, NodeType.confighost, NodeType.controllerhost).forEach(host -> {
- Set<Node> children = nodesByProvisionedParentHostname.getOrDefault(host.hostname(), Set.of());
- try {
- try (var lock = nodeRepository().nodes().lockUnallocated()) {
- List<Node> updatedNodes = hostProvisioner.provision(host, children);
- verifyDns(updatedNodes);
- nodeRepository().nodes().write(updatedNodes, lock);
- }
- } catch (IllegalArgumentException | IllegalStateException e) {
- log.log(Level.INFO, "Could not provision " + host.hostname() + " with " + children.size() + " children, will retry in " +
- interval() + ": " + Exceptions.toMessageString(e));
- } catch (FatalProvisioningException e) {
- log.log(Level.SEVERE, "Failed to provision " + host.hostname() + " with " + children.size() +
- " children, failing out the host recursively", e);
- // Fail out as operator to force a quick redeployment
- nodeRepository().nodes().failOrMarkRecursively(
- host.hostname(), Agent.DynamicProvisioningMaintainer, "Failed by HostProvisioner due to provisioning failure");
- } catch (RuntimeException e) {
- if (e.getCause() instanceof NamingException)
- log.log(Level.INFO, "Could not provision " + host.hostname() + ", will retry in " + interval() + ": " + Exceptions.toMessageString(e));
- else
- log.log(Level.WARNING, "Failed to provision " + host.hostname() + ", will retry in " + interval(), e);
- }
- });
- }
-
/** Converge zone to wanted capacity */
private void convergeToCapacity(NodeList nodes) {
List<Node> excessHosts;
@@ -337,13 +296,4 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
return new NodeResources(clusterCapacity.vcpu(), clusterCapacity.memoryGb(), clusterCapacity.diskGb(),
clusterCapacity.bandwidthGbps());
}
-
- /** Verify DNS configuration of given nodes */
- private void verifyDns(List<Node> nodes) {
- for (var node : nodes) {
- for (var ipAddress : node.ipConfig().primary()) {
- IP.verifyDns(node.hostname(), ipAddress, nodeRepository().nameResolver());
- }
- }
- }
}