summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-05-28 15:04:26 +0200
committerGitHub <noreply@github.com>2020-05-28 15:04:26 +0200
commit4552075772789e0db6d4ab0e21157b393274432b (patch)
tree1c33f2c1ff2897d0e3dadbc2bfa96b2385bdcaf8 /config-provisioning
parent13d1a3491b1daac7a6058300e83014200e30386c (diff)
parent8903332a7a6ce57c7777b2f6976c1da781d8b52e (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.java63
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java10
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()),