diff options
Diffstat (limited to 'config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java | 156 |
1 files changed, 26 insertions, 130 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java index 52a2008b658..2a5d27a0fe7 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java @@ -22,167 +22,73 @@ public class HostSpec implements Comparable<HostSpec> { /** Aliases of this host */ private final List<String> aliases; - private final NodeResources realResources; - private final NodeResources advertisedResources; - private final NodeResources requestedResources; - /** The current membership role of this host in the cluster it belongs to */ private final Optional<ClusterMembership> membership; + private final Optional<Flavor> flavor; + private final Optional<Version> version; private final Optional<DockerImage> dockerImageRepo; private final Optional<NetworkPorts> networkPorts; - /** Create a host in a non-cloud system, where hosts are specified in config */ - public HostSpec(String hostname, List<String> aliases, Optional<NetworkPorts> networkPorts) { - this(hostname, aliases, - NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), - Optional.empty(), Optional.empty(), networkPorts, Optional.empty()); - } - - /** Create a host in a hosted system */ - public HostSpec(String hostname, - NodeResources realResources, - NodeResources advertisedResurces, - NodeResources requestedResources, - ClusterMembership membership, - Optional<Version> version, - Optional<NetworkPorts> networkPorts, - Optional<DockerImage> dockerImageRepo) { - this(hostname, List.of(), - realResources, - advertisedResurces, - requestedResources, - Optional.of(membership), - version, - networkPorts, - dockerImageRepo); - } - - private HostSpec(String hostname, - List<String> aliases, - NodeResources realResources, - NodeResources advertisedResurces, - NodeResources requestedResources, - Optional<ClusterMembership> membership, - Optional<Version> version, - Optional<NetworkPorts> networkPorts, - Optional<DockerImage> dockerImageRepo) { - if (hostname == null || hostname.isEmpty()) throw new IllegalArgumentException("Hostname must be specified"); - this.hostname = hostname; - this.aliases = List.copyOf(aliases); - this.realResources = Objects.requireNonNull(realResources); - this.advertisedResources = Objects.requireNonNull(advertisedResurces); - this.requestedResources = Objects.requireNonNull(requestedResources, "RequestedResources cannot be null"); - this.membership = Objects.requireNonNull(membership); - this.version = Objects.requireNonNull(version, "Version cannot be null but can be empty"); - this.networkPorts = Objects.requireNonNull(networkPorts, "Network ports cannot be null but can be empty"); - this.dockerImageRepo = Objects.requireNonNull(dockerImageRepo, "Docker image repo cannot be null but can be empty"); - } + private final Optional<NodeResources> requestedResources; - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, Optional<ClusterMembership> membership) { - this(hostname, new ArrayList<>(), - NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), - membership, - Optional.empty(), Optional.empty(), Optional.empty()); + this(hostname, new ArrayList<>(), Optional.empty(), membership); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, ClusterMembership membership, Flavor flavor, Optional<Version> version) { - this(hostname, new ArrayList<>(), - flavor.resources(), flavor.resources(), NodeResources.unspecified(), - Optional.of(membership), version, Optional.empty(), Optional.empty()); + this(hostname, new ArrayList<>(), Optional.of(flavor), Optional.of(membership), version); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases) { - this(hostname, aliases, - NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + this(hostname, aliases, Optional.empty(), Optional.empty()); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases, Flavor flavor) { - this(hostname, aliases, - flavor.resources(), flavor.resources(), NodeResources.unspecified(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + this(hostname, aliases, Optional.of(flavor), Optional.empty()); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases, ClusterMembership membership) { - this(hostname, aliases, - NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), - Optional.of(membership), - Optional.empty(), Optional.empty(), Optional.empty()); + this(hostname, aliases, Optional.empty(), Optional.of(membership)); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership) { - this(hostname, aliases, - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - NodeResources.unspecified(), - membership, Optional.empty(), Optional.empty(), Optional.empty()); + this(hostname, aliases, flavor, membership, Optional.empty()); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership, Optional<Version> version) { - this(hostname, aliases, - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - NodeResources.unspecified(), - membership, version, - Optional.empty(), Optional.empty()); + this(hostname, aliases, flavor, membership, version, Optional.empty()); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts) { - this(hostname, aliases, - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - NodeResources.unspecified(), - membership, version, networkPorts, - Optional.empty()); + this(hostname, aliases, flavor, membership, version, networkPorts, Optional.empty()); } - // TODO: Remove after June 2020 - @Deprecated - public HostSpec(String hostname, List<String> aliases, - Optional<Flavor> flavor, + public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts, Optional<NodeResources> requestedResources) { - this(hostname, aliases, - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - requestedResources.orElse(NodeResources.unspecified()), - membership, version, networkPorts, Optional.empty()); + this(hostname, aliases, flavor, membership, version, networkPorts, requestedResources, Optional.empty()); } - // TODO: Remove after June 2020 - @Deprecated public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts, Optional<NodeResources> requestedResources, Optional<DockerImage> dockerImageRepo) { - this(hostname, aliases, - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - requestedResources.orElse(NodeResources.unspecified()), - membership, version, networkPorts, dockerImageRepo); + if (hostname == null || hostname.isEmpty()) throw new IllegalArgumentException("Hostname must be specified"); + this.hostname = hostname; + this.aliases = List.copyOf(aliases); + this.flavor = flavor; + this.membership = membership; + this.version = Objects.requireNonNull(version, "Version cannot be null but can be empty"); + this.networkPorts = Objects.requireNonNull(networkPorts, "Network ports cannot be null but can be empty"); + this.requestedResources = Objects.requireNonNull(requestedResources, "RequestedResources cannot be null"); + this.dockerImageRepo = Objects.requireNonNull(dockerImageRepo, "Docker image repo cannot be null but can be empty"); } /** Returns the name identifying this host */ @@ -191,17 +97,7 @@ public class HostSpec implements Comparable<HostSpec> { /** Returns the aliases of this host as an immutable list. This may be empty but never null. */ public List<String> aliases() { return aliases; } - /** The real resources available for Vespa processes on this node, after subtracting infrastructure overhead. */ - public NodeResources realResources() { return realResources; } - - /** The total advertised resources of this node, typically matching what's requested. */ - public NodeResources advertisedResources() { return advertisedResources; } - - /** A flavor contained the advertised resources of this host */ - // TODO: Remove after June 2020 - public Optional<Flavor> flavor() { - return advertisedResources.asOptional().map(resources -> new Flavor(resources)); - } + public Optional<Flavor> flavor() { return flavor; } /** Returns the current version of Vespa running on this node, or empty if not known */ public Optional<com.yahoo.component.Version> version() { return version; } @@ -212,13 +108,13 @@ public class HostSpec implements Comparable<HostSpec> { /** Returns the network port allocations on this host, or empty if not present */ public Optional<NetworkPorts> networkPorts() { return networkPorts; } - /** Returns the requested resources leading to this host being provisioned, or empty if unspecified */ - public Optional<NodeResources> requestedResources() { return requestedResources.asOptional(); } + /** Returns the requested resources leading to this host being provisioned, or empty if not known */ + public Optional<NodeResources> requestedResources() { return requestedResources; } public Optional<DockerImage> dockerImageRepo() { return dockerImageRepo; } public HostSpec withPorts(Optional<NetworkPorts> ports) { - return new HostSpec(hostname, aliases, realResources, advertisedResources, requestedResources, membership, version, ports, dockerImageRepo); + return new HostSpec(hostname, aliases, flavor, membership, version, ports, requestedResources, dockerImageRepo); } @Override |