summaryrefslogtreecommitdiffstats
path: root/config-provisioning/src/main/java/com/yahoo/config/provision/HostSpec.java
diff options
context:
space:
mode:
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.java156
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