diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-05-28 15:04:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-28 15:04:26 +0200 |
commit | 4552075772789e0db6d4ab0e21157b393274432b (patch) | |
tree | 1c33f2c1ff2897d0e3dadbc2bfa96b2385bdcaf8 /config-provisioning | |
parent | 13d1a3491b1daac7a6058300e83014200e30386c (diff) | |
parent | 8903332a7a6ce57c7777b2f6976c1da781d8b52e (diff) |
Merge pull request #13401 from vespa-engine/mpolden/provision-exact-capacity
Support provisioning exact capacity
Diffstat (limited to 'config-provisioning')
-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()), |