summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobId.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobType.java182
-rw-r--r--controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobTypeTest.java9
3 files changed, 88 insertions, 105 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobId.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobId.java
index 846f3784657..0ef9807270e 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobId.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/JobId.java
@@ -29,7 +29,7 @@ public class JobId {
if (o == null || getClass() != o.getClass()) return false;
JobId jobId = (JobId) o;
return application.equals(jobId.application) &&
- type == jobId.type;
+ type.equals(jobId.type);
}
@Override
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 e9231f80091..4505fe3ceb5 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
@@ -41,140 +41,91 @@ public final class JobType implements Comparable<JobType> {
PublicCd, ZoneId.from("staging", "aws-us-east-1c"),
Public , ZoneId.from("staging", "aws-us-east-1c")));
- public static final JobType productionUsEast3 = of("production-us-east-3",
- Map.of(main, ZoneId.from("prod" , "us-east-3")));
+ public static final JobType productionUsEast3 = prod("us-east-3");
- public static final JobType testUsEast3 = of("test-us-east-3",
- Map.of(main, ZoneId.from("prod" , "us-east-3")), true);
+ public static final JobType testUsEast3 = test("us-east-3");
- public static final JobType productionUsWest1 = of("production-us-west-1",
- Map.of(main, ZoneId.from("prod" , "us-west-1")));
+ public static final JobType productionUsWest1 = prod("us-west-1");
- public static final JobType testUsWest1 = of("test-us-west-1",
- Map.of(main, ZoneId.from("prod" , "us-west-1")), true);
+ public static final JobType testUsWest1 = test("us-west-1");
- public static final JobType productionUsCentral1 = of("production-us-central-1",
- Map.of(main, ZoneId.from("prod" , "us-central-1")));
+ public static final JobType productionUsCentral1 = prod("us-central-1");
- public static final JobType testUsCentral1 = of("test-us-central-1",
- Map.of(main, ZoneId.from("prod" , "us-central-1")), true);
+ public static final JobType testUsCentral1 = test("us-central-1");
- public static final JobType productionApNortheast1 = of("production-ap-northeast-1",
- Map.of(main, ZoneId.from("prod" , "ap-northeast-1")));
+ public static final JobType productionApNortheast1 = prod("ap-northeast-1");
- public static final JobType testApNortheast1 = of("test-ap-northeast-1",
- Map.of(main, ZoneId.from("prod" , "ap-northeast-1")), true);
+ public static final JobType testApNortheast1 = test("ap-northeast-1");
- public static final JobType productionApNortheast2 = of("production-ap-northeast-2",
- Map.of(main, ZoneId.from("prod" , "ap-northeast-2")));
+ public static final JobType productionApNortheast2 = prod("ap-northeast-2");
- public static final JobType testApNortheast2 = of("test-ap-northeast-2",
- Map.of(main, ZoneId.from("prod" , "ap-northeast-2")), true);
+ public static final JobType testApNortheast2 = test("ap-northeast-2");
- public static final JobType productionApSoutheast1 = of("production-ap-southeast-1",
- Map.of(main, ZoneId.from("prod" , "ap-southeast-1")));
+ public static final JobType productionApSoutheast1 = prod("ap-southeast-1");
- public static final JobType testApSoutheast1 = of("test-ap-southeast-1",
- Map.of(main, ZoneId.from("prod" , "ap-southeast-1")), true);
+ public static final JobType testApSoutheast1 = test("ap-southeast-1");
- public static final JobType productionEuWest1 = of("production-eu-west-1",
- Map.of(main, ZoneId.from("prod" , "eu-west-1")));
+ public static final JobType productionEuWest1 = prod("eu-west-1");
- public static final JobType testEuWest1 = of("test-eu-west-1",
- Map.of(main, ZoneId.from("prod" , "eu-west-1")), true);
+ public static final JobType testEuWest1 = test("eu-west-1");
- public static final JobType productionAwsUsEast1a= of("production-aws-us-east-1a",
- Map.of(main, ZoneId.from("prod" , "aws-us-east-1a")));
+ public static final JobType productionAwsUsEast1a= prod("aws-us-east-1a");
- public static final JobType testAwsUsEast1a = of("test-aws-us-east-1a",
- Map.of(main, ZoneId.from("prod" , "aws-us-east-1a")), true);
+ public static final JobType testAwsUsEast1a = test("aws-us-east-1a");
- public static final JobType productionAwsUsEast1c= of("production-aws-us-east-1c",
- Map.of(PublicCd, ZoneId.from("prod", "aws-us-east-1c"),
- Public, ZoneId.from("prod", "aws-us-east-1c")));
+ public static final JobType productionAwsUsEast1c= prod("aws-us-east-1c");
- public static final JobType testAwsUsEast1c = of("test-aws-us-east-1c",
- Map.of(PublicCd, ZoneId.from("prod", "aws-us-east-1c"),
- Public, ZoneId.from("prod", "aws-us-east-1c")), true);
+ public static final JobType testAwsUsEast1c = test("aws-us-east-1c");
- public static final JobType productionAwsApNortheast1a= of("production-aws-ap-northeast-1a",
- Map.of(Public, ZoneId.from("prod", "aws-ap-northeast-1a")));
+ public static final JobType productionAwsApNortheast1a= prod("aws-ap-northeast-1a");
- public static final JobType testAwsApNortheast1a = of("test-aws-ap-northeast-1a",
- Map.of(Public, ZoneId.from("prod", "aws-ap-northeast-1a")), true);
+ public static final JobType testAwsApNortheast1a = test("aws-ap-northeast-1a");
- public static final JobType productionAwsEuWest1a= of("production-aws-eu-west-1a",
- Map.of(Public, ZoneId.from("prod", "aws-eu-west-1a")));
+ public static final JobType productionAwsEuWest1a= prod("aws-eu-west-1a");
- public static final JobType testAwsEuWest1a = of("test-aws-eu-west-1a",
- Map.of(Public, ZoneId.from("prod", "aws-eu-west-1a")), true);
+ public static final JobType testAwsEuWest1a = test("aws-eu-west-1a");
- public static final JobType productionAwsUsWest2a= of("production-aws-us-west-2a",
- Map.of(main, ZoneId.from("prod", "aws-us-west-2a"),
- Public, ZoneId.from("prod", "aws-us-west-2a")));
+ public static final JobType productionAwsUsWest2a= prod("aws-us-west-2a");
- public static final JobType testAwsUsWest2a = of("test-aws-us-west-2a",
- Map.of(main, ZoneId.from("prod", "aws-us-west-2a"),
- Public, ZoneId.from("prod", "aws-us-west-2a")), true);
+ public static final JobType testAwsUsWest2a = test("aws-us-west-2a");
- public static final JobType productionAwsUsEast1b= of("production-aws-us-east-1b",
- Map.of(main, ZoneId.from("prod" , "aws-us-east-1b")));
+ public static final JobType productionAwsUsEast1b= prod("aws-us-east-1b");
- public static final JobType testAwsUsEast1b = of("test-aws-us-east-1b",
- Map.of(main, ZoneId.from("prod" , "aws-us-east-1b")), true);
+ public static final JobType testAwsUsEast1b = test("aws-us-east-1b");
- public static final JobType devUsEast1 = of("dev-us-east-1",
- Map.of(main, ZoneId.from("dev" , "us-east-1")));
+ public static final JobType devUsEast1 = dev("us-east-1");
- public static final JobType devAwsUsEast2a = of("dev-aws-us-east-2a",
- Map.of(main, ZoneId.from("dev" , "aws-us-east-2a")));
+ public static final JobType devAwsUsEast2a = dev("aws-us-east-2a");
- public static final JobType productionCdAwsUsEast1a = of("production-cd-aws-us-east-1a",
- Map.of(cd , ZoneId.from("prod" , "cd-aws-us-east-1a")));
+ public static final JobType productionCdAwsUsEast1a = prod("cd-aws-us-east-1a");
- public static final JobType testCdAwsUsEast1a = of("test-cd-aws-us-east-1a",
- Map.of(cd , ZoneId.from("prod" , "cd-aws-us-east-1a")), true);
+ public static final JobType testCdAwsUsEast1a = test("cd-aws-us-east-1a");
- public static final JobType productionCdUsCentral1 = of("production-cd-us-central-1",
- Map.of(cd , ZoneId.from("prod" , "cd-us-central-1")));
+ public static final JobType productionCdUsCentral1 = prod("cd-us-central-1");
- public static final JobType testCdUsCentral1 = of("test-cd-us-central-1",
- Map.of(cd , ZoneId.from("prod" , "cd-us-central-1")), true);
+ public static final JobType testCdUsCentral1 = test("cd-us-central-1");
- // TODO: Cannot remove production-cd-us-central-2 until we know there are no serialized data in controller referencing it
- public static final JobType productionCdUsCentral2 = of("production-cd-us-central-2",
- Map.of(cd , ZoneId.from("prod" , "cd-us-central-2")));
+ public static final JobType productionCdUsCentral2 = prod("cd-us-central-2");
- public static final JobType testCdUsCentral2 = of("test-cd-us-central-2",
- Map.of(cd , ZoneId.from("prod" , "cd-us-central-2")), true);
+ public static final JobType testCdUsCentral2 = test("cd-us-central-2");
- public static final JobType productionCdUsEast1= of("production-cd-us-east-1",
- Map.of(cd , ZoneId.from("prod" , "cd-us-east-1")));
+ public static final JobType productionCdUsEast1= prod("cd-us-east-1");
- public static final JobType testCdUsEast1 = of("test-cd-us-east-1",
- Map.of(cd , ZoneId.from("prod" , "cd-us-east-1")), true);
+ public static final JobType testCdUsEast1 = test("cd-us-east-1");
- public static final JobType productionCdUsWest1= of("production-cd-us-west-1",
- Map.of(cd , ZoneId.from("prod" , "cd-us-west-1")));
+ public static final JobType productionCdUsWest1= prod("cd-us-west-1");
- public static final JobType testCdUsWest1 = of("test-cd-us-west-1",
- Map.of(cd , ZoneId.from("prod" , "cd-us-west-1")), true);
+ public static final JobType testCdUsWest1 = test("cd-us-west-1");
- public static final JobType devCdUsCentral1 = of("dev-cd-us-central-1",
- Map.of(cd , ZoneId.from("dev" , "cd-us-central-1")));
+ public static final JobType devCdUsCentral1 = dev("cd-us-central-1");
- public static final JobType devCdUsWest1 = of("dev-cd-us-west-1",
- Map.of(cd , ZoneId.from("dev" , "cd-us-west-1")));
+ public static final JobType devCdUsWest1 = dev("cd-us-west-1");
- public static final JobType devAwsUsEast1c = of("dev-aws-us-east-1c",
- Map.of(Public, ZoneId.from("dev", "aws-us-east-1c"),
- PublicCd, ZoneId.from("dev", "aws-us-east-1c")));
+ public static final JobType devAwsUsEast1c = dev("aws-us-east-1c");
- public static final JobType perfAwsUsEast1c = of("perf-aws-us-east-1c",
- Map.of(Public, ZoneId.from("perf", "aws-us-east-1c")));
+ public static final JobType perfAwsUsEast1c = perf("aws-us-east-1c");
- public static final JobType perfUsEast3 = of("perf-us-east-3",
- Map.of(main, ZoneId.from("perf" , "us-east-3")));
+ public static final JobType perfUsEast3 = perf("us-east-3");
private static final JobType[] values = new JobType[] {
systemTest,
@@ -247,6 +198,11 @@ public final class JobType implements Comparable<JobType> {
public String jobName() { return jobName; }
+ /** Returns the zone for this job in the given system. */
+ public ZoneId zone() {
+ throw new UnsupportedOperationException();
+ }
+
/** Returns the zone for this job in the given system, or throws if this job does not have a zone */
public ZoneId zone(SystemName system) {
if ( ! zones.containsKey(system))
@@ -255,10 +211,12 @@ public final class JobType implements Comparable<JobType> {
return zones.get(system);
}
+ /** A system test in a test zone, or throws if no test zones are present.. */
public static JobType systemTest(ZoneRegistry zones) {
return testIn(test, zones);
}
+ /** A staging test in a staging zone, or throws if no staging zones are present. */
public static JobType stagingTest(ZoneRegistry zones){
return testIn(staging, zones);
}
@@ -268,18 +226,22 @@ public final class JobType implements Comparable<JobType> {
.findFirst().orElseThrow(() -> new IllegalArgumentException("no zones in " + environment + " among " + zones.zones().controllerUpgraded().zones()));
}
+ /** A deployment to the given dev region. */
public static JobType dev(String region) {
return deploymentTo(ZoneId.from("dev", region));
}
+ /** A deployment to the given perf region. */
public static JobType perf(String region) {
return deploymentTo(ZoneId.from("perf", region));
}
+ /** A deployment to the given prod region. */
public static JobType prod(String region) {
return deploymentTo(ZoneId.from("prod", region));
}
+ /** A production test in the given region. */
public static JobType test(String region) {
return productionTestOf(ZoneId.from("prod", region));
}
@@ -311,20 +273,16 @@ public final class JobType implements Comparable<JobType> {
throw new IllegalArgumentException("illegal serialized job type '" + raw + "'");
}
- // TODO jonmv: use for serialisation
- public String serialized() {
- throw new UnsupportedOperationException();
- // return zone.environment().value() + "." + zone.region().value() + (isProductionTest ? ".test");
+ public String serialized(SystemName system) {
+ ZoneId zone = zone(system);
+ return zone.environment().value() + "." + zone.region().value() + (isProductionTest ? ".test" : "");
}
public static List<JobType> allIn(ZoneRegistry zones) {
- return Stream.of(values).filter(job -> job.zones.containsKey(zones.system())).collect(Collectors.toUnmodifiableList());
- /*
return zones.zones().controllerUpgraded().zones().stream()
- .flatMap(zone -> zone.getEnvironment().isProduction() ? Stream.of(of(zone.getId()), ofTest(zone.getId()))
- : Stream.of(of(zone.getId())))
+ .flatMap(zone -> zone.getEnvironment().isProduction() ? Stream.of(deploymentTo(zone.getId()), productionTestOf(zone.getId()))
+ : Stream.of(deploymentTo(zone.getId())))
.collect(Collectors.toUnmodifiableList());
- */
}
static JobType[] values() {
@@ -367,6 +325,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)
@@ -412,7 +385,12 @@ public final class JobType implements Comparable<JobType> {
@Override
public int hashCode() {
- return Objects.hash(jobName);
+ return jobName.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return jobName;
}
}
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 91edfff5b17..64f4d6150dd 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("snohetta").isTest());
assertTrue(JobType.dev("snohetta").isDeployment());