diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-01-05 21:29:35 +0100 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-01-05 21:29:35 +0100 |
commit | ecc56c918368f3c49239145b16041821e816f6fc (patch) | |
tree | 7b0296439c5a0df621c1b090ae9c1019c0d00047 /controller-server | |
parent | ae5a49d3449ffc174aadf334ccad7c1d3e5f851d (diff) |
Ignore zones for which there are no jobs in deployment step to job mapping
Diffstat (limited to 'controller-server')
4 files changed, 8 insertions, 6 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index 8def309a2f0..eb86f0c2919 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -330,7 +330,8 @@ public class ApplicationController { () -> new IllegalArgumentException("Application package must be given when deploying to " + zone)); } else { - JobType jobType = JobType.from(controller.system(), zone); + JobType jobType = JobType.from(controller.system(), zone) + .orElseThrow(() -> new IllegalArgumentException("No job is known for " + zone + ".")); Optional<JobStatus> job = Optional.ofNullable(application.get().deploymentJobs().jobStatus().get(jobType)); if ( ! job.isPresent() || ! job.get().lastTriggered().isPresent() diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java index 925f3e5948a..c400ad4c9cc 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java @@ -13,6 +13,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -38,8 +39,7 @@ public class DeploymentSteps { /** Returns jobs for this, in the order they are declared */ public List<JobType> jobs() { return spec.steps().stream() - .flatMap(step -> step.zones().stream()) - .map(this::toJob) + .flatMap(step -> toJobs(step).stream()) .collect(collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); } @@ -66,6 +66,7 @@ public class DeploymentSteps { public List<JobType> toJobs(DeploymentSpec.Step step) { return step.zones().stream() .map(this::toJob) + .filter(Optional::isPresent).map(Optional::get) .collect(collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); } @@ -97,7 +98,7 @@ public class DeploymentSteps { } /** Resolve job from deployment zone */ - private JobType toJob(DeploymentSpec.DeclaredZone zone) { + private Optional<JobType> toJob(DeploymentSpec.DeclaredZone zone) { return JobType.from(system.get(), zone.environment(), zone.region().orElse(null)); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java index c7127567286..25a051e192f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java @@ -157,7 +157,7 @@ public class ControllerTest { fail("Expected exception due to illegal deployment spec."); } catch (IllegalArgumentException e) { - assertEquals("No job is known for zone prod.deep-space-9 in default.", e.getMessage()); + assertEquals("Zone prod.deep-space-9 in deployment spec was not found in this system!", e.getMessage()); } // prod zone removal is not allowed diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java index 81fa1685702..7dff2667b9f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java @@ -89,7 +89,7 @@ public class ApplicationSerializerTest { statusList.add(JobStatus.initial(JobType.stagingTest) .withTriggering(Version.fromString("5.6.6"), ApplicationVersion.unknown, empty(), "Test 2", Instant.ofEpochMilli(5)) .withCompletion(11, Optional.of(JobError.unknown), Instant.ofEpochMilli(6))); - statusList.add(JobStatus.initial(JobType.from(main, zone1)) + statusList.add(JobStatus.initial(JobType.from(main, zone1).get()) .withTriggering(Version.fromString("5.6.6"), ApplicationVersion.unknown, deployments.stream().findFirst(), "Test 3", Instant.ofEpochMilli(6)) .withCompletion(11, empty(), Instant.ofEpochMilli(7))); |