diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-03-16 12:05:46 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-03-16 12:05:46 +0100 |
commit | 2b9e3a131b79342f2887d1581333569c09c518ff (patch) | |
tree | 53a73128e48db97c68d0430bcde518f86bf5beba /config-provisioning | |
parent | 5ecaa83f6ee186d13a1c0ae854ea17b067a289fd (diff) |
Use docker image repo in ClusterSpec
Diffstat (limited to 'config-provisioning')
9 files changed, 103 insertions, 34 deletions
diff --git a/config-provisioning/abi-spec.json b/config-provisioning/abi-spec.json index 9d09ea10c2c..9f785699667 100644 --- a/config-provisioning/abi-spec.json +++ b/config-provisioning/abi-spec.json @@ -199,6 +199,7 @@ "public boolean equals(java.lang.Object)", "public java.lang.String toString()", "public static com.yahoo.config.provision.ClusterMembership from(java.lang.String, com.yahoo.component.Version)", + "public static com.yahoo.config.provision.ClusterMembership from(java.lang.String, com.yahoo.component.Version, java.util.Optional)", "public static com.yahoo.config.provision.ClusterMembership from(com.yahoo.config.provision.ClusterSpec, int)", "public static com.yahoo.config.provision.ClusterMembership retiredFrom(com.yahoo.config.provision.ClusterSpec, int)" ], @@ -269,6 +270,7 @@ "methods": [ "public com.yahoo.config.provision.ClusterSpec$Type type()", "public com.yahoo.config.provision.ClusterSpec$Id id()", + "public java.util.Optional dockerImageRepo()", "public com.yahoo.component.Version vespaVersion()", "public java.util.Optional group()", "public java.util.Optional combinedId()", @@ -276,7 +278,9 @@ "public com.yahoo.config.provision.ClusterSpec with(java.util.Optional)", "public com.yahoo.config.provision.ClusterSpec exclusive(boolean)", "public static com.yahoo.config.provision.ClusterSpec request(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.component.Version, boolean, java.util.Optional)", + "public static com.yahoo.config.provision.ClusterSpec request(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.component.Version, boolean, java.util.Optional, java.util.Optional)", "public static com.yahoo.config.provision.ClusterSpec from(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.config.provision.ClusterSpec$Group, com.yahoo.component.Version, boolean, java.util.Optional)", + "public static com.yahoo.config.provision.ClusterSpec from(com.yahoo.config.provision.ClusterSpec$Type, com.yahoo.config.provision.ClusterSpec$Id, com.yahoo.config.provision.ClusterSpec$Group, com.yahoo.component.Version, boolean, java.util.Optional, java.util.Optional)", "public java.lang.String toString()", "public int hashCode()", "public boolean equals(java.lang.Object)", @@ -482,6 +486,7 @@ "public void <init>(java.lang.String, java.util.List, java.util.Optional, java.util.Optional, java.util.Optional)", "public void <init>(java.lang.String, java.util.List, java.util.Optional, java.util.Optional, java.util.Optional, java.util.Optional)", "public void <init>(java.lang.String, java.util.List, java.util.Optional, java.util.Optional, java.util.Optional, java.util.Optional, java.util.Optional)", + "public void <init>(java.lang.String, java.util.List, java.util.Optional, java.util.Optional, java.util.Optional, java.util.Optional, java.util.Optional, java.util.Optional)", "public java.lang.String hostname()", "public java.util.List aliases()", "public java.util.Optional flavor()", @@ -489,6 +494,7 @@ "public java.util.Optional membership()", "public java.util.Optional networkPorts()", "public java.util.Optional requestedResources()", + "public java.util.Optional dockerImageRepo()", "public com.yahoo.config.provision.HostSpec withPorts(java.util.Optional)", "public java.lang.String toString()", "public boolean equals(java.lang.Object)", diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java index 0fb78b59aaf..0cd30061139 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterMembership.java @@ -20,7 +20,7 @@ public class ClusterMembership { protected ClusterMembership() {} - private ClusterMembership(String stringValue, Version vespaVersion) { + private ClusterMembership(String stringValue, Version vespaVersion, Optional<String> dockerImageRepo) { String[] components = stringValue.split("/"); if (components.length < 4) throw new RuntimeException("Could not parse '" + stringValue + "' to a cluster membership. " + @@ -41,7 +41,7 @@ public class ClusterMembership { this.cluster = ClusterSpec.from(ClusterSpec.Type.valueOf(components[0]), ClusterSpec.Id.from(components[1]), ClusterSpec.Group.from(Integer.parseInt(components[2])), vespaVersion, - exclusive, combinedId.map(ClusterSpec.Id::from)); + exclusive, combinedId.map(ClusterSpec.Id::from), dockerImageRepo); this.index = Integer.parseInt(components[3]); this.stringValue = toStringValue(); } @@ -106,8 +106,14 @@ public class ClusterMembership { @Override public String toString() { return stringValue(); } + // TODO: Remove when when 7.195 is oldest model version in use + @Deprecated public static ClusterMembership from(String stringValue, Version vespaVersion) { - return new ClusterMembership(stringValue, vespaVersion); + return new ClusterMembership(stringValue, vespaVersion, Optional.empty()); + } + + public static ClusterMembership from(String stringValue, Version vespaVersion, Optional<String> dockerImageRepo) { + return new ClusterMembership(stringValue, vespaVersion, dockerImageRepo); } public static ClusterMembership from(ClusterSpec cluster, int index) { diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java index afdae0023bc..af776a04a55 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterSpec.java @@ -22,8 +22,10 @@ public final class ClusterSpec { private final Version vespaVersion; private boolean exclusive; private final Optional<Id> combinedId; + private final Optional<String> dockerImageRepo; - private ClusterSpec(Type type, Id id, Optional<Group> groupId, Version vespaVersion, boolean exclusive, Optional<Id> combinedId) { + private ClusterSpec(Type type, Id id, Optional<Group> groupId, Version vespaVersion, boolean exclusive, + Optional<Id> combinedId, Optional<String> dockerImageRepo) { this.type = type; this.id = id; this.groupId = groupId; @@ -34,6 +36,7 @@ public final class ClusterSpec { throw new IllegalArgumentException("combinedId must be empty for cluster of type " + type); } this.combinedId = combinedId; + this.dockerImageRepo = dockerImageRepo; } /** Returns the cluster type */ @@ -42,6 +45,9 @@ public final class ClusterSpec { /** Returns the cluster id */ public Id id() { return id; } + /** Returns the docker image repository part of a docker image we want this cluster to run */ + public Optional<String> dockerImageRepo() { return dockerImageRepo; } + /** Returns the version of Vespa that we want this cluster to run */ public Version vespaVersion() { return vespaVersion; } @@ -61,24 +67,42 @@ public final class ClusterSpec { public boolean isExclusive() { return exclusive; } public ClusterSpec with(Optional<Group> newGroup) { - return new ClusterSpec(type, id, newGroup, vespaVersion, exclusive, combinedId); + return new ClusterSpec(type, id, newGroup, vespaVersion, exclusive, combinedId, dockerImageRepo); } public ClusterSpec exclusive(boolean exclusive) { - return new ClusterSpec(type, id, groupId, vespaVersion, exclusive, combinedId); + return new ClusterSpec(type, id, groupId, vespaVersion, exclusive, combinedId, dockerImageRepo); + } + + // TODO: Remove when when 7.195 is oldest model version in use + // TODO: Add @Deprecated when internal repo has been updated to not use this method + // @Deprecated + public static ClusterSpec request(Type type, Id id, Version vespaVersion, boolean exclusive, + Optional<Id> combinedId) { + return request(type, id, vespaVersion, exclusive, combinedId, Optional.empty()); + } + + public static ClusterSpec request(Type type, Id id, Version vespaVersion, boolean exclusive, + Optional<Id> combinedId, Optional<String> dockerImageRepo) { + return new ClusterSpec(type, id, Optional.empty(), vespaVersion, exclusive, combinedId, dockerImageRepo); } - public static ClusterSpec request(Type type, Id id, Version vespaVersion, boolean exclusive, Optional<Id> combinedId) { - return new ClusterSpec(type, id, Optional.empty(), vespaVersion, exclusive, combinedId); + // TODO: Remove when when 7.195 is oldest model version in use + // TODO: Add @Deprecated when internal repo has been updated to not use this method + // @Deprecated + public static ClusterSpec from(Type type, Id id, Group groupId, Version vespaVersion, boolean exclusive, + Optional<Id> combinedId) { + return from(type, id, groupId, vespaVersion, exclusive, combinedId, Optional.empty()); } - public static ClusterSpec from(Type type, Id id, Group groupId, Version vespaVersion, boolean exclusive, Optional<Id> combinedId) { - return new ClusterSpec(type, id, Optional.of(groupId), vespaVersion, exclusive, combinedId); + public static ClusterSpec from(Type type, Id id, Group groupId, Version vespaVersion, boolean exclusive, + Optional<Id> combinedId, Optional<String> dockerImageRepo) { + return new ClusterSpec(type, id, Optional.of(groupId), vespaVersion, exclusive, combinedId, dockerImageRepo); } @Override public String toString() { - return type + " " + id + " " + groupId.map(group -> group + " ").orElse("") + vespaVersion; + return type + " " + id + " " + groupId.map(group -> group + " ").orElse("") + vespaVersion + " " + dockerImageRepo.orElse(""); } @Override @@ -93,6 +117,7 @@ public final class ClusterSpec { if ( ! other.id.equals(this.id)) return false; if ( ! other.groupId.equals(this.groupId)) return false; if ( ! other.vespaVersion.equals(this.vespaVersion)) return false; + if ( ! other.dockerImageRepo.orElse("").equals(this.dockerImageRepo.orElse(""))) return false; return true; } 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 63725d9a535..4367e9750e6 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 @@ -1,6 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; +import com.yahoo.component.Version; + import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -25,7 +27,9 @@ public class HostSpec implements Comparable<HostSpec> { private final Optional<Flavor> flavor; - private final Optional<com.yahoo.component.Version> version; + private final Optional<Version> version; + + private final Optional<String> dockerImageRepo; private final Optional<NetworkPorts> networkPorts; @@ -35,7 +39,7 @@ public class HostSpec implements Comparable<HostSpec> { this(hostname, new ArrayList<>(), Optional.empty(), membership); } - public HostSpec(String hostname, ClusterMembership membership, Flavor flavor, Optional<com.yahoo.component.Version> version) { + public HostSpec(String hostname, ClusterMembership membership, Flavor flavor, Optional<Version> version) { this(hostname, new ArrayList<>(), Optional.of(flavor), Optional.of(membership), version); } @@ -56,19 +60,26 @@ public class HostSpec implements Comparable<HostSpec> { } public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, - Optional<ClusterMembership> membership, Optional<com.yahoo.component.Version> version) { + Optional<ClusterMembership> membership, Optional<Version> version) { this(hostname, aliases, flavor, membership, version, Optional.empty()); } public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, - Optional<ClusterMembership> membership, Optional<com.yahoo.component.Version> version, + Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts) { this(hostname, aliases, flavor, membership, version, networkPorts, Optional.empty()); } public HostSpec(String hostname, List<String> aliases, Optional<Flavor> flavor, - Optional<ClusterMembership> membership, Optional<com.yahoo.component.Version> version, + Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts, Optional<NodeResources> requestedResources) { + this(hostname, aliases, flavor, membership, version, networkPorts, requestedResources, Optional.empty()); + } + + 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) { if (hostname == null || hostname.isEmpty()) throw new IllegalArgumentException("Hostname must be specified"); this.hostname = hostname; this.aliases = List.copyOf(aliases); @@ -77,6 +88,7 @@ public class HostSpec implements Comparable<HostSpec> { 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, "Version cannot be null but can be empty");; } /** Returns the name identifying this host */ @@ -99,8 +111,10 @@ 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 HostSpec withPorts(Optional<NetworkPorts> ports) { - return new HostSpec(hostname, aliases, flavor, membership, version, ports, requestedResources); + return new HostSpec(hostname, aliases, flavor, membership, version, ports, requestedResources, dockerImageRepo); } @Override 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 f66bacbc383..779dd1d24f7 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 @@ -59,6 +59,9 @@ public class AllocatedHostsSerializer { /** Wanted version */ private static final String hostSpecVespaVersionKey = "vespaVersion"; + /** Wanted docker image repo */ + private static final String hostSpecDockerImageRepoKey = "dockerImageRepo"; + /** Current version */ private static final String hostSpecCurrentVespaVersionKey = "currentVespaVersion"; private static final String hostSpecNetworkPortsKey = "ports"; @@ -79,6 +82,7 @@ public class AllocatedHostsSerializer { private static void toSlime(HostSpec host, Cursor object) { object.setString(hostSpecHostNameKey, host.hostname()); aliasesToSlime(host, object); + // TODO serialize dockerImageRepo host.membership().ifPresent(membership -> { object.setString(hostSpecMembershipKey, membership.stringValue()); object.setString(hostSpecVespaVersionKey, membership.cluster().vespaVersion().toFullString()); @@ -196,7 +200,10 @@ public class AllocatedHostsSerializer { private static ClusterMembership membershipFromSlime(Inspector object) { return ClusterMembership.from(object.field(hostSpecMembershipKey).asString(), - com.yahoo.component.Version.fromString(object.field(hostSpecVespaVersionKey).asString())); + com.yahoo.component.Version.fromString(object.field(hostSpecVespaVersionKey).asString()), + object.field(hostSpecDockerImageRepoKey).valid() + ? Optional.of(object.field(hostSpecDockerImageRepoKey).asString()) + : Optional.empty()); } private static Optional<String> optionalString(Inspector inspector) { diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java index 4418b5c85ca..3ac04cd1cb5 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterMembershipTest.java @@ -18,72 +18,81 @@ public class ClusterMembershipTest { @Test public void testContainerServiceInstance() { - ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Version.fromString("6.42"), false, Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), + Version.fromString("6.42"), false, Optional.empty(), Optional.empty()); assertContainerService(ClusterMembership.from(cluster, 3)); } @Test public void testSerializationWithOptionalParts() { { - ClusterMembership instance = ClusterMembership.from("container/id1/4/37/exclusive/retired", Vtag.currentVersion); - ClusterMembership serialized = ClusterMembership.from(instance.stringValue(), Vtag.currentVersion); + ClusterMembership instance = ClusterMembership.from("container/id1/4/37/exclusive/retired", Vtag.currentVersion, Optional.empty()); + ClusterMembership serialized = ClusterMembership.from(instance.stringValue(), Vtag.currentVersion, Optional.empty()); assertEquals(instance, serialized); assertTrue(instance.retired()); assertTrue(instance.cluster().isExclusive()); assertFalse(instance.cluster().combinedId().isPresent()); + assertTrue(instance.cluster().dockerImageRepo().isEmpty()); } { - ClusterMembership instance = ClusterMembership.from("container/id1/4/37/exclusive", Vtag.currentVersion); - ClusterMembership serialized = ClusterMembership.from(instance.stringValue(), Vtag.currentVersion); + ClusterMembership instance = ClusterMembership.from("container/id1/4/37/exclusive", Vtag.currentVersion, Optional.empty()); + ClusterMembership serialized = ClusterMembership.from(instance.stringValue(), Vtag.currentVersion, Optional.empty()); assertEquals(instance, serialized); assertFalse(instance.retired()); assertTrue(instance.cluster().isExclusive()); assertFalse(instance.cluster().combinedId().isPresent()); + assertTrue(instance.cluster().dockerImageRepo().isEmpty()); } { - ClusterMembership instance = ClusterMembership.from("combined/id1/4/37/exclusive/containerId1", Vtag.currentVersion); - ClusterMembership serialized = ClusterMembership.from(instance.stringValue(), Vtag.currentVersion); + Optional<String> dockerImageRepo = Optional.of("docker.foo.com:4443/vespa/bar"); + ClusterMembership instance = ClusterMembership.from("combined/id1/4/37/exclusive/containerId1", Vtag.currentVersion, dockerImageRepo); + ClusterMembership serialized = ClusterMembership.from(instance.stringValue(), Vtag.currentVersion, dockerImageRepo); assertEquals(instance, serialized); assertFalse(instance.retired()); assertTrue(instance.cluster().isExclusive()); assertEquals(ClusterSpec.Id.from("containerId1"), instance.cluster().combinedId().get()); + assertEquals(dockerImageRepo.get(), instance.cluster().dockerImageRepo().get()); } } @Test public void testServiceInstance() { - ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), Version.fromString("6.42"), false, Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), + Version.fromString("6.42"), false, Optional.empty(), Optional.empty()); assertContentService(ClusterMembership.from(cluster, 37)); } @Test public void testServiceInstanceWithGroup() { ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), - ClusterSpec.Group.from(4), Version.fromString("6.42"), false, Optional.empty()); + ClusterSpec.Group.from(4), Version.fromString("6.42"), + false, Optional.empty(), Optional.empty()); assertContentServiceWithGroup(ClusterMembership.from(cluster, 37)); } @Test public void testServiceInstanceWithGroupFromString() { - assertContentServiceWithGroup(ClusterMembership.from("content/id1/4/37", Vtag.currentVersion)); + assertContentServiceWithGroup(ClusterMembership.from("content/id1/4/37", Vtag.currentVersion, Optional.empty())); } @Test public void testServiceInstanceWithRetire() { - ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), Version.fromString("6.42"), false, Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), + Version.fromString("6.42"), false, Optional.empty(), Optional.empty()); assertContentServiceWithRetire(ClusterMembership.retiredFrom(cluster, 37)); } @Test public void testServiceInstanceWithGroupAndRetire() { ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("id1"), - ClusterSpec.Group.from(4), Version.fromString("6.42"), false, Optional.empty()); + ClusterSpec.Group.from(4), Version.fromString("6.42"), + false, Optional.empty(), Optional.empty()); assertContentServiceWithGroupAndRetire(ClusterMembership.retiredFrom(cluster, 37)); } @Test public void testServiceInstanceWithGroupAndRetireFromString() { - assertContentServiceWithGroupAndRetire(ClusterMembership.from("content/id1/4/37/retired", Vtag.currentVersion)); + assertContentServiceWithGroupAndRetire(ClusterMembership.from("content/id1/4/37/retired", Vtag.currentVersion, Optional.empty())); } private void assertContainerService(ClusterMembership instance) { diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java index 7f8e41116a6..eb2407e988a 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ClusterSpecTest.java @@ -54,7 +54,7 @@ public class ClusterSpecTest { private static ClusterSpec spec(ClusterSpec.Type type, String id) { return ClusterSpec.from(type, ClusterSpec.Id.from(id), ClusterSpec.Group.from(1), Version.emptyVersion, - false, Optional.empty()); + false, Optional.empty(), Optional.empty()); } } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java index e1d6f061446..66ca1170487 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java @@ -71,7 +71,7 @@ public class HostFilterTest { } private Optional<ClusterMembership> membership(String membershipString) { - return Optional.of(ClusterMembership.from(membershipString, Vtag.currentVersion)); + return Optional.of(ClusterMembership.from(membershipString, Vtag.currentVersion, Optional.empty())); } } 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 193caf3edba..4a8a12e31ff 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 @@ -37,7 +37,8 @@ public class AllocatedHostsSerializerTest { hosts.add(new HostSpec("with-aliases", List.of("alias1", "alias2"))); hosts.add(new HostSpec("allocated", - Optional.of(ClusterMembership.from("container/test/0/0", Version.fromString("6.73.1"))))); + Optional.of(ClusterMembership.from("container/test/0/0", Version.fromString("6.73.1"), + Optional.of("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", @@ -72,6 +73,7 @@ public class AllocatedHostsSerializerTest { assertEquals(expectedHost.networkPorts(), deserializedHost.networkPorts()); assertEquals(expectedHost.aliases(), deserializedHost.aliases()); assertEquals(expectedHost.requestedResources(), deserializedHost.requestedResources()); + assertEquals(expectedHost.dockerImageRepo().orElse(""), deserializedHost.dockerImageRepo().orElse("")); } } |