diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-10-27 10:44:19 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-10-27 10:49:30 +0200 |
commit | abdcadc2f31b51d1a0321ef00cd797e4bf586992 (patch) | |
tree | 0f6c04729af6bd22384f007a5bf86c9bf4560cd6 /config-provisioning/src/main/java/com/yahoo/config/provision | |
parent | a7d5de098525fe51daefd0342763d79075719a97 (diff) |
Less Optional
Diffstat (limited to 'config-provisioning/src/main/java/com/yahoo/config/provision')
3 files changed, 16 insertions, 11 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java index a9ebf419783..6220c73dfd5 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java @@ -2,7 +2,6 @@ package com.yahoo.config.provision; import java.util.Objects; -import java.util.Optional; /** * Properties of the cloud service where the zone is deployed. @@ -15,15 +14,15 @@ public class Cloud { private final boolean dynamicProvisioning; private final boolean requireAccessControl; - private final Optional<CloudAccount> account; + private final CloudAccount account; - private Cloud(CloudName name, boolean dynamicProvisioning, boolean requireAccessControl, Optional<CloudAccount> account) { + private Cloud(CloudName name, boolean dynamicProvisioning, boolean requireAccessControl, CloudAccount account) { this.name = Objects.requireNonNull(name); this.dynamicProvisioning = dynamicProvisioning; this.requireAccessControl = requireAccessControl; this.account = Objects.requireNonNull(account); if (name.equals(CloudName.AWS) && account.isEmpty()) { - throw new IllegalArgumentException("Account must be set in cloud '" + name + "'"); + throw new IllegalArgumentException("Account must be non-empty in cloud '" + name + "'"); } } @@ -42,8 +41,8 @@ public class Cloud { return requireAccessControl; } - /** Returns the default account of this cloud, if any */ - public Optional<CloudAccount> account() { + /** Returns the default account of this cloud */ + public CloudAccount account() { return account; } @@ -61,7 +60,7 @@ public class Cloud { private CloudName name = CloudName.DEFAULT; private boolean dynamicProvisioning = false; private boolean requireAccessControl = false; - private CloudAccount account = null; + private CloudAccount account = CloudAccount.empty; public Builder() {} @@ -86,7 +85,7 @@ public class Cloud { } public Cloud build() { - return new Cloud(name, dynamicProvisioning, requireAccessControl, Optional.ofNullable(account)); + return new Cloud(name, dynamicProvisioning, requireAccessControl, account); } } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java index 3609ea4af88..ac237cb1232 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java @@ -6,14 +6,20 @@ import ai.vespa.validation.PatternedStringWrapper; import java.util.regex.Pattern; /** - * Identifies an account in a public cloud, such as AWS or GCP. + * Identifies an account in a public cloud, such as {@link CloudName#AWS} or {@link CloudName#GCP}. * * @author mpolden */ public class CloudAccount extends PatternedStringWrapper<CloudAccount> { + public static final CloudAccount empty = new CloudAccount(""); + public CloudAccount(String value) { - super(value, Pattern.compile("^[0-9]{12}$"), "cloud account"); + super(value, Pattern.compile("^([0-9]{12})?$"), "cloud account"); + } + + public boolean isEmpty() { + return this.equals(empty); } } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java index ef46122758a..8b662c4f66b 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java @@ -27,7 +27,7 @@ public class Zone { .name(CloudName.from(configserverConfig.cloud())) .dynamicProvisioning(cloudConfig.dynamicProvisioning()) .requireAccessControl(cloudConfig.requireAccessControl()) - .account(cloudConfig.account().isEmpty() ? null : new CloudAccount(cloudConfig.account())) + .account(cloudConfig.account().isEmpty() ? CloudAccount.empty : new CloudAccount(cloudConfig.account())) .build(), SystemName.from(configserverConfig.system()), Environment.from(configserverConfig.environment()), |