diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-05-26 10:44:25 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-05-27 15:08:24 +0200 |
commit | 9be54355fa8938c3537fbf9b0ede5c0e597b997c (patch) | |
tree | 02d84386e87687e723e18967d8109d4c7b64a3c6 /config-provisioning/src | |
parent | f8400289c573467829db1d9fffa370d727b0487b (diff) |
Add Cloud builder
Diffstat (limited to 'config-provisioning/src')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/Cloud.java | 63 | ||||
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java | 10 |
2 files changed, 54 insertions, 19 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 d79b00c62c7..24ec4a7ab70 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 @@ -1,6 +1,8 @@ // Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; +import java.util.Objects; + /** * Represents a cloud service and its supported features. * @@ -15,9 +17,9 @@ public class Cloud { private final boolean reprovisionToUpgradeOs; private final boolean requireAccessControl; - public Cloud(CloudName name, boolean dynamicProvisioning, boolean allowHostSharing, boolean reprovisionToUpgradeOs, - boolean requireAccessControl) { - this.name = name; + private Cloud(CloudName name, boolean dynamicProvisioning, boolean allowHostSharing, boolean reprovisionToUpgradeOs, + boolean requireAccessControl) { + this.name = Objects.requireNonNull(name); this.dynamicProvisioning = dynamicProvisioning; this.allowHostSharing = allowHostSharing; this.reprovisionToUpgradeOs = reprovisionToUpgradeOs; @@ -49,25 +51,54 @@ public class Cloud { return requireAccessControl; } - public Cloud withDynamicProvisioning(boolean dynamicProvisioning) { - return new Cloud(name, dynamicProvisioning, allowHostSharing, reprovisionToUpgradeOs, requireAccessControl); + /** For testing purposes only */ + public static Cloud defaultCloud() { + return new Builder().name(CloudName.defaultName()).build(); } - public Cloud withAllowHostSharing(boolean allowHostSharing) { - return new Cloud(name, dynamicProvisioning, allowHostSharing, reprovisionToUpgradeOs, requireAccessControl); + public static Builder builder() { + return new Builder(); } - public Cloud withReprovisionToUpgradeOs(boolean reprovisionToUpgradeOs) { - return new Cloud(name, dynamicProvisioning, allowHostSharing, reprovisionToUpgradeOs, requireAccessControl); - } + public static class Builder { - public Cloud withRequireAccessControl(boolean requireAccessControl) { - return new Cloud(name, dynamicProvisioning, allowHostSharing, reprovisionToUpgradeOs, requireAccessControl); - } + private CloudName name = CloudName.defaultName(); + private boolean dynamicProvisioning = false; + private boolean allowHostSharing = true; + private boolean reprovisionToUpgradeOs = false; + private boolean requireAccessControl = false; + + private Builder() {} + + public Builder name(CloudName name) { + this.name = name; + return this; + } + + public Builder dynamicProvisioning(boolean dynamicProvisioning) { + this.dynamicProvisioning = dynamicProvisioning; + return this; + } + + public Builder allowHostSharing(boolean allowHostSharing) { + this.allowHostSharing = allowHostSharing; + return this; + } + + public Builder reprovisionToUpgradeOs(boolean reprovisionToUpgradeOs) { + this.reprovisionToUpgradeOs = reprovisionToUpgradeOs; + return this; + } + + public Builder requireAccessControl(boolean requireAccessControl) { + this.requireAccessControl = requireAccessControl; + return this; + } + + public Cloud build() { + return new Cloud(name, dynamicProvisioning, allowHostSharing, reprovisionToUpgradeOs, requireAccessControl); + } - /** For testing purposes only */ - public static Cloud defaultCloud() { - return new Cloud(CloudName.defaultName(), false, true, false, false); } @Override 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 5b6485de2b4..f616174de1a 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 @@ -25,9 +25,13 @@ public class Zone { @Inject public Zone(ConfigserverConfig configserverConfig, NodeFlavors nodeFlavors, CloudConfig cloudConfig) { - this(new Cloud(CloudName.from(configserverConfig.cloud()), cloudConfig.dynamicProvisioning(), - cloudConfig.allowHostSharing(), cloudConfig.reprovisionToUpgradeOs(), - cloudConfig.requireAccessControl()), + this(Cloud.builder() + .name(CloudName.from(configserverConfig.cloud())) + .dynamicProvisioning(cloudConfig.dynamicProvisioning()) + .allowHostSharing(cloudConfig.allowHostSharing()) + .reprovisionToUpgradeOs(cloudConfig.reprovisionToUpgradeOs()) + .requireAccessControl(cloudConfig.requireAccessControl()) + .build(), SystemName.from(configserverConfig.system()), Environment.from(configserverConfig.environment()), RegionName.from(configserverConfig.region()), |