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 | 123 |
1 files changed, 70 insertions, 53 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 c8c8a349fee..52a2008b658 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 @@ -23,8 +23,8 @@ public class HostSpec implements Comparable<HostSpec> { 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; @@ -35,47 +35,93 @@ public class HostSpec implements Comparable<HostSpec> { private final Optional<NetworkPorts> networkPorts; - private final Optional<NodeResources> requestedResources; + /** 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"); + } // TODO: Remove after June 2020 @Deprecated public HostSpec(String hostname, Optional<ClusterMembership> membership) { this(hostname, new ArrayList<>(), - NodeResources.unspecified(), NodeResources.unspecified(), + NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), membership, - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + Optional.empty(), Optional.empty(), Optional.empty()); } // 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(), - Optional.of(membership), version, Optional.empty(), Optional.empty(), Optional.empty()); + flavor.resources(), flavor.resources(), NodeResources.unspecified(), + Optional.of(membership), version, Optional.empty(), Optional.empty()); } - /** Create a host in a non-cloud system, where hosts are specified in config */ + // TODO: Remove after June 2020 + @Deprecated public HostSpec(String hostname, List<String> aliases) { this(hostname, aliases, - NodeResources.unspecified(), NodeResources.unspecified(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + NodeResources.unspecified(), NodeResources.unspecified(), NodeResources.unspecified(), + Optional.empty(), Optional.empty(), 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(), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + flavor.resources(), flavor.resources(), NodeResources.unspecified(), + Optional.empty(), Optional.empty(), Optional.empty(), 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(), NodeResources.unspecified(), NodeResources.unspecified(), Optional.of(membership), - Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + Optional.empty(), Optional.empty(), Optional.empty()); } // TODO: Remove after June 2020 @@ -84,7 +130,8 @@ public class HostSpec implements Comparable<HostSpec> { this(hostname, aliases, flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - membership, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + NodeResources.unspecified(), + membership, Optional.empty(), Optional.empty(), Optional.empty()); } // TODO: Remove after June 2020 @@ -94,8 +141,9 @@ public class HostSpec implements Comparable<HostSpec> { 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(), Optional.empty()); + Optional.empty(), Optional.empty()); } // TODO: Remove after June 2020 @@ -106,8 +154,8 @@ public class HostSpec implements Comparable<HostSpec> { 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(), Optional.empty()); } @@ -120,7 +168,8 @@ public class HostSpec implements Comparable<HostSpec> { this(hostname, aliases, flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - membership, version, networkPorts, requestedResources, Optional.empty()); + requestedResources.orElse(NodeResources.unspecified()), + membership, version, networkPorts, Optional.empty()); } // TODO: Remove after June 2020 @@ -132,40 +181,8 @@ public class HostSpec implements Comparable<HostSpec> { this(hostname, aliases, flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), - membership, version, networkPorts, requestedResources, dockerImageRepo); - } - - /** 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, - Optional.of(membership), - version, networkPorts, requestedResources.asOptional(), dockerImageRepo); - } - - /** Create a fully specified host for any system */ - public HostSpec(String hostname, List<String> aliases, - NodeResources realResources, NodeResources advertisedResurces, - Optional<ClusterMembership> membership, Optional<Version> version, - Optional<NetworkPorts> networkPorts, Optional<NodeResources> requestedResources, - 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 = realResources; - this.advertisedResources = advertisedResurces; - 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"); + requestedResources.orElse(NodeResources.unspecified()), + membership, version, networkPorts, dockerImageRepo); } /** Returns the name identifying this host */ @@ -196,12 +213,12 @@ public class HostSpec implements Comparable<HostSpec> { 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; } + public Optional<NodeResources> requestedResources() { return requestedResources.asOptional(); } public Optional<DockerImage> dockerImageRepo() { return dockerImageRepo; } public HostSpec withPorts(Optional<NetworkPorts> ports) { - return new HostSpec(hostname, aliases, realResources, advertisedResources, membership, version, ports, requestedResources, dockerImageRepo); + return new HostSpec(hostname, aliases, realResources, advertisedResources, requestedResources, membership, version, ports, dockerImageRepo); } @Override |