summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-10-27 10:44:19 +0200
committerMartin Polden <mpolden@mpolden.no>2022-10-27 10:49:30 +0200
commitabdcadc2f31b51d1a0321ef00cd797e4bf586992 (patch)
tree0f6c04729af6bd22384f007a5bf86c9bf4560cd6 /config-provisioning
parenta7d5de098525fe51daefd0342763d79075719a97 (diff)
Less Optional
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java15
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java10
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java2
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()),