summaryrefslogtreecommitdiffstats
path: root/config-provisioning/src/main/java/com/yahoo/config/provision/zone
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2019-05-14 12:00:54 +0200
committerHarald Musum <musum@verizonmedia.com>2019-05-14 12:00:54 +0200
commitb4415a853699322f051e0d88c6592a34bc8d56d3 (patch)
treefff3ace08647ede1806d58c6dc0add0b2486f15e /config-provisioning/src/main/java/com/yahoo/config/provision/zone
parentdf5d867f2222cdd90897cfb84156982a8309db3b (diff)
Add methods for creating ZoneId with system
Support deserializing zone id which includes cloud and system
Diffstat (limited to 'config-provisioning/src/main/java/com/yahoo/config/provision/zone')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java41
1 files changed, 35 insertions, 6 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java
index 7eeae10eeb8..d839c65574e 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/zone/ZoneId.java
@@ -4,6 +4,7 @@ package com.yahoo.config.provision.zone;
import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.SystemName;
import java.util.Objects;
@@ -17,24 +18,32 @@ import java.util.Objects;
public class ZoneId {
// TODO: Replace usages of environment + region with usages of this.
+ // TODO: Remove static factory methods not specifying cloud and system
+
private final Environment environment;
private final RegionName region;
private final CloudName cloud;
+ private final SystemName system;
- private ZoneId(Environment environment, RegionName region, CloudName cloud) {
+ private ZoneId(Environment environment, RegionName region, CloudName cloud, SystemName system) {
this.environment = Objects.requireNonNull(environment, "environment must be non-null");
this.region = Objects.requireNonNull(region, "region must be non-null");
this.cloud = Objects.requireNonNull(cloud, "cloud must be non-null");
+ this.system = Objects.requireNonNull(system, "system must be non-null");
}
private ZoneId(Environment environment, RegionName region) {
- this(environment, region, CloudName.defaultName());
+ this(environment, region, CloudName.defaultName(), SystemName.defaultSystem());
}
public static ZoneId from(Environment environment, RegionName region) {
return new ZoneId(environment, region);
}
+ public static ZoneId from(Environment environment, RegionName region, CloudName cloud, SystemName system) {
+ return new ZoneId(environment, region, cloud, system);
+ }
+
public static ZoneId from(String environment, String region) {
return from(Environment.from(environment), RegionName.from(region));
}
@@ -42,15 +51,26 @@ public class ZoneId {
/** Create from a serialised ZoneId. Inverse of {@code ZoneId.value()}. */
public static ZoneId from(String value) {
String[] parts = value.split("\\.");
- return from(parts[0], parts[1]);
+ switch (parts.length) {
+ case 2:
+ return from(parts[0], parts[1]);
+ case 4:
+ return from(parts[2], parts[3], parts[0], parts[1]);
+ default:
+ throw new IllegalArgumentException("Cannot deserialize zone id '" + value + "'");
+ }
}
public static ZoneId from(Environment environment, RegionName region, CloudName cloud) {
- return new ZoneId(environment, region, cloud);
+ return new ZoneId(environment, region, cloud, SystemName.defaultSystem());
}
public static ZoneId from(String environment, String region, String cloud) {
- return new ZoneId(Environment.from(environment), RegionName.from(region), CloudName.from(cloud));
+ return new ZoneId(Environment.from(environment), RegionName.from(region), CloudName.from(cloud), SystemName.defaultSystem());
+ }
+
+ public static ZoneId from(String environment, String region, String cloud, String system) {
+ return new ZoneId(Environment.from(environment), RegionName.from(region), CloudName.from(cloud), SystemName.from(system));
}
public Environment environment() {
@@ -65,17 +85,26 @@ public class ZoneId {
return cloud;
}
+ public SystemName system() {
+ return system;
+ }
+
/** Returns the serialised value of this. Inverse of {@code ZoneId.from(String value)}. */
public String value() {
return environment + "." + region;
+ // TODO: Change to the below when there only methods use constructor including cloud and system are used and
+ // all serialized values contain cloud and system
+ // return cloud + "." + system + "." + environment + "." + region;
}
@Override
public String toString() {
- return "zone " + value() + " in " + cloud;
+ // TODO: Use value() instead for last parts of statement
+ return "zone " + cloud + "." + system + "." + environment + "." + region;
}
@Override
+ // TODO: Update to check cloud and system when everyone use methods that specify cloud and system
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;