diff options
author | jonmv <venstad@gmail.com> | 2022-04-16 18:54:48 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-04-19 10:38:07 +0200 |
commit | d07dbdd46f286eab7af8328d9847acf1602aa7f0 (patch) | |
tree | b1d3f1becbe3feccdc2a172a4a815e3f293cd0e9 /controller-api | |
parent | 71e513bd92b5fe7ae65bbb34593fd4b3c5baf66a (diff) |
Add JobType.fromjobName with provided zones for system and staging test
Diffstat (limited to 'controller-api')
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()); |