diff options
author | Jon Bratseth <bratseth@oath.com> | 2019-05-28 12:52:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-28 12:52:05 +0200 |
commit | e175be05cfc0e72586cfe1540b2bb6887b5edaf0 (patch) | |
tree | 96c8cf193c3d5911d0baf0230e98d75347df86be /config-provisioning | |
parent | 3a5332d332784f591199bd571136a7260abd3d81 (diff) | |
parent | 7f244686bfc513b488c1da548c036303d32eec20 (diff) |
Merge pull request #9586 from vespa-engine/bratseth/default-node-capacity
Bratseth/default node capacity
Diffstat (limited to 'config-provisioning')
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 - } - } - - } - } |