From 61ebc08aebd31a4258bf050ebfabf260913491dc Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Thu, 16 Apr 2020 14:15:36 +0200 Subject: Use DockerImage instead of String in HostSpec --- .../src/main/java/com/yahoo/config/provision/HostSpec.java | 10 +++++----- .../provision/serialization/AllocatedHostsSerializer.java | 9 ++++++++- .../provision/serialization/AllocatedHostsSerializerTest.java | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) (limited to 'config-provisioning/src') 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 { private final Optional version; - private final Optional dockerImageRepo; + private final Optional dockerImageRepo; private final Optional networkPorts; @@ -79,14 +79,14 @@ public class HostSpec implements Comparable { public HostSpec(String hostname, List aliases, Optional flavor, Optional membership, Optional version, Optional networkPorts, Optional requestedResources, - Optional dockerImageRepo) { + Optional 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 { /** Returns the requested resources leading to this host being provisioned, or empty if not known */ public Optional requestedResources() { return requestedResources; } - public Optional dockerImageRepo() { return dockerImageRepo; } + public Optional dockerImageRepo() { return dockerImageRepo; } public HostSpec withPorts(Optional 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 aliasesFromSlime(Inspector object) { @@ -215,4 +216,10 @@ public class AllocatedHostsSerializer { if ( ! inspector.valid()) return Optional.empty(); return Optional.of(inspector.asString()); } + + private static Optional 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", -- cgit v1.2.3