diff options
6 files changed, 16 insertions, 50 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java index 446dc8d1fc3..0fc76e26d34 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java @@ -170,15 +170,6 @@ public class DeploymentSpec { /** Returns the major version this application is pinned to, or empty (default) to allow all major versions */ public Optional<Integer> majorVersion() { return majorVersion; } - // TODO: Remove after November 2019 - public boolean canUpgradeAt(Instant instant) { return singleInstance().canUpgradeAt(instant); } - - // TODO: Remove after November 2019 - public boolean canChangeRevisionAt(Instant instant) { return singleInstance().canChangeRevisionAt(instant); } - - // TODO: Remove after November 2019 - public List<ChangeBlocker> changeBlocker() { return singleInstance().changeBlocker(); } - /** Returns the deployment steps of this in the order they will be performed */ public List<Step> steps() { if (hasSingleInstance(steps)) return singleInstance().steps(); // TODO: Remove line after November 2019 diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecDeprecatedAPITest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecDeprecatedAPITest.java index 5a8358e65c3..b0ebc98e12b 100644 --- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecDeprecatedAPITest.java +++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecDeprecatedAPITest.java @@ -380,38 +380,7 @@ public class DeploymentSpecDeprecatedAPITest { " </prod>\n" + "</deployment>" ); - DeploymentSpec spec = DeploymentSpec.fromXml(r); - } - - @Test - public void deploymentSpecWithChangeBlocker() { - StringReader r = new StringReader( - "<deployment>\n" + - " <block-change revision='false' days='mon,tue' hours='15-16'/>\n" + - " <block-change days='sat' hours='10' time-zone='CET'/>\n" + - " <prod>\n" + - " <region active='true'>us-west-1</region>\n" + - " </prod>\n" + - "</deployment>" - ); - DeploymentSpec spec = DeploymentSpec.fromXml(r); - assertEquals(2, spec.changeBlocker().size()); - assertTrue(spec.changeBlocker().get(0).blocksVersions()); - assertFalse(spec.changeBlocker().get(0).blocksRevisions()); - assertEquals(ZoneId.of("UTC"), spec.changeBlocker().get(0).window().zone()); - - assertTrue(spec.changeBlocker().get(1).blocksVersions()); - assertTrue(spec.changeBlocker().get(1).blocksRevisions()); - assertEquals(ZoneId.of("CET"), spec.changeBlocker().get(1).window().zone()); - - assertTrue(spec.canUpgradeAt(Instant.parse("2017-09-18T14:15:30.00Z"))); - assertFalse(spec.canUpgradeAt(Instant.parse("2017-09-18T15:15:30.00Z"))); - assertFalse(spec.canUpgradeAt(Instant.parse("2017-09-18T16:15:30.00Z"))); - assertTrue(spec.canUpgradeAt(Instant.parse("2017-09-18T17:15:30.00Z"))); - - assertTrue(spec.canUpgradeAt(Instant.parse("2017-09-23T09:15:30.00Z"))); - assertFalse(spec.canUpgradeAt(Instant.parse("2017-09-23T08:15:30.00Z"))); // 10 in CET - assertTrue(spec.canUpgradeAt(Instant.parse("2017-09-23T10:15:30.00Z"))); + DeploymentSpec.fromXml(r); } @Test 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()); |