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 | |
parent | 4bc54df04097788c49f31f1cfe1d0446c26d8c42 (diff) |
Add default account to Cloud
Diffstat (limited to 'config-provisioning')
3 files changed, 24 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()), diff --git a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def index a5ad0dc9a7c..05ccee34d59 100644 --- a/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def +++ b/config-provisioning/src/main/resources/configdefinitions/config.provisioning.cloud.def @@ -11,3 +11,6 @@ allowHostSharing bool default=true # Should clusters in this cloud always require access control for both read and write operations? requireAccessControl bool default=false + +# The default account used to provision hosts and load balancers in this zone. +account string default="" |