summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-04-16 18:54:48 +0200
committerjonmv <venstad@gmail.com>2022-04-19 10:38:07 +0200
commitd07dbdd46f286eab7af8328d9847acf1602aa7f0 (patch)
treeb1d3f1becbe3feccdc2a172a4a815e3f293cd0e9 /controller-api
parent71e513bd92b5fe7ae65bbb34593fd4b3c5baf66a (diff)
Add JobType.fromjobName with provided zones for system and staging test
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java15
-rw-r--r--controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java9
2 files changed, 22 insertions, 2 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 c38d3704295..a5083368584 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
@@ -320,6 +320,21 @@ public final class JobType implements Comparable<JobType> {
.orElseThrow(() -> new IllegalArgumentException("Unknown job name '" + jobName + "'"));
}
+ // TODO jonmv: require zones
+ public static JobType fromJobName(String jobName, ZoneRegistry zones) {
+ String[] parts = jobName.split("-", 2);
+ if (parts.length != 2) throw new IllegalArgumentException("job names must be 'system-test', 'staging-test', or environment and region parts, separated by '-', but got: " + jobName);
+ switch (parts[0]) {
+ case "system": return systemTest(zones);
+ case "staging": return stagingTest(zones);
+ case "production": return prod(parts[1]);
+ case "test": return test(parts[1]);
+ case "dev": return dev(parts[1]);
+ case "perf": return perf(parts[1]);
+ default: throw new IllegalArgumentException("job names must begin with one of: system, staging, production, test, dev, perf; but got: " + jobName);
+ }
+ }
+
/** Returns the job type for the given zone */
public static Optional<JobType> from(SystemName system, ZoneId zone, boolean isTest) {
return Stream.of(values)
diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java
index 990e8911e91..c1ea27d41ea 100644
--- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java
+++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java
@@ -30,8 +30,13 @@ public class JobTypeTest {
}
}
- assertEquals(JobType.testUsEast3, JobType.fromJobName("prod.us-east-3.test"));
- assertEquals(JobType.devAwsUsEast1c, JobType.fromJobName("dev.aws-us-east-1c"));
+ assertEquals(JobType.testUsEast3, JobType.ofSerialized("prod.us-east-3.test"));
+ assertEquals(JobType.devAwsUsEast1c, JobType.ofSerialized("dev.aws-us-east-1c"));
+
+ assertEquals(JobType.fromJobName("production-my-zone", null), JobType.prod("my-zone"));
+ assertEquals(JobType.fromJobName("test-my-zone", null), JobType.test("my-zone"));
+ assertEquals(JobType.fromJobName("dev-my-zone", null), JobType.dev("my-zone"));
+ assertEquals(JobType.fromJobName("perf-my-zone", null), JobType.perf("my-zone"));
assertFalse(JobType.dev("snøhetta").isTest());
assertTrue(JobType.dev("snøhetta").isDeployment());