diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-10-26 13:22:16 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-10-26 13:56:11 +0200 |
commit | 6d5b46dcf5d5dd845c22d3afaf582fd725a3b2a4 (patch) | |
tree | a96a03a1b9d97d1a6c00b29ffef7c49f6de04edb /config-provisioning/src/main/java | |
parent | 4bc54df04097788c49f31f1cfe1d0446c26d8c42 (diff) |
Add default account to Cloud
Diffstat (limited to 'config-provisioning/src/main/java')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java | 23 | ||||
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java | 1 |
2 files changed, 21 insertions, 3 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 4498d8de4c7..a9ebf419783 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,9 +2,10 @@ package com.yahoo.config.provision; import java.util.Objects; +import java.util.Optional; /** - * Represents a cloud service and its supported features. + * Properties of the cloud service where the zone is deployed. * * @author mpolden */ @@ -14,11 +15,16 @@ public class Cloud { private final boolean dynamicProvisioning; private final boolean requireAccessControl; + private final Optional<CloudAccount> account; - private Cloud(CloudName name, boolean dynamicProvisioning, boolean requireAccessControl) { + private Cloud(CloudName name, boolean dynamicProvisioning, boolean requireAccessControl, Optional<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 + "'"); + } } /** The name of this */ @@ -36,6 +42,11 @@ public class Cloud { return requireAccessControl; } + /** Returns the default account of this cloud, if any */ + public Optional<CloudAccount> account() { + return account; + } + /** For testing purposes only */ public static Cloud defaultCloud() { return new Builder().build(); @@ -50,6 +61,7 @@ public class Cloud { private CloudName name = CloudName.DEFAULT; private boolean dynamicProvisioning = false; private boolean requireAccessControl = false; + private CloudAccount account = null; public Builder() {} @@ -68,8 +80,13 @@ public class Cloud { return this; } + public Builder account(CloudAccount account) { + this.account = account; + return this; + } + public Cloud build() { - return new Cloud(name, dynamicProvisioning, requireAccessControl); + return new Cloud(name, dynamicProvisioning, requireAccessControl, Optional.ofNullable(account)); } } 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 1f8ba3ce93f..99b8e4447ff 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,6 +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())) .build(), SystemName.from(configserverConfig.system()), Environment.from(configserverConfig.environment()), |