summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2019-10-24 10:32:12 +0200
committerJon Marius Venstad <venstad@gmail.com>2019-11-05 09:17:57 +0100
commitb488286422f60248a50f8508ddd2f727bbb6d10e (patch)
tree0102d4eeebbe582a05bcf2ede4a59e5a1b8ce040 /controller-server
parentc246d19f5faf4af1466c5ce9fc0e13c2811f1e64 (diff)
Change block window considerations to view union over all instances
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java12
4 files changed, 15 insertions, 9 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java
index a2487e8a0d1..638f406409f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java
@@ -177,7 +177,8 @@ public class ApplicationList {
/** Returns the subset of applications that are allowed to upgrade at the given time */
public ApplicationList canUpgradeAt(Instant instant) {
- return filteredOn(application -> application.deploymentSpec().canUpgradeAt(instant));
+ return filteredOn(application -> application.deploymentSpec().instances().stream()
+ .allMatch(instance -> instance.canUpgradeAt(instant)));
}
/** Returns the subset of applications that have at least one assigned rotation */
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java
index 95e1c53f10c..b130f7107dd 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java
@@ -21,8 +21,9 @@ public class OutstandingChangeDeployer extends Maintainer {
@Override
protected void maintain() {
for (Application application : controller().applications().asList()) {
- if (application.outstandingChange().hasTargets()
- && application.deploymentSpec().canChangeRevisionAt(controller().clock().instant())) {
+ if ( application.outstandingChange().hasTargets()
+ && application.deploymentSpec().instances().stream()
+ .allMatch(instance -> instance.canChangeRevisionAt(controller().clock().instant()))) {
controller().applications().deploymentTrigger().triggerChange(application.id(),
application.outstandingChange());
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index e55b08d0b4a..9de0e753ee7 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -737,7 +737,7 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
// Change blockers
Cursor changeBlockers = object.setArray("changeBlockers");
- deploymentSpec.changeBlocker().forEach(changeBlocker -> {
+ deploymentSpec.requireInstance(instance.name()).changeBlocker().forEach(changeBlocker -> {
Cursor changeBlockerObject = changeBlockers.addObject();
changeBlockerObject.setBool("versions", changeBlocker.blocksVersions());
changeBlockerObject.setBool("revisions", changeBlocker.blocksRevisions());
@@ -843,7 +843,7 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
// Change blockers
Cursor changeBlockers = object.setArray("changeBlockers");
- application.deploymentSpec().changeBlocker().forEach(changeBlocker -> {
+ application.deploymentSpec().requireInstance(instance.name()).changeBlocker().forEach(changeBlocker -> {
Cursor changeBlockerObject = changeBlockers.addObject();
changeBlockerObject.setBool("versions", changeBlocker.blocksVersions());
changeBlockerObject.setBool("revisions", changeBlocker.blocksRevisions());
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
index 23d2646acd7..08d6b5602fe 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java
@@ -177,8 +177,10 @@ class JobControllerApiHandlerHelper {
lastPlatformObject.setString("deploying", completed + " of " + steps.productionJobs().size() + " complete");
else if (completed == steps.productionJobs().size())
lastPlatformObject.setString("completed", completed + " of " + steps.productionJobs().size() + " complete");
- else if ( ! application.deploymentSpec().canUpgradeAt(controller.clock().instant())) {
- lastPlatformObject.setString("blocked", application.deploymentSpec().changeBlocker().stream()
+ else if ( ! application.deploymentSpec().instances().stream()
+ .allMatch(spec -> spec.canUpgradeAt(controller.clock().instant()))) {
+ lastPlatformObject.setString("blocked", application.deploymentSpec().instances().stream()
+ .flatMap(spec -> spec.changeBlocker().stream())
.filter(blocker -> blocker.blocksVersions())
.filter(blocker -> blocker.window().includes(controller.clock().instant()))
.findAny().map(blocker -> blocker.window().toString()).get());
@@ -200,8 +202,10 @@ class JobControllerApiHandlerHelper {
lastApplicationObject.setString("deploying", completed + " of " + steps.productionJobs().size() + " complete");
else if (completed == steps.productionJobs().size())
lastApplicationObject.setString("completed", completed + " of " + steps.productionJobs().size() + " complete");
- else if ( ! application.deploymentSpec().canChangeRevisionAt(controller.clock().instant())) {
- lastApplicationObject.setString("blocked", application.deploymentSpec().changeBlocker().stream()
+ else if ( ! application.deploymentSpec().instances().stream()
+ .allMatch(spec -> spec.canChangeRevisionAt(controller.clock().instant()))) {
+ lastApplicationObject.setString("blocked", application.deploymentSpec().instances().stream()
+ .flatMap(spec -> spec.changeBlocker().stream())
.filter(blocker -> blocker.blocksRevisions())
.filter(blocker -> blocker.window().includes(controller.clock().instant()))
.findAny().map(blocker -> blocker.window().toString()).get());