diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-04-16 14:15:36 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-04-16 14:15:36 +0200 |
commit | 61ebc08aebd31a4258bf050ebfabf260913491dc (patch) | |
tree | df7cffd884f2ef2b1f190f3c6585e88b23bd370d /config-provisioning | |
parent | 7480a3556230774dc7bee04b08af97afe347a8c0 (diff) |
Use DockerImage instead of String in HostSpec
Diffstat (limited to 'config-provisioning')
3 files changed, 15 insertions, 8 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 c49448a2e43..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 @@ -29,7 +29,7 @@ public class HostSpec implements Comparable<HostSpec> { private final Optional<Version> version; - private final Optional<String> dockerImageRepo; + private final Optional<DockerImage> dockerImageRepo; private final Optional<NetworkPorts> networkPorts; @@ -79,14 +79,14 @@ public class HostSpec implements Comparable<HostSpec> { public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts, Optional<NodeResources> requestedResources, - Optional<String> dockerImageRepo) { + Optional<DockerImage> 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.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"); } @@ -111,7 +111,7 @@ public class HostSpec implements Comparable<HostSpec> { /** Returns the requested resources leading to this host being provisioned, or empty if not known */ public Optional<NodeResources> requestedResources() { return requestedResources; } - public Optional<String> dockerImageRepo() { return dockerImageRepo; } + public Optional<DockerImage> dockerImageRepo() { return dockerImageRepo; } public HostSpec withPorts(Optional<NetworkPorts> ports) { return new HostSpec(hostname, aliases, flavor, membership, version, ports, requestedResources, dockerImageRepo); diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java b/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java index cee15cd6571..56c5544f6d7 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializer.java @@ -3,6 +3,7 @@ package com.yahoo.config.provision.serialization; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ClusterMembership; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeFlavors; @@ -139,7 +140,7 @@ public class AllocatedHostsSerializer { optionalString(object.field(hostSpecCurrentVespaVersionKey)).map(com.yahoo.component.Version::new), NetworkPortsSerializer.fromSlime(object.field(hostSpecNetworkPortsKey)), nodeResourcesFromSlime(object.field(requestedResourcesKey)), - optionalString(object.field(hostSpecDockerImageRepoKey))); + optionalDockerImage(object.field(hostSpecDockerImageRepoKey))); } private static List<String> aliasesFromSlime(Inspector object) { @@ -215,4 +216,10 @@ public class AllocatedHostsSerializer { if ( ! inspector.valid()) return Optional.empty(); return Optional.of(inspector.asString()); } + + private static Optional<DockerImage> optionalDockerImage(Inspector inspector) { + if ( ! inspector.valid()) return Optional.empty(); + return Optional.of(DockerImage.fromString(inspector.asString())); + } + } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java index f41b36b34ca..f2163608050 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/serialization/AllocatedHostsSerializerTest.java @@ -4,13 +4,13 @@ package com.yahoo.config.provision.serialization; import com.yahoo.component.Version; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ClusterMembership; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NetworkPorts; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provisioning.FlavorsConfig; -import com.yahoo.text.Utf8; import org.junit.Test; import java.io.IOException; @@ -43,7 +43,7 @@ public class AllocatedHostsSerializerTest { Optional.of(ClusterMembership.from("container/test/0/0", Version.fromString("6.73.1"), Optional.of("docker.foo.com:4443/vespa/bar"))), Optional.empty(), Optional.empty(), Optional.empty(), - Optional.of("docker.foo.com:4443/vespa/bar"))); + Optional.of(DockerImage.fromString("docker.foo.com:4443/vespa/bar")))); hosts.add(new HostSpec("flavor-from-resources-1", Collections.emptyList(), new Flavor(new NodeResources(0.5, 3.1, 4, 1)))); hosts.add(new HostSpec("flavor-from-resources-2", |