summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-06-02 11:17:11 +0200
committerHarald Musum <musum@verizonmedia.com>2021-06-02 11:17:11 +0200
commit9b7215ddb28edeb2acbdc4e3ed91721fe3f0b837 (patch)
treebc060bdc280a074cf17f977128407da57d74917f /node-repository
parentf5f4606cc41ace593279d1548657c72a4af45ad7 (diff)
Add canDeployNow method
OperatorChangeMaintainer checks all applications first for needed deployment due to operator changes and deployments are done serially. This may take some time, so check if we can deploy right before doing the actual deployment
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainer.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainer.java
index f620a6d113d..47337518a65 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainer.java
@@ -5,6 +5,7 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Deployer;
import com.yahoo.config.provision.NodeType;
import com.yahoo.jdisc.Metric;
+import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Agent;
@@ -70,4 +71,18 @@ public class OperatorChangeApplicationMaintainer extends ApplicationMaintainer {
.anyMatch(e -> lastDeployTime.get().isBefore(e));
}
+ @Override
+ protected boolean canDeployNow(ApplicationId application) {
+ return activeNodesByApplication().get(application) != null;
+ }
+
+ @Override
+ protected Map<ApplicationId, NodeList> activeNodesByApplication() {
+ return nodeRepository().nodes()
+ .list(Node.State.active)
+ .not().tester()
+ .groupingBy(node -> node.allocation().get().owner());
+ }
+
+
}