summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2019-01-05 21:29:35 +0100
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2019-01-05 21:29:35 +0100
commitecc56c918368f3c49239145b16041821e816f6fc (patch)
tree7b0296439c5a0df621c1b090ae9c1019c0d00047
parentae5a49d3449ffc174aadf334ccad7c1d3e5f851d (diff)
Ignore zones for which there are no jobs in deployment step to job mapping
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java12
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentSteps.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java2
5 files changed, 14 insertions, 12 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
index 5a4086f9abb..cee8d3ddfd9 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java
@@ -79,18 +79,18 @@ public enum JobType {
}
/** Returns the job type for the given zone */
- public static JobType from(SystemName system, ZoneId zone) {
+ public static Optional<JobType> from(SystemName system, ZoneId zone) {
for (JobType job : values())
if (zone.equals(job.zones.get(system)))
- return job;
- throw new IllegalArgumentException("No job is known for " + zone + ".");
+ return Optional.of(job);
+ return Optional.empty();
}
/** Returns the job job type for the given environment and region or null if none */
- public static JobType from(SystemName system, Environment environment, RegionName region) {
+ public static Optional<JobType> from(SystemName system, Environment environment, RegionName region) {
switch (environment) {
- case test: return systemTest;
- case staging: return stagingTest;
+ case test: return Optional.of(systemTest);
+ case staging: return Optional.of(stagingTest);
}
return from(system, ZoneId.from(environment, region));
}
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)));