aboutsummaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2019-05-28 12:52:05 +0200
committerGitHub <noreply@github.com>2019-05-28 12:52:05 +0200
commite175be05cfc0e72586cfe1540b2bb6887b5edaf0 (patch)
tree96c8cf193c3d5911d0baf0230e98d75347df86be /config-provisioning
parent3a5332d332784f591199bd571136a7260abd3d81 (diff)
parent7f244686bfc513b488c1da548c036303d32eec20 (diff)
Merge pull request #9586 from vespa-engine/bratseth/default-node-capacity
Bratseth/default node capacity
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/abi-spec.json3
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java13
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java68
3 files changed, 10 insertions, 74 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json
index f14a0fe32d9..54f6053f4a9 100644
--- a/config-provisioning/abi-spec.json
+++ b/config-provisioning/abi-spec.json
@@ -141,6 +141,7 @@
"public com.yahoo.config.provision.NodeType type()",
"public java.lang.String toString()",
"public static com.yahoo.config.provision.Capacity fromNodeCount(int)",
+ "public static com.yahoo.config.provision.Capacity fromCount(int, com.yahoo.config.provision.NodeResources)",
"public static com.yahoo.config.provision.Capacity fromCount(int, com.yahoo.config.provision.NodeResources, boolean, boolean)",
"public static com.yahoo.config.provision.Capacity fromCount(int, java.util.Optional, boolean, boolean)",
"public static com.yahoo.config.provision.Capacity fromNodeCount(int, java.util.Optional, boolean, boolean)",
@@ -823,12 +824,10 @@
"public void <init>(com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName)",
"public void <init>(com.yahoo.config.provision.SystemName, com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName)",
"public void <init>(com.yahoo.config.provision.CloudName, com.yahoo.config.provision.SystemName, com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName)",
- "public void <init>(com.yahoo.config.provision.CloudName, com.yahoo.config.provision.SystemName, com.yahoo.config.provision.Environment, com.yahoo.config.provision.RegionName, com.yahoo.config.provision.NodeFlavors)",
"public com.yahoo.config.provision.CloudName cloud()",
"public com.yahoo.config.provision.SystemName system()",
"public com.yahoo.config.provision.Environment environment()",
"public com.yahoo.config.provision.RegionName region()",
- "public java.lang.String defaultFlavor(com.yahoo.config.provision.ClusterSpec$Type)",
"public java.util.Optional nodeFlavors()",
"public static com.yahoo.config.provision.Zone defaultZone()",
"public java.lang.String toString()",
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
index 60ce73be234..f8535eda44f 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
@@ -74,12 +74,17 @@ public final class Capacity {
return fromNodeCount(capacity, Optional.empty(), false, true);
}
- public static Capacity fromCount(int nodeCount, NodeResources flavor, boolean required, boolean canFail) {
- return new Capacity(nodeCount, Optional.of(flavor), required, canFail, NodeType.tenant);
+ /** Create a non-required, failable capacity request */
+ public static Capacity fromCount(int nodeCount, NodeResources resources) {
+ return fromCount(nodeCount, resources, false, true);
}
- public static Capacity fromCount(int nodeCount, Optional<NodeResources> flavor, boolean required, boolean canFail) {
- return new Capacity(nodeCount, flavor, required, canFail, NodeType.tenant);
+ public static Capacity fromCount(int nodeCount, NodeResources resources, boolean required, boolean canFail) {
+ return new Capacity(nodeCount, Optional.of(resources), required, canFail, NodeType.tenant);
+ }
+
+ public static Capacity fromCount(int nodeCount, Optional<NodeResources> resources, boolean required, boolean canFail) {
+ return new Capacity(nodeCount, resources, required, canFail, NodeType.tenant);
}
public static Capacity fromNodeCount(int nodeCount, Optional<String> flavor, boolean required, boolean canFail) {
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 f2e32b1b996..eebedd15e2c 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
@@ -21,7 +21,6 @@ public class Zone {
private final SystemName systemName;
private final Environment environment;
private final RegionName region;
- private final FlavorDefaults flavorDefaults;
private final Optional<NodeFlavors> nodeFlavors;
@Inject
@@ -30,7 +29,6 @@ public class Zone {
SystemName.from(configserverConfig.system()),
Environment.from(configserverConfig.environment()),
RegionName.from(configserverConfig.region()),
- new FlavorDefaults(configserverConfig),
nodeFlavors);
}
@@ -50,25 +48,15 @@ public class Zone {
}
/** Create from cloud, system, environment, region and node flavors. Use for testing. */
- public Zone(CloudName cloudName,
- SystemName systemName,
- Environment environment,
- RegionName region,
- NodeFlavors nodeFlavors) {
- this(cloudName, systemName, environment, region, new FlavorDefaults("default"), nodeFlavors);
- }
-
private Zone(CloudName cloudName,
SystemName systemName,
Environment environment,
RegionName region,
- FlavorDefaults flavorDefaults,
NodeFlavors nodeFlavors) {
this.cloudName = cloudName;
this.systemName = systemName;
this.environment = environment;
this.region = region;
- this.flavorDefaults = flavorDefaults;
this.nodeFlavors = Optional.ofNullable(nodeFlavors);
}
@@ -88,9 +76,6 @@ public class Zone {
return region;
}
- /** Returns the default hardware flavor to assign in this zone */
- public String defaultFlavor(ClusterSpec.Type clusterType) { return flavorDefaults.flavor(clusterType); }
-
/** Returns all available node flavors for the zone, or empty if not set for this Zone. */
public Optional<NodeFlavors> nodeFlavors() { return nodeFlavors; }
@@ -118,58 +103,5 @@ public class Zone {
return Objects.hash(environment, region);
}
- private static class FlavorDefaults {
-
- /** The default default flavor */
- private final String defaultFlavor;
-
- /** The default flavor for each cluster type, or empty to use defaultFlavor */
- private final Optional<String> adminFlavor;
- private final Optional<String> containerFlavor;
- private final Optional<String> contentFlavor;
-
- /** Creates this with a default flavor and all cluster type flavors empty */
- public FlavorDefaults(String defaultFlavor) {
- this(defaultFlavor, Optional.empty(), Optional.empty(), Optional.empty());
- }
-
- /** Creates this with a default flavor and all cluster type flavors empty */
- public FlavorDefaults(String defaultFlavor,
- Optional<String> adminFlavor, Optional<String> containerFlavor, Optional<String> contentFlavor) {
- this.defaultFlavor = defaultFlavor;
- this.adminFlavor = adminFlavor;
- this.containerFlavor = containerFlavor;
- this.contentFlavor = contentFlavor;
- }
-
- public FlavorDefaults(ConfigserverConfig config) {
- this(config.defaultFlavor(),
- emptyIfDefault(config.defaultAdminFlavor()),
- emptyIfDefault(config.defaultContainerFlavor()),
- emptyIfDefault(config.defaultContentFlavor()));
- }
-
- /** Map "default" to empty - this config cannot have missing values due to the need for supporting non-hosted */
- private static Optional<String> emptyIfDefault(String value) {
- if (Strings.isNullOrEmpty(value)) return Optional.empty();
- if (value.equals("default")) return Optional.empty();
- return Optional.of(value);
- }
-
- /**
- * Returns the flavor default for a given cluster type.
- * This may be "default" - which is an invalid value - but never null.
- */
- public String flavor(ClusterSpec.Type clusterType) {
- switch (clusterType) {
- case admin: return adminFlavor.orElse(defaultFlavor);
- case container: return containerFlavor.orElse(defaultFlavor);
- case content: return contentFlavor.orElse(defaultFlavor);
- default: return defaultFlavor; // future cluster types
- }
- }
-
- }
-
}