diff options
75 files changed, 397 insertions, 397 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index 62483cb9c5d..7d0228721aa 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -7,7 +7,7 @@ import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.FileRegistry; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.Zone; @@ -37,7 +37,7 @@ public interface ModelContext { default Optional<File> appDir() { return Optional.empty();} /** The Docker image repo we want to use for images for this deployment (optional, will use default if empty) */ - default Optional<ContainerImage> wantedDockerImageRepo() { return Optional.empty(); } + default Optional<DockerImage> wantedDockerImageRepo() { return Optional.empty(); } /** The Vespa version this model is built for */ Version modelVespaVersion(); diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java index 30c17c30f6e..c52ea1ef092 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java @@ -23,7 +23,7 @@ import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.provision.HostsXmlProvisioner; import com.yahoo.config.model.provision.SingleNodeProvisioner; import com.yahoo.config.model.test.MockApplicationPackage; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Zone; import com.yahoo.io.IOUtils; import com.yahoo.io.reader.NamedReader; @@ -78,7 +78,7 @@ public class DeployState implements ConfigDefinitionStore { private final ImportedMlModels importedModels; private final ValidationOverrides validationOverrides; private final Version wantedNodeVespaVersion; - private final Optional<ContainerImage> wantedDockerImageRepo; + private final Optional<DockerImage> wantedDockerImageRepo; private final Instant now; private final HostProvisioner provisioner; private final Provisioned provisioned; @@ -115,7 +115,7 @@ public class DeployState implements ConfigDefinitionStore { Instant now, Version wantedNodeVespaVersion, boolean accessLoggingEnabledByDefault, - Optional<ContainerImage> wantedDockerImageRepo) { + Optional<DockerImage> wantedDockerImageRepo) { this.logger = deployLogger; this.fileRegistry = fileRegistry; this.rankProfileRegistry = rankProfileRegistry; @@ -267,7 +267,7 @@ public class DeployState implements ConfigDefinitionStore { public Version getWantedNodeVespaVersion() { return wantedNodeVespaVersion; } - public Optional<ContainerImage> getWantedDockerImageRepo() { return wantedDockerImageRepo; } + public Optional<DockerImage> getWantedDockerImageRepo() { return wantedDockerImageRepo; } public Instant now() { return now; } @@ -307,7 +307,7 @@ public class DeployState implements ConfigDefinitionStore { private Instant now = Instant.now(); private Version wantedNodeVespaVersion = Vtag.currentVersion; private boolean accessLoggingEnabledByDefault = true; - private Optional<ContainerImage> wantedDockerImageRepo = Optional.empty(); + private Optional<DockerImage> wantedDockerImageRepo = Optional.empty(); public Builder applicationPackage(ApplicationPackage applicationPackage) { this.applicationPackage = applicationPackage; @@ -384,7 +384,7 @@ public class DeployState implements ConfigDefinitionStore { return this; } - public Builder wantedDockerImageRepo(Optional<ContainerImage> dockerImageRepo) { + public Builder wantedDockerImageRepo(Optional<DockerImage> dockerImageRepo) { this.wantedDockerImageRepo = dockerImageRepo; return this; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java index ab813cea8c8..8f737f02dca 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java @@ -9,7 +9,7 @@ import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.text.XML; import com.yahoo.vespa.model.HostResource; @@ -49,7 +49,7 @@ public class NodesSpecification { private final boolean exclusive; /** The repo part of a docker image (without tag), optional */ - private final Optional<ContainerImage> dockerImageRepo; + private final Optional<DockerImage> dockerImageRepo; /** The ID of the cluster referencing this node specification, if any */ private final Optional<String> combinedId; @@ -58,7 +58,7 @@ public class NodesSpecification { ClusterResources max, boolean dedicated, Version version, boolean required, boolean canFail, boolean exclusive, - Optional<ContainerImage> dockerImageRepo, + Optional<DockerImage> dockerImageRepo, Optional<String> combinedId) { if (max.smallerThan(min)) throw new IllegalArgumentException("Min resources must be larger or equal to max resources, but " + @@ -84,7 +84,7 @@ public class NodesSpecification { } private static NodesSpecification create(boolean dedicated, boolean canFail, Version version, - ModelElement nodesElement, Optional<ContainerImage> dockerImageRepo) { + ModelElement nodesElement, Optional<DockerImage> dockerImageRepo) { var resolvedElement = resolveElement(nodesElement); var combinedId = findCombinedId(nodesElement, resolvedElement); var resources = toResources(resolvedElement); @@ -370,9 +370,9 @@ public class NodesSpecification { return new IllegalArgumentException("referenced service '" + referenceId + "' is not defined"); } - private static Optional<ContainerImage> dockerImageToUse(ModelElement nodesElement, Optional<ContainerImage> dockerImage) { + private static Optional<DockerImage> dockerImageToUse(ModelElement nodesElement, Optional<DockerImage> dockerImage) { String dockerImageFromElement = nodesElement.stringAttribute("docker-image"); - return dockerImageFromElement == null ? dockerImage : Optional.of(ContainerImage.fromString(dockerImageFromElement)); + return dockerImageFromElement == null ? dockerImage : Optional.of(DockerImage.fromString(dockerImageFromElement)); } /** Parses a value ("value") or value range ("[min-value, max-value]") */ 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 3c6550b9cd0..779b6854e21 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, Optional<ContainerImage> dockerImageRepo) { + private ClusterMembership(String stringValue, Version vespaVersion, Optional<DockerImage> dockerImageRepo) { String[] components = stringValue.split("/"); if (components.length < 4) throw new RuntimeException("Could not parse '" + stringValue + "' to a cluster membership. " + @@ -115,7 +115,7 @@ public class ClusterMembership { return new ClusterMembership(stringValue, vespaVersion, Optional.empty()); } - public static ClusterMembership from(String stringValue, Version vespaVersion, Optional<ContainerImage> dockerImageRepo) { + public static ClusterMembership from(String stringValue, Version vespaVersion, Optional<DockerImage> dockerImageRepo) { return new ClusterMembership(stringValue, vespaVersion, dockerImageRepo); } 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 12cb150b37c..5b76163e97f 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,10 +22,10 @@ public final class ClusterSpec { private final Version vespaVersion; private boolean exclusive; private final Optional<Id> combinedId; - private final Optional<ContainerImage> dockerImageRepo; + private final Optional<DockerImage> dockerImageRepo; private ClusterSpec(Type type, Id id, Optional<Group> groupId, Version vespaVersion, boolean exclusive, - Optional<Id> combinedId, Optional<ContainerImage> dockerImageRepo) { + Optional<Id> combinedId, Optional<DockerImage> dockerImageRepo) { this.type = type; this.id = id; this.groupId = groupId; @@ -49,7 +49,7 @@ public final class ClusterSpec { public Id id() { return id; } /** Returns the docker image repository part of a docker image we want this cluster to run */ - public Optional<ContainerImage> dockerImageRepo() { return dockerImageRepo; } + public Optional<DockerImage> dockerImageRepo() { return dockerImageRepo; } /** Returns the docker image (repository + vespa version) we want this cluster to run */ public Optional<String> dockerImage() { return dockerImageRepo.map(repo -> repo + ":" + vespaVersion.toFullString()); } @@ -96,7 +96,7 @@ public final class ClusterSpec { private final boolean specification; private Optional<Group> groupId = Optional.empty(); - private Optional<ContainerImage> dockerImageRepo = Optional.empty(); + private Optional<DockerImage> dockerImageRepo = Optional.empty(); private Version vespaVersion; private boolean exclusive = false; private Optional<Id> combinedId = Optional.empty(); @@ -144,11 +144,11 @@ public final class ClusterSpec { @Deprecated // TODO: Remove after 7.208 is oldest version in use public Builder dockerImageRepo(Optional<String> dockerImageRepo) { - this.dockerImageRepo = dockerImageRepo.map(ContainerImage::fromString); + this.dockerImageRepo = dockerImageRepo.map(DockerImage::fromString); return this; } - public Builder dockerImageRepository(Optional<ContainerImage> dockerImageRepo) { + public Builder dockerImageRepository(Optional<DockerImage> dockerImageRepo) { this.dockerImageRepo = dockerImageRepo; return this; } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ContainerImage.java b/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java index be81102c20b..bbf65c1cd47 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ContainerImage.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java @@ -11,14 +11,14 @@ import java.util.Optional; * * @author mpolden */ -public class ContainerImage { +public class DockerImage { - public static final ContainerImage EMPTY = new ContainerImage("", Optional.empty()); + public static final DockerImage EMPTY = new DockerImage("", Optional.empty()); private final String repository; private final Optional<String> tag; - private ContainerImage(String repository, Optional<String> tag) { + private DockerImage(String repository, Optional<String> tag) { this.repository = Objects.requireNonNull(repository, "repository must be non-null"); this.tag = Objects.requireNonNull(tag, "tag must be non-null"); } @@ -37,8 +37,8 @@ public class ContainerImage { } /** Returns the Docker image tagged with the given version */ - public ContainerImage withTag(Version version) { - return new ContainerImage(repository, Optional.of(version.toFullString())); + public DockerImage withTag(Version version) { + return new DockerImage(repository, Optional.of(version.toFullString())); } public String asString() { @@ -54,7 +54,7 @@ public class ContainerImage { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - ContainerImage that = (ContainerImage) o; + DockerImage that = (DockerImage) o; return repository.equals(that.repository) && tag.equals(that.tag); } @@ -64,16 +64,16 @@ public class ContainerImage { return Objects.hash(repository, tag); } - public static ContainerImage fromString(String name) { + public static DockerImage fromString(String name) { if (name.isEmpty()) return EMPTY; int n = name.lastIndexOf(':'); - if (n < 0) return new ContainerImage(name, Optional.empty()); + if (n < 0) return new DockerImage(name, Optional.empty()); String tag = name.substring(n + 1); if (!tag.contains("/")) { - return new ContainerImage(name.substring(0, n), Optional.of(tag)); + return new DockerImage(name.substring(0, n), Optional.of(tag)); } - return new ContainerImage(name, Optional.empty()); + return new DockerImage(name, Optional.empty()); } } 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 18dc479948c..6bc3809bd54 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 @@ -31,7 +31,7 @@ public class HostSpec implements Comparable<HostSpec> { private final Optional<Version> version; - private final Optional<ContainerImage> dockerImageRepo; + private final Optional<DockerImage> dockerImageRepo; private final Optional<NetworkPorts> networkPorts; @@ -50,7 +50,7 @@ public class HostSpec implements Comparable<HostSpec> { ClusterMembership membership, Optional<Version> version, Optional<NetworkPorts> networkPorts, - Optional<ContainerImage> dockerImageRepo) { + Optional<DockerImage> dockerImageRepo) { this(hostname, List.of(), realResources, @@ -70,7 +70,7 @@ public class HostSpec implements Comparable<HostSpec> { Optional<ClusterMembership> membership, Optional<Version> version, Optional<NetworkPorts> networkPorts, - Optional<ContainerImage> dockerImageRepo) { + Optional<DockerImage> dockerImageRepo) { if (hostname == null || hostname.isEmpty()) throw new IllegalArgumentException("Hostname must be specified"); this.hostname = hostname; this.aliases = List.copyOf(aliases); @@ -178,7 +178,7 @@ 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<ContainerImage> dockerImageRepo) { + Optional<DockerImage> dockerImageRepo) { this(hostname, aliases, flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), flavor.map(f -> f.resources()).orElse(NodeResources.unspecified()), @@ -216,7 +216,7 @@ public class HostSpec implements Comparable<HostSpec> { /** Returns the requested resources leading to this host being provisioned, or empty if unspecified */ public Optional<NodeResources> requestedResources() { return requestedResources.asOptional(); } - public Optional<ContainerImage> dockerImageRepo() { return dockerImageRepo; } + public Optional<DockerImage> dockerImageRepo() { return dockerImageRepo; } public HostSpec withPorts(Optional<NetworkPorts> ports) { return new HostSpec(hostname, aliases, realResources, advertisedResources, requestedResources, membership, version, ports, 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 46dab780826..e4913643e8d 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,7 +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.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeResources; @@ -216,7 +216,7 @@ public class AllocatedHostsSerializer { return ClusterMembership.from(object.field(hostSpecMembershipKey).asString(), com.yahoo.component.Version.fromString(object.field(hostSpecVespaVersionKey).asString()), object.field(hostSpecDockerImageRepoKey).valid() - ? Optional.of(ContainerImage.fromString(object.field(hostSpecDockerImageRepoKey).asString())) + ? Optional.of(DockerImage.fromString(object.field(hostSpecDockerImageRepoKey).asString())) : Optional.empty()); } @@ -225,9 +225,9 @@ public class AllocatedHostsSerializer { return Optional.of(inspector.asString()); } - private static Optional<ContainerImage> optionalDockerImage(Inspector inspector) { + private static Optional<DockerImage> optionalDockerImage(Inspector inspector) { if ( ! inspector.valid()) return Optional.empty(); - return Optional.of(ContainerImage.fromString(inspector.asString())); + return Optional.of(DockerImage.fromString(inspector.asString())); } } 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 bf12bdb508f..71e039f6e8e 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 @@ -42,7 +42,7 @@ public class ClusterMembershipTest { assertTrue(instance.cluster().dockerImageRepo().isEmpty()); } { - Optional<ContainerImage> dockerImageRepo = Optional.of(ContainerImage.fromString("docker.foo.com:4443/vespa/bar")); + Optional<DockerImage> dockerImageRepo = Optional.of(DockerImage.fromString("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); 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 ee7ff257274..700bc389664 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,7 +4,7 @@ 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.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NetworkPorts; import com.yahoo.config.provision.NodeResources; @@ -39,10 +39,10 @@ public class AllocatedHostsSerializerTest { bigSlowDiskSpeedNode, anyDiskSpeedNode, ClusterMembership.from("container/test/0/0", Version.fromString("6.73.1"), - Optional.of(ContainerImage.fromString("docker.foo.com:4443/vespa/bar"))), + Optional.of(DockerImage.fromString("docker.foo.com:4443/vespa/bar"))), Optional.empty(), Optional.empty(), - Optional.of(ContainerImage.fromString("docker.foo.com:4443/vespa/bar")))); + Optional.of(DockerImage.fromString("docker.foo.com:4443/vespa/bar")))); hosts.add(new HostSpec("flavor-from-resources-2", smallSlowDiskSpeedNode, bigSlowDiskSpeedNode, diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java index 9f74c41dc49..11ce659625d 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/Deployment.java @@ -5,7 +5,7 @@ import com.yahoo.component.Version; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.Provisioner; import java.util.logging.Level; @@ -51,7 +51,7 @@ public class Deployment implements com.yahoo.config.provision.Deployment { private final DeployLogger logger = new SilentDeployLogger(); /** The repository part of docker image this application should run on. Version is separate from image repo */ - final Optional<ContainerImage> dockerImageRepository; + final Optional<DockerImage> dockerImageRepository; /** The Vespa version this application should run on */ private final Version version; diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 73d0e66ef53..3d4198c65a9 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -17,7 +17,7 @@ import com.yahoo.config.model.api.Provisioned; import com.yahoo.config.model.api.Quota; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.Zone; import com.yahoo.vespa.flags.FetchVector; @@ -48,7 +48,7 @@ public class ModelContextImpl implements ModelContext { private final ModelContext.Properties properties; private final Optional<File> appDir; - private final Optional<ContainerImage> wantedDockerImageRepository; + private final Optional<DockerImage> wantedDockerImageRepository; /** The version of Vespa we are building a model for */ private final Version modelVespaVersion; @@ -72,7 +72,7 @@ public class ModelContextImpl implements ModelContext { Provisioned provisioned, ModelContext.Properties properties, Optional<File> appDir, - Optional<ContainerImage> wantedDockerImageRepository, + Optional<DockerImage> wantedDockerImageRepository, Version modelVespaVersion, Version wantedNodeVespaVersion) { this.applicationPackage = applicationPackage; @@ -126,7 +126,7 @@ public class ModelContextImpl implements ModelContext { public Optional<File> appDir() { return appDir; } @Override - public Optional<ContainerImage> wantedDockerImageRepo() { return wantedDockerImageRepository; } + public Optional<DockerImage> wantedDockerImageRepo() { return wantedDockerImageRepository; } @Override public Version modelVespaVersion() { return modelVespaVersion; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java index 168273bd349..7fc6b35722f 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java @@ -12,7 +12,7 @@ import com.yahoo.config.model.api.Provisioned; import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.TenantName; import com.yahoo.container.jdisc.secretstore.SecretStore; @@ -85,7 +85,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { protected Application buildModelVersion(ModelFactory modelFactory, ApplicationPackage applicationPackage, ApplicationId applicationId, - Optional<ContainerImage> wantedDockerImageRepository, + Optional<DockerImage> wantedDockerImageRepository, Version wantedNodeVespaVersion, Optional<AllocatedHosts> ignored // Ignored since we have this in the app package for activated models ) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java index c80d044e831..245b9db020b 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java @@ -10,7 +10,7 @@ import com.yahoo.config.model.api.Provisioned; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationLockException; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.OutOfCapacityException; import com.yahoo.component.Version; import com.yahoo.config.provision.TransientException; @@ -73,7 +73,7 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> { * and assigns to this SettableOptional such that it can be used after this method returns */ public List<MODELRESULT> buildModels(ApplicationId applicationId, - Optional<ContainerImage> dockerImageRepository, + Optional<DockerImage> dockerImageRepository, Version wantedNodeVespaVersion, ApplicationPackage applicationPackage, SettableOptional<AllocatedHosts> allocatedHosts, @@ -149,7 +149,7 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> { // versions is the set of versions for one particular major version private List<MODELRESULT> buildModelVersions(Set<Version> versions, ApplicationId applicationId, - Optional<ContainerImage> wantedDockerImageRepository, + Optional<DockerImage> wantedDockerImageRepository, Version wantedNodeVespaVersion, ApplicationPackage applicationPackage, SettableOptional<AllocatedHosts> allocatedHosts, @@ -242,7 +242,7 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> { } protected abstract MODELRESULT buildModelVersion(ModelFactory modelFactory, ApplicationPackage applicationPackage, - ApplicationId applicationId, Optional<ContainerImage> dockerImageRepository, + ApplicationId applicationId, Optional<DockerImage> dockerImageRepository, Version wantedNodeVespaVersion, Optional<AllocatedHosts> allocatedHosts); /** diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java index 611ef38c1f8..aa851a95335 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java @@ -19,7 +19,7 @@ import com.yahoo.config.model.api.ValidationParameters.IgnoreValidationErrors; import com.yahoo.config.model.application.provider.FilesApplicationPackage; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.config.server.application.Application; import com.yahoo.vespa.config.server.application.ApplicationSet; import com.yahoo.vespa.config.server.application.PermanentApplicationPackage; @@ -80,7 +80,7 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P protected PreparedModelResult buildModelVersion(ModelFactory modelFactory, ApplicationPackage applicationPackage, ApplicationId applicationId, - Optional<ContainerImage> wantedDockerImageRepository, + Optional<DockerImage> wantedDockerImageRepository, Version wantedNodeVespaVersion, Optional<AllocatedHosts> allocatedHosts) { Version modelVersion = modelFactory.version(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java index 6524b18ab0e..1fea966503b 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java @@ -8,7 +8,7 @@ import com.yahoo.config.model.api.EndpointCertificateMetadata; import com.yahoo.config.model.api.Quota; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.TenantName; import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.slime.SlimeUtils; @@ -55,7 +55,7 @@ public final class PrepareParams { private final List<ContainerEndpoint> containerEndpoints; private final Optional<String> tlsSecretsKeyName; private final Optional<EndpointCertificateMetadata> endpointCertificateMetadata; - private final Optional<ContainerImage> dockerImageRepository; + private final Optional<DockerImage> dockerImageRepository; private final Optional<AthenzDomain> athenzDomain; private final Optional<ApplicationRoles> applicationRoles; private final Optional<Quota> quota; @@ -64,7 +64,7 @@ public final class PrepareParams { boolean dryRun, boolean verbose, boolean isBootstrap, Optional<Version> vespaVersion, List<ContainerEndpoint> containerEndpoints, Optional<String> tlsSecretsKeyName, Optional<EndpointCertificateMetadata> endpointCertificateMetadata, - Optional<ContainerImage> dockerImageRepository, Optional<AthenzDomain> athenzDomain, + Optional<DockerImage> dockerImageRepository, Optional<AthenzDomain> athenzDomain, Optional<ApplicationRoles> applicationRoles, Optional<Quota> quota) { this.timeoutBudget = timeoutBudget; this.applicationId = Objects.requireNonNull(applicationId); @@ -94,7 +94,7 @@ public final class PrepareParams { private List<ContainerEndpoint> containerEndpoints = null; private Optional<String> tlsSecretsKeyName = Optional.empty(); private Optional<EndpointCertificateMetadata> endpointCertificateMetadata = Optional.empty(); - private Optional<ContainerImage> dockerImageRepository = Optional.empty(); + private Optional<DockerImage> dockerImageRepository = Optional.empty(); private Optional<AthenzDomain> athenzDomain = Optional.empty(); private Optional<ApplicationRoles> applicationRoles = Optional.empty(); private Optional<Quota> quota = Optional.empty(); @@ -168,12 +168,12 @@ public final class PrepareParams { public Builder dockerImageRepository(String dockerImageRepository) { this.dockerImageRepository = (dockerImageRepository == null) ? Optional.empty() - : Optional.of(ContainerImage.fromString(dockerImageRepository)); + : Optional.of(DockerImage.fromString(dockerImageRepository)); return this; } - public Builder dockerImageRepository(ContainerImage containerImageRepository) { - this.dockerImageRepository = Optional.ofNullable(containerImageRepository); + public Builder dockerImageRepository(DockerImage dockerImageRepository) { + this.dockerImageRepository = Optional.ofNullable(dockerImageRepository); return this; } @@ -282,7 +282,7 @@ public final class PrepareParams { return endpointCertificateMetadata; } - public Optional<ContainerImage> dockerImageRepository() { + public Optional<DockerImage> dockerImageRepository() { return dockerImageRepository; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java index 0bd477b4514..b3e35e955de 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/Session.java @@ -9,7 +9,7 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.TenantName; import com.yahoo.path.Path; import com.yahoo.transaction.Transaction; @@ -126,7 +126,7 @@ public abstract class Session implements Comparable<Session> { sessionZooKeeperClient.writeVespaVersion(version); } - public void setDockerImageRepository(Optional<ContainerImage> dockerImageRepository) { + public void setDockerImageRepository(Optional<DockerImage> dockerImageRepository) { sessionZooKeeperClient.writeDockerImageRepository(dockerImageRepository); } @@ -151,7 +151,7 @@ public abstract class Session implements Comparable<Session> { public FileReference getApplicationPackageReference() {return sessionZooKeeperClient.readApplicationPackageReference(); } - public Optional<ContainerImage> getDockerImageRepository() { return sessionZooKeeperClient.readDockerImageRepository(); } + public Optional<DockerImage> getDockerImageRepository() { return sessionZooKeeperClient.readDockerImageRepository(); } public Version getVespaVersion() { return sessionZooKeeperClient.readVespaVersion(); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index b146e90930f..489cb8c8167 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -21,7 +21,7 @@ import com.yahoo.config.model.api.Quota; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.secretstore.SecretStore; @@ -157,7 +157,7 @@ public class SessionPreparer { final ApplicationId applicationId; /** The repository part of docker image to be used for this deployment */ - final Optional<ContainerImage> dockerImageRepository; + final Optional<DockerImage> dockerImageRepository; /** The version of Vespa the application to be prepared specifies for its nodes */ final Version vespaVersion; @@ -333,7 +333,7 @@ public class SessionPreparer { ApplicationPackage applicationPackage, ApplicationId applicationId, FileReference distributedApplicationPackage, - Optional<ContainerImage> dockerImageRepository, + Optional<DockerImage> dockerImageRepository, Version vespaVersion, DeployLogger deployLogger, Map<Version, FileRegistry> fileRegistryMap, diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java index b019f07951c..c5cf3db1ba0 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java @@ -11,7 +11,7 @@ import com.yahoo.config.model.api.Quota; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.TenantName; import com.yahoo.path.Path; import com.yahoo.slime.SlimeUtils; @@ -197,13 +197,13 @@ public class SessionZooKeeperClient { return new Version(configCurator.getData(versionPath())); } - public Optional<ContainerImage> readDockerImageRepository() { + public Optional<DockerImage> readDockerImageRepository() { if ( ! configCurator.exists(dockerImageRepositoryPath())) return Optional.empty(); String dockerImageRepository = configCurator.getData(dockerImageRepositoryPath()); - return dockerImageRepository.isEmpty() ? Optional.empty() : Optional.of(ContainerImage.fromString(dockerImageRepository)); + return dockerImageRepository.isEmpty() ? Optional.empty() : Optional.of(DockerImage.fromString(dockerImageRepository)); } - public void writeDockerImageRepository(Optional<ContainerImage> dockerImageRepository) { + public void writeDockerImageRepository(Optional<DockerImage> dockerImageRepository) { dockerImageRepository.ifPresent(repo -> configCurator.putData(dockerImageRepositoryPath(), repo.repository())); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java index efb8a80240a..254fe62cba8 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java @@ -15,7 +15,7 @@ import com.yahoo.config.model.provision.Hosts; import com.yahoo.config.model.provision.InMemoryProvisioner; import com.yahoo.config.model.test.HostedConfigModelRegistry; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; @@ -102,7 +102,7 @@ public class HostedDeployTest { assertTrue(deployment.isPresent()); deployment.get().activate(); assertEquals("4.5.6", ((Deployment) deployment.get()).session().getVespaVersion().toString()); - assertEquals(ContainerImage.fromString(dockerImageRepository), ((Deployment) deployment.get()).session().getDockerImageRepository().get()); + assertEquals(DockerImage.fromString(dockerImageRepository), ((Deployment) deployment.get()).session().getDockerImageRepository().get()); assertEquals("myDomain", ((Deployment) deployment.get()).session().getAthenzDomain().get().value()); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java index 7fe826167f8..cc4f39b0789 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java @@ -6,7 +6,7 @@ import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationLockException; import com.yahoo.config.provision.ApplicationName; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.OutOfCapacityException; import com.yahoo.config.provision.TenantName; @@ -280,7 +280,7 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest { request(HttpRequest.Method.PUT, sessionId, Map.of("dockerImageRepository", dockerImageRepository, "applicationName", applicationId().application().value())); applicationRepository.activate(tenantRepository.getTenant(tenant), sessionId, timeoutBudget, false); - assertEquals(ContainerImage.fromString(dockerImageRepository), + assertEquals(DockerImage.fromString(dockerImageRepository), applicationRepository.getActiveSession(applicationId()).getDockerImageRepository().get()); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java index 18bab3bf348..2ac3785682c 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java @@ -6,7 +6,7 @@ import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.provision.AllocatedHosts; import com.yahoo.config.provision.ClusterMembership; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeFlavors; @@ -49,9 +49,9 @@ public class ZKApplicationPackageTest { TEST_FLAVOR.get().resources(), TEST_FLAVOR.get().resources(), ClusterMembership.from("container/test/0/0", Version.fromString("6.73.1"), - Optional.of(ContainerImage.fromString("docker.foo.com:4443/vespa/bar"))), + Optional.of(DockerImage.fromString("docker.foo.com:4443/vespa/bar"))), Optional.of(Version.fromString("6.0.1")), Optional.empty(), - Optional.of(ContainerImage.fromString("docker repo"))))); + Optional.of(DockerImage.fromString("docker repo"))))); private ConfigCurator configCurator; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java index 688583e13d5..717a4296b81 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/model/DeploymentData.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.controller.api.application.v4.model; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.athenz.api.AthenzDomain; import com.yahoo.vespa.hosted.controller.api.integration.aws.ApplicationRoles; @@ -28,7 +28,7 @@ public class DeploymentData { private final Version platform; private final Set<ContainerEndpoint> containerEndpoints; private final Optional<EndpointCertificateMetadata> endpointCertificateMetadata; - private final Optional<ContainerImage> dockerImageRepo; + private final Optional<DockerImage> dockerImageRepo; private final Optional<AthenzDomain> athenzDomain; private final Optional<ApplicationRoles> applicationRoles; private final Optional<Quota> quota; @@ -36,7 +36,7 @@ public class DeploymentData { public DeploymentData(ApplicationId instance, ZoneId zone, byte[] applicationPackage, Version platform, Set<ContainerEndpoint> containerEndpoints, Optional<EndpointCertificateMetadata> endpointCertificateMetadata, - Optional<ContainerImage> dockerImageRepo, + Optional<DockerImage> dockerImageRepo, Optional<AthenzDomain> athenzDomain, Optional<ApplicationRoles> applicationRoles, Optional<Quota> quota) { @@ -76,7 +76,7 @@ public class DeploymentData { return endpointCertificateMetadata; } - public Optional<ContainerImage> dockerImageRepo() { + public Optional<DockerImage> dockerImageRepo() { return dockerImageRepo; } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java index b0838f1c070..07e411cd5cd 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.configserver; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; @@ -31,8 +31,8 @@ public class Node { private final Version wantedVersion; private final Version currentOsVersion; private final Version wantedOsVersion; - private final ContainerImage currentContainerImage; - private final ContainerImage wantedContainerImage; + private final DockerImage currentDockerImage; + private final DockerImage wantedDockerImage; private final ServiceState serviceState; private final Optional<Instant> suspendedSince; private final Optional<Instant> currentFirmwareCheck; @@ -54,7 +54,7 @@ public class Node { Optional<Instant> currentFirmwareCheck, Optional<Instant> wantedFirmwareCheck, ServiceState serviceState, Optional<Instant> suspendedSince, long restartGeneration, long wantedRestartGeneration, long rebootGeneration, long wantedRebootGeneration, int cost, String flavor, String clusterId, ClusterType clusterType, boolean wantToRetire, boolean wantToDeprovision, - Optional<TenantName> reservedTo, ContainerImage wantedContainerImage, ContainerImage currentContainerImage) { + Optional<TenantName> reservedTo, DockerImage wantedDockerImage, DockerImage currentDockerImage) { this.hostname = hostname; this.parentHostname = parentHostname; this.state = state; @@ -80,8 +80,8 @@ public class Node { this.wantToRetire = wantToRetire; this.wantToDeprovision = wantToDeprovision; this.reservedTo = reservedTo; - this.wantedContainerImage = wantedContainerImage; - this.currentContainerImage = currentContainerImage; + this.wantedDockerImage = wantedDockerImage; + this.currentDockerImage = currentDockerImage; } public HostName hostname() { @@ -122,12 +122,12 @@ public class Node { return wantedOsVersion; } - public ContainerImage currentDockerImage() { - return currentContainerImage; + public DockerImage currentDockerImage() { + return currentDockerImage; } - public ContainerImage wantedDockerImage() { - return wantedContainerImage; + public DockerImage wantedDockerImage() { + return wantedDockerImage; } public Optional<Instant> currentFirmwareCheck() { @@ -241,8 +241,8 @@ public class Node { private Version wantedVersion; private Version currentOsVersion; private Version wantedOsVersion; - private ContainerImage currentContainerImage; - private ContainerImage wantedContainerImage; + private DockerImage currentDockerImage; + private DockerImage wantedDockerImage; private Optional<Instant> currentFirmwareCheck = Optional.empty(); private Optional<Instant> wantedFirmwareCheck = Optional.empty(); private ServiceState serviceState; @@ -272,8 +272,8 @@ public class Node { this.wantedVersion = node.wantedVersion; this.currentOsVersion = node.currentOsVersion; this.wantedOsVersion = node.wantedOsVersion; - this.currentContainerImage = node.currentContainerImage; - this.wantedContainerImage = node.wantedContainerImage; + this.currentDockerImage = node.currentDockerImage; + this.wantedDockerImage = node.wantedDockerImage; this.currentFirmwareCheck = node.currentFirmwareCheck; this.wantedFirmwareCheck = node.wantedFirmwareCheck; this.serviceState = node.serviceState; @@ -341,13 +341,13 @@ public class Node { return this; } - public Builder currentDockerImage(ContainerImage currentContainerImage) { - this.currentContainerImage = currentContainerImage; + public Builder currentDockerImage(DockerImage currentDockerImage) { + this.currentDockerImage = currentDockerImage; return this; } - public Builder wantedDockerImage(ContainerImage wantedContainerImage) { - this.wantedContainerImage = wantedContainerImage; + public Builder wantedDockerImage(DockerImage wantedDockerImage) { + this.wantedDockerImage = wantedDockerImage; return this; } @@ -431,7 +431,7 @@ public class Node { currentOsVersion, wantedOsVersion, currentFirmwareCheck, wantedFirmwareCheck, serviceState, suspendedSince, restartGeneration, wantedRestartGeneration, rebootGeneration, wantedRebootGeneration, cost, flavor, clusterId, clusterType, wantToRetire, wantToDeprovision, reservedTo, - wantedContainerImage, currentContainerImage); + wantedDockerImage, currentDockerImage); } } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java index 91485d000f2..aebfab7cbff 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.configserver; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; @@ -211,8 +211,8 @@ public interface NodeRepository { return s == null ? Version.emptyVersion : Version.fromString(s); } - private static ContainerImage dockerImageFrom(String s) { - return s == null ? ContainerImage.EMPTY : ContainerImage.fromString(s); + private static DockerImage dockerImageFrom(String s) { + return s == null ? DockerImage.EMPTY : DockerImage.fromString(s); } } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index 61208772930..7135cbe77c9 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -6,7 +6,7 @@ import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.application.api.ValidationId; import com.yahoo.config.application.api.ValidationOverrides; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.TenantName; @@ -513,13 +513,13 @@ public class ApplicationController { Optional<EndpointCertificateMetadata> endpointCertificateMetadata, Optional<ApplicationRoles> applicationRoles) { try { - Optional<ContainerImage> dockerImageRepo = Optional.ofNullable( + Optional<DockerImage> dockerImageRepo = Optional.ofNullable( dockerImageRepoFlag .with(FetchVector.Dimension.ZONE_ID, zone.value()) .with(FetchVector.Dimension.APPLICATION_ID, application.serializedForm()) .value()) .filter(s -> !s.isBlank()) - .map(ContainerImage::fromString); + .map(DockerImage::fromString); Optional<AthenzDomain> domain = controller.tenants().get(application.tenant()) .filter(tenant-> tenant instanceof AthenzTenant) diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java index 0bae2507950..1dd3b4a7a47 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java @@ -7,7 +7,7 @@ import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeResources; @@ -76,7 +76,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer private final Map<DeploymentId, ServiceConvergence> serviceStatus = new HashMap<>(); private final Set<ApplicationId> disallowConvergenceCheckApplications = new HashSet<>(); private final Version initialVersion = new Version(6, 1, 0); - private final ContainerImage initialContainerImage = ContainerImage.fromString("dockerImage:6.1.0"); + private final DockerImage initialDockerImage = DockerImage.fromString("dockerImage:6.1.0"); private final Set<DeploymentId> suspendedApplications = new HashSet<>(); private final Map<ZoneId, Set<LoadBalancer>> loadBalancers = new HashMap<>(); private final Set<Environment> deferLoadBalancerProvisioning = new HashSet<>(); @@ -122,8 +122,8 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer .parentHostname(parent.hostname()) .currentVersion(initialVersion) .wantedVersion(initialVersion) - .currentDockerImage(initialContainerImage) - .wantedDockerImage(initialContainerImage) + .currentDockerImage(initialDockerImage) + .wantedDockerImage(initialDockerImage) .currentOsVersion(Version.emptyVersion) .wantedOsVersion(Version.emptyVersion) .resources(new NodeResources(2, 8, 50, 1, slow, remote)) diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java index 2eed86a26de..1e861f230ce 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/Container.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import java.util.Objects; @@ -10,7 +10,7 @@ import java.util.Objects; */ public class Container { public final String hostname; - public final ContainerImage image; + public final DockerImage image; public final ContainerResources resources; public final ContainerName name; public final State state; @@ -18,7 +18,7 @@ public class Container { public Container( final String hostname, - final ContainerImage image, + final DockerImage image, final ContainerResources resources, final ContainerName containerName, final State state, diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java index 2ba82b83287..984e1261d63 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/ContainerEngine.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import java.net.InetAddress; import java.nio.file.Path; @@ -58,7 +58,7 @@ public interface ContainerEngine { void create(); } - CreateContainerCommand createContainerCommand(ContainerImage containerImage, ContainerName containerName); + CreateContainerCommand createContainerCommand(DockerImage dockerImage, ContainerName containerName); Optional<ContainerStats> getContainerStats(ContainerName containerName); @@ -76,14 +76,14 @@ public interface ContainerEngine { * Checks if the image is currently being pulled or is already pulled, if not, starts an async * pull of the image * - * @param image Container image to pull + * @param image Docker image to pull * @return true iff image being pulled, false otherwise */ - boolean pullImageAsyncIfNeeded(ContainerImage image); + boolean pullImageAsyncIfNeeded(DockerImage image); boolean noManagedContainersRunning(String manager); - boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete); + boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete); /** * @param containerName The name of the container diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java index 38c3074afe5..ed2c4501110 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java @@ -7,7 +7,7 @@ import com.github.dockerjava.api.model.Bind; import com.github.dockerjava.api.model.Capability; import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.Ulimit; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.exception.DockerException; import java.net.Inet6Address; @@ -29,7 +29,7 @@ import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.LABEL_NAME_MANAGEDBY; class CreateContainerCommandImpl implements ContainerEngine.CreateContainerCommand { private final DockerClient docker; - private final ContainerImage containerImage; + private final DockerImage dockerImage; private final ContainerName containerName; private final Map<String, String> labels = new HashMap<>(); private final List<String> environmentAssignments = new ArrayList<>(); @@ -48,9 +48,9 @@ class CreateContainerCommandImpl implements ContainerEngine.CreateContainerComma private Optional<String[]> entrypoint = Optional.empty(); private boolean privileged = false; - CreateContainerCommandImpl(DockerClient docker, ContainerImage containerImage, ContainerName containerName) { + CreateContainerCommandImpl(DockerClient docker, DockerImage dockerImage, ContainerName containerName) { this.docker = docker; - this.containerImage = containerImage; + this.dockerImage = dockerImage; this.containerName = containerName; } @@ -190,7 +190,7 @@ class CreateContainerCommandImpl implements ContainerEngine.CreateContainerComma .withCpuQuota(cr.cpuQuota() > 0 ? (long) cr.cpuQuota() : null)); final CreateContainerCmd containerCmd = docker - .createContainerCmd(containerImage.asString()) + .createContainerCmd(dockerImage.asString()) .withHostConfig(hostConfig) .withName(containerName.asString()) .withLabels(labels) @@ -255,7 +255,7 @@ class CreateContainerCommandImpl implements ContainerEngine.CreateContainerComma toOptionalOption("--ip6", ipv6Address), toOptionalOption("--entrypoint", entrypointExecuteable), toFlagOption("--privileged", privileged), - containerImage.asString(), + dockerImage.asString(), entrypointArgs) .filter(s -> !s.isEmpty()) .collect(Collectors.joining(" ")); diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java index d4b44b8dff6..e2116f7037e 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollector.java @@ -5,7 +5,7 @@ import com.github.dockerjava.api.model.Container; import com.github.dockerjava.api.model.Image; import com.google.common.base.Strings; import com.yahoo.collections.Pair; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import java.time.Clock; import java.time.Duration; @@ -72,7 +72,7 @@ class DockerImageGarbageCollector { * @param minImageAgeToDelete Minimum duration after which an image can be removed if it has not been used * @return true iff at least 1 image was deleted */ - boolean deleteUnusedDockerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) { + boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) { List<Image> images = docker.listAllImages(); List<Container> containers = docker.listAllContainers(); @@ -100,7 +100,7 @@ class DockerImageGarbageCollector { Set<String> imagesToKeep = Stream .concat( getRecentlyUsedImageIds(images, containers, minImageAgeToDelete).stream(), // 1 - containerImageToImageIds(excludes, images).stream()) // 2 + dockerImageToImageIds(excludes, images).stream()) // 2 .flatMap(imageId -> ancestorsByImageId.getOrDefault(imageId, Collections.emptySet()).stream()) // 3 .collect(Collectors.toSet()); @@ -128,7 +128,7 @@ class DockerImageGarbageCollector { // Deleting an image by image ID with multiple tags will fail -> delete by tags instead referencesOf(image).forEach(imageReference -> { logger.info("Deleting unused docker image " + imageReference); - docker.deleteImage(ContainerImage.fromString(imageReference)); + docker.deleteImage(DockerImage.fromString(imageReference)); }); lastTimeUsedByImageId.remove(image.getId()); }) @@ -152,18 +152,18 @@ class DockerImageGarbageCollector { } /** - * Attemps to make containerImages which may be image tags or image ids to image ids. This only works + * Attemps to make dockerImages which may be image tags or image ids to image ids. This only works * if the given tag is actually present locally. This is fine, because if it isn't - we can't delete * it, so no harm done. */ - private Set<String> containerImageToImageIds(List<ContainerImage> containerImages, List<Image> images) { + private Set<String> dockerImageToImageIds(List<DockerImage> dockerImages, List<Image> images) { Map<String, String> imageIdByImageTag = images.stream() .flatMap(image -> referencesOf(image).stream() .map(repoTag -> new Pair<>(repoTag, image.getId()))) .collect(Collectors.toMap(Pair::getFirst, Pair::getSecond)); - return containerImages.stream() - .map(ContainerImage::asString) + return dockerImages.stream() + .map(DockerImage::asString) .map(tag -> imageIdByImageTag.getOrDefault(tag, tag)) .collect(Collectors.toSet()); } diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java index 15bafa9b561..6125a0ec2d8 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/DockerImpl.java @@ -21,7 +21,7 @@ import com.github.dockerjava.core.command.ExecStartResultCallback; import com.github.dockerjava.core.command.PullImageResultCallback; import com.github.dockerjava.jaxrs.JerseyDockerCmdExecFactory; import com.google.inject.Inject; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.exception.ContainerNotFoundException; import com.yahoo.vespa.hosted.dockerapi.exception.DockerException; import com.yahoo.vespa.hosted.dockerapi.exception.DockerExecTimeoutException; @@ -51,7 +51,7 @@ public class DockerImpl implements ContainerEngine { private static final Duration WAIT_BEFORE_KILLING = Duration.ofSeconds(10); private final Object monitor = new Object(); - private final Set<ContainerImage> scheduledPulls = new HashSet<>(); + private final Set<DockerImage> scheduledPulls = new HashSet<>(); private final DockerClient dockerClient; private final DockerImageGarbageCollector dockerImageGC; @@ -70,7 +70,7 @@ public class DockerImpl implements ContainerEngine { } @Override - public boolean pullImageAsyncIfNeeded(ContainerImage image) { + public boolean pullImageAsyncIfNeeded(DockerImage image) { try { synchronized (monitor) { if (scheduledPulls.contains(image)) return true; @@ -89,7 +89,7 @@ public class DockerImpl implements ContainerEngine { } } - private void removeScheduledPoll(ContainerImage image) { + private void removeScheduledPoll(DockerImage image) { synchronized (monitor) { scheduledPulls.remove(image); } @@ -98,23 +98,23 @@ public class DockerImpl implements ContainerEngine { /** * Check if a given image is already in the local registry */ - boolean imageIsDownloaded(ContainerImage containerImage) { - return inspectImage(containerImage).isPresent(); + boolean imageIsDownloaded(DockerImage dockerImage) { + return inspectImage(dockerImage).isPresent(); } - private Optional<InspectImageResponse> inspectImage(ContainerImage containerImage) { + private Optional<InspectImageResponse> inspectImage(DockerImage dockerImage) { try { - return Optional.of(dockerClient.inspectImageCmd(containerImage.asString()).exec()); + return Optional.of(dockerClient.inspectImageCmd(dockerImage.asString()).exec()); } catch (NotFoundException e) { return Optional.empty(); } catch (RuntimeException e) { numberOfDockerApiFails.increment(); - throw new DockerException("Failed to inspect image '" + containerImage.asString() + "'", e); + throw new DockerException("Failed to inspect image '" + dockerImage.asString() + "'", e); } } @Override - public CreateContainerCommand createContainerCommand(ContainerImage image, ContainerName containerName) { + public CreateContainerCommand createContainerCommand(DockerImage image, ContainerName containerName) { return new CreateContainerCommandImpl(dockerClient, image, containerName); } @@ -265,7 +265,7 @@ public class DockerImpl implements ContainerEngine { return inspectContainerCmd(container) .map(response -> new Container( response.getConfig().getHostName(), - ContainerImage.fromString(response.getConfig().getImage()), + DockerImage.fromString(response.getConfig().getImage()), containerResourcesFromHostConfig(response.getHostConfig()), new ContainerName(decode(response.getName())), Container.State.valueOf(response.getState().getStatus().toUpperCase()), @@ -319,44 +319,44 @@ public class DockerImpl implements ContainerEngine { } } - void deleteImage(ContainerImage containerImage) { + void deleteImage(DockerImage dockerImage) { try { - dockerClient.removeImageCmd(containerImage.asString()).exec(); + dockerClient.removeImageCmd(dockerImage.asString()).exec(); } catch (NotFoundException ignored) { // Image was already deleted, ignore } catch (RuntimeException e) { numberOfDockerApiFails.increment(); - throw new DockerException("Failed to delete docker image " + containerImage.asString(), e); + throw new DockerException("Failed to delete docker image " + dockerImage.asString(), e); } } @Override - public boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) { + public boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) { return dockerImageGC.deleteUnusedDockerImages(excludes, minImageAgeToDelete); } private class ImagePullCallback extends PullImageResultCallback { - private final ContainerImage containerImage; + private final DockerImage dockerImage; - private ImagePullCallback(ContainerImage containerImage) { - this.containerImage = containerImage; + private ImagePullCallback(DockerImage dockerImage) { + this.dockerImage = dockerImage; } @Override public void onError(Throwable throwable) { - removeScheduledPoll(containerImage); - logger.log(Level.SEVERE, "Could not download image " + containerImage.asString(), throwable); + removeScheduledPoll(dockerImage); + logger.log(Level.SEVERE, "Could not download image " + dockerImage.asString(), throwable); } @Override public void onComplete() { - if (imageIsDownloaded(containerImage)) { - logger.log(Level.INFO, "Download completed: " + containerImage.asString()); - removeScheduledPoll(containerImage); + if (imageIsDownloaded(dockerImage)) { + logger.log(Level.INFO, "Download completed: " + dockerImage.asString()); + removeScheduledPoll(dockerImage); } else { numberOfDockerApiFails.increment(); - throw new DockerClientException("Could not download image: " + containerImage); + throw new DockerClientException("Could not download image: " + dockerImage); } } } diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java index ea92186e8bd..b4ba6dbb502 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import org.junit.Test; import java.net.InetAddress; @@ -14,13 +14,13 @@ public class CreateContainerCommandImplTest { @Test public void testToString() throws UnknownHostException { - ContainerImage containerImage = ContainerImage.fromString("docker.registry.domain.tld/my/image:1.2.3"); + DockerImage dockerImage = DockerImage.fromString("docker.registry.domain.tld/my/image:1.2.3"); ContainerResources containerResources = new ContainerResources(2.5, 100, 1024); String hostname = "docker-1.region.domain.tld"; ContainerName containerName = ContainerName.fromHostname(hostname); ContainerEngine.CreateContainerCommand createContainerCommand = new CreateContainerCommandImpl( - null, containerImage, containerName) + null, dockerImage, containerName) .withHostName(hostname) .withResources(containerResources) .withLabel("my-label", "test-label") diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/ContainerImageGarbageCollectionTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollectionTest.java index 92c0e52bd6f..40c4cb167a2 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/ContainerImageGarbageCollectionTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImageGarbageCollectionTest.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.dockerjava.api.model.Image; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.test.ManualClock; import org.junit.Test; @@ -28,7 +28,7 @@ import static org.mockito.Mockito.when; /** * @author freva */ -public class ContainerImageGarbageCollectionTest { +public class DockerImageGarbageCollectionTest { private final ImageGcTester gcTester = new ImageGcTester(); @@ -173,7 +173,7 @@ public class ContainerImageGarbageCollectionTest { private final DockerImpl docker = mock(DockerImpl.class); private final ManualClock clock = new ManualClock(); private final DockerImageGarbageCollector imageGC = new DockerImageGarbageCollector(docker, clock); - private final Map<ContainerImage, Integer> numDeletes = new HashMap<>(); + private final Map<DockerImage, Integer> numDeletes = new HashMap<>(); private boolean initialized = false; private ImageGcTester withExistingImages(ImageBuilder... images) { @@ -211,11 +211,11 @@ public class ContainerImageGarbageCollectionTest { clock.advance(Duration.ofMinutes(minutesAfter)); imageGC.deleteUnusedDockerImages( - except.stream().map(ContainerImage::fromString).collect(Collectors.toList()), + except.stream().map(DockerImage::fromString).collect(Collectors.toList()), Duration.ofHours(1).minusSeconds(1)); Arrays.stream(imageIds) - .map(ContainerImage::fromString) + .map(DockerImage::fromString) .forEach(image -> { int newValue = numDeletes.getOrDefault(image, 0) + 1; numDeletes.put(image, newValue); diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java index 5387bc390fe..1ca6cd5662e 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/DockerImplTest.java @@ -13,7 +13,7 @@ import com.github.dockerjava.api.command.InspectImageResponse; import com.github.dockerjava.api.command.PullImageCmd; import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.core.command.ExecStartResultCallback; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.metrics.Metrics; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -75,7 +75,7 @@ public class DockerImplTest { @Test @SuppressWarnings({"unchecked", "rawtypes"}) public void pullImageAsyncIfNeededSuccessfully() { - final ContainerImage image = ContainerImage.fromString("test:1.2.3"); + final DockerImage image = DockerImage.fromString("test:1.2.3"); InspectImageResponse inspectImageResponse = mock(InspectImageResponse.class); when(inspectImageResponse.getId()).thenReturn(image.asString()); @@ -104,7 +104,7 @@ public class DockerImplTest { @Test @SuppressWarnings({"unchecked", "rawtypes"}) public void pullImageAsyncIfNeededWithError() { - final ContainerImage image = ContainerImage.fromString("test:1.2.3"); + final DockerImage image = DockerImage.fromString("test:1.2.3"); InspectImageCmd imageInspectCmd = mock(InspectImageCmd.class); when(imageInspectCmd.exec()).thenThrow(new NotFoundException("Image not found")); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java index 168365a6dfd..94431f8ac57 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.fasterxml.jackson.databind.JsonNode; import com.yahoo.component.Version; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import java.time.Instant; import java.util.Map; @@ -24,7 +24,7 @@ public class NodeAttributes { private Optional<Long> restartGeneration = Optional.empty(); private Optional<Long> rebootGeneration = Optional.empty(); - private Optional<ContainerImage> dockerImage = Optional.empty(); + private Optional<DockerImage> dockerImage = Optional.empty(); private Optional<Version> vespaVersion = Optional.empty(); private Optional<Version> currentOsVersion = Optional.empty(); private Optional<Instant> currentFirmwareCheck = Optional.empty(); @@ -47,8 +47,8 @@ public class NodeAttributes { return this; } - public NodeAttributes withDockerImage(ContainerImage containerImage) { - this.dockerImage = Optional.of(containerImage); + public NodeAttributes withDockerImage(DockerImage dockerImage) { + this.dockerImage = Optional.of(dockerImage); return this; } @@ -90,7 +90,7 @@ public class NodeAttributes { return rebootGeneration; } - public Optional<ContainerImage> getDockerImage() { + public Optional<DockerImage> getDockerImage() { return dockerImage; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java index ce058a8c744..f7f231d5e0c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.fasterxml.jackson.databind.JsonNode; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.node.admin.task.util.file.DiskSize; @@ -28,8 +28,8 @@ public class NodeSpec { private final NodeType type; private final String flavor; - private final Optional<ContainerImage> wantedDockerImage; - private final Optional<ContainerImage> currentDockerImage; + private final Optional<DockerImage> wantedDockerImage; + private final Optional<DockerImage> currentDockerImage; private final Optional<Version> wantedVespaVersion; private final Optional<Version> currentVespaVersion; @@ -62,8 +62,8 @@ public class NodeSpec { public NodeSpec( String hostname, - Optional<ContainerImage> wantedDockerImage, - Optional<ContainerImage> currentDockerImage, + Optional<DockerImage> wantedDockerImage, + Optional<DockerImage> currentDockerImage, NodeState state, NodeType type, String flavor, @@ -138,11 +138,11 @@ public class NodeSpec { return flavor; } - public Optional<ContainerImage> wantedDockerImage() { + public Optional<DockerImage> wantedDockerImage() { return wantedDockerImage; } - public Optional<ContainerImage> currentDockerImage() { + public Optional<DockerImage> currentDockerImage() { return currentDockerImage; } @@ -341,8 +341,8 @@ public class NodeSpec { private NodeState state; private NodeType type; private String flavor; - private Optional<ContainerImage> wantedDockerImage = Optional.empty(); - private Optional<ContainerImage> currentDockerImage = Optional.empty(); + private Optional<DockerImage> wantedDockerImage = Optional.empty(); + private Optional<DockerImage> currentDockerImage = Optional.empty(); private Optional<Version> wantedVespaVersion = Optional.empty(); private Optional<Version> currentVespaVersion = Optional.empty(); private Optional<Version> wantedOsVersion = Optional.empty(); @@ -397,13 +397,13 @@ public class NodeSpec { return this; } - public Builder wantedDockerImage(ContainerImage wantedContainerImage) { - this.wantedDockerImage = Optional.of(wantedContainerImage); + public Builder wantedDockerImage(DockerImage wantedDockerImage) { + this.wantedDockerImage = Optional.of(wantedDockerImage); return this; } - public Builder currentDockerImage(ContainerImage currentContainerImage) { - this.currentDockerImage = Optional.of(currentContainerImage); + public Builder currentDockerImage(DockerImage currentDockerImage) { + this.currentDockerImage = Optional.of(currentDockerImage); return this; } @@ -556,11 +556,11 @@ public class NodeSpec { return hostname; } - public Optional<ContainerImage> wantedDockerImage() { + public Optional<DockerImage> wantedDockerImage() { return wantedDockerImage; } - public Optional<ContainerImage> currentDockerImage() { + public Optional<DockerImage> currentDockerImage() { return currentDockerImage; } @@ -673,7 +673,7 @@ public class NodeSpec { builder .owner(ApplicationId.defaultId()) .membership(new NodeMembership("container", "my-id", "group", 0, false)) .wantedVespaVersion(Version.fromString("7.1.1")) - .wantedDockerImage(ContainerImage.fromString("docker.domain.tld/repo/image:7.1.1")) + .wantedDockerImage(DockerImage.fromString("docker.domain.tld/repo/image:7.1.1")) .currentRestartGeneration(0) .wantedRestartGeneration(0); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 08f16ac18a9..2e47410f1b5 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.google.common.base.Strings; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.host.FlavorOverrides; @@ -152,8 +152,8 @@ public class RealNodeRepository implements NodeRepository { NodeReports reports = NodeReports.fromMap(Optional.ofNullable(node.reports).orElseGet(Map::of)); return new NodeSpec( node.hostname, - Optional.ofNullable(node.wantedDockerImage).map(ContainerImage::fromString), - Optional.ofNullable(node.currentDockerImage).map(ContainerImage::fromString), + Optional.ofNullable(node.wantedDockerImage).map(DockerImage::fromString), + Optional.ofNullable(node.currentDockerImage).map(DockerImage::fromString), nodeState, nodeType, node.flavor, @@ -249,7 +249,7 @@ public class RealNodeRepository implements NodeRepository { public static NodeRepositoryNode nodeRepositoryNodeFromNodeAttributes(NodeAttributes nodeAttributes) { NodeRepositoryNode node = new NodeRepositoryNode(); - node.currentDockerImage = nodeAttributes.getDockerImage().map(ContainerImage::asString).orElse(null); + node.currentDockerImage = nodeAttributes.getDockerImage().map(DockerImage::asString).orElse(null); node.currentRestartGeneration = nodeAttributes.getRestartGeneration().orElse(null); node.currentRebootGeneration = nodeAttributes.getRebootGeneration().orElse(null); node.vespaVersion = nodeAttributes.getVespaVersion().map(Version::toFullString).orElse(null); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java index c7033000967..9e6b6200b8c 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperations.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.docker; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerResources; import com.yahoo.vespa.hosted.dockerapi.ContainerStats; @@ -26,7 +26,7 @@ public interface ContainerOperations { Optional<Container> getContainer(NodeAgentContext context); - boolean pullImageAsyncIfNeeded(ContainerImage containerImage); + boolean pullImageAsyncIfNeeded(DockerImage dockerImage); ProcessResult executeCommandInContainerAsRoot(NodeAgentContext context, String... command); @@ -56,5 +56,5 @@ public interface ContainerOperations { boolean noManagedContainersRunning(); /** Deletes the local images that are currently not in use by any container and not recently used. */ - boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete); + boolean deleteUnusedContainerImages(List<DockerImage> excludes, Duration minImageAgeToDelete); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java index 58f4026e24b..9d53730cfc9 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImpl.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.docker; import com.google.common.net.InetAddresses; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.SystemName; @@ -209,8 +209,8 @@ public class ContainerOperationsImpl implements ContainerOperations { } @Override - public boolean pullImageAsyncIfNeeded(ContainerImage containerImage) { - return containerEngine.pullImageAsyncIfNeeded(containerImage); + public boolean pullImageAsyncIfNeeded(DockerImage dockerImage) { + return containerEngine.pullImageAsyncIfNeeded(dockerImage); } @Override @@ -324,8 +324,8 @@ public class ContainerOperationsImpl implements ContainerOperations { } @Override - public boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) { - return containerEngine.deleteUnusedContainerImages(excludes, minImageAgeToDelete); + public boolean deleteUnusedContainerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) { + return containerEngine.deleteUnusedDockerImages(excludes, minImageAgeToDelete); } /** Returns whether given nodeType is a Docker host for infrastructure nodes */ diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java index 836c8e5fc36..a5efec1dcb7 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.maintenance; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerName; @@ -208,7 +208,7 @@ public class StorageMaintainer { private String getDockerImage(NodeAgentContext context, Optional<Container> container) { return container.map(c -> c.image.asString()) .orElse(context.node().currentDockerImage() - .map(ContainerImage::asString) + .map(DockerImage::asString) .orElse("<none>") ); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java index 61d80339dd6..6b7b72f2746 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.nodeagent; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.zone.ZoneApi; @@ -185,10 +185,10 @@ public class NodeAgentImpl implements NodeAgent { newNodeAttributes.withRebootGeneration(currentRebootGeneration); } - Optional<ContainerImage> actualDockerImage = context.node().wantedDockerImage().filter(n -> containerState == UNKNOWN); + Optional<DockerImage> actualDockerImage = context.node().wantedDockerImage().filter(n -> containerState == UNKNOWN); if (!Objects.equals(context.node().currentDockerImage(), actualDockerImage)) { - ContainerImage currentImage = context.node().currentDockerImage().orElse(ContainerImage.EMPTY); - ContainerImage newImage = actualDockerImage.orElse(ContainerImage.EMPTY); + DockerImage currentImage = context.node().currentDockerImage().orElse(DockerImage.EMPTY); + DockerImage newImage = actualDockerImage.orElse(DockerImage.EMPTY); currentNodeAttributes.withDockerImage(currentImage); currentNodeAttributes.withVespaVersion(currentImage.tagAsVersion()); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java index e39161f828a..2e40596bcf0 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.yahoo.application.Networking; import com.yahoo.application.container.JDisc; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.host.FlavorOverrides; @@ -106,7 +106,7 @@ public class RealNodeRepositoryTest { assertThat(containersToRun.size(), is(1)); NodeSpec node = containersToRun.get(0); assertThat(node.hostname(), is("host4.yahoo.com")); - assertThat(node.wantedDockerImage().get(), is(ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.42.0"))); + assertThat(node.wantedDockerImage().get(), is(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.42.0"))); assertThat(node.state(), is(NodeState.active)); assertThat(node.wantedRestartGeneration().get(), is(0L)); assertThat(node.currentRestartGeneration().get(), is(0L)); @@ -137,7 +137,7 @@ public class RealNodeRepositoryTest { hostname, new NodeAttributes() .withRestartGeneration(1) - .withDockerImage(ContainerImage.fromString("image-1:6.2.3"))); + .withDockerImage(DockerImage.fromString("image-1:6.2.3"))); } @Test diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java index 4aa59c63662..d01b42ba48c 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/ContainerOperationsImplTest.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.docker; import com.google.common.net.InetAddresses; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerEngine; import com.yahoo.vespa.hosted.dockerapi.ContainerName; @@ -83,7 +83,7 @@ public class ContainerOperationsImplTest { } private Container makeContainer(String name, Container.State state, int pid) { - final Container container = new Container(name + ".fqdn", ContainerImage.fromString("mock"), null, + final Container container = new Container(name + ".fqdn", DockerImage.fromString("mock"), null, new ContainerName(name), state, pid); when(containerEngine.getContainer(eq(container.name))).thenReturn(Optional.of(container)); return container; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java index 50435ccf46d..5688fcace6f 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import org.junit.Test; @@ -19,23 +19,23 @@ public class DockerFailTest { @Test public void dockerFailTest() { try (DockerTester tester = new DockerTester()) { - final ContainerImage containerImage = ContainerImage.fromString("containerImage"); + final DockerImage dockerImage = DockerImage.fromString("dockerImage"); final ContainerName containerName = new ContainerName("host1"); final String hostname = "host1.test.yahoo.com"; tester.addChildNodeRepositoryNode(NodeSpec.Builder .testSpec(hostname) - .wantedDockerImage(containerImage) - .currentDockerImage(containerImage) + .wantedDockerImage(dockerImage) + .currentDockerImage(dockerImage) .build()); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName)); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(containerName)); tester.inOrder(tester.containerEngine).executeInContainerAsUser( eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume")); tester.containerEngine.deleteContainer(new ContainerName("host1")); tester.inOrder(tester.containerEngine).deleteContainer(eq(containerName)); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName)); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(containerName)); tester.inOrder(tester.containerEngine).executeInContainerAsUser( eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume")); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java index 000d0e69550..310d950c5c3 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerEngine; import com.yahoo.vespa.hosted.dockerapi.ContainerName; @@ -28,8 +28,8 @@ public class DockerMock implements ContainerEngine { private static final Object monitor = new Object(); @Override - public CreateContainerCommand createContainerCommand(ContainerImage containerImage, ContainerName containerName) { - return new StartContainerCommandMock(containerImage, containerName); + public CreateContainerCommand createContainerCommand(DockerImage dockerImage, ContainerName containerName) { + return new StartContainerCommandMock(dockerImage, containerName); } @Override @@ -75,14 +75,14 @@ public class DockerMock implements ContainerEngine { } @Override - public boolean pullImageAsyncIfNeeded(ContainerImage image) { + public boolean pullImageAsyncIfNeeded(DockerImage image) { synchronized (monitor) { return false; } } @Override - public boolean deleteUnusedContainerImages(List<ContainerImage> excludes, Duration minImageAgeToDelete) { + public boolean deleteUnusedDockerImages(List<DockerImage> excludes, Duration minImageAgeToDelete) { return false; } @@ -98,13 +98,13 @@ public class DockerMock implements ContainerEngine { public class StartContainerCommandMock implements CreateContainerCommand { - private final ContainerImage containerImage; + private final DockerImage dockerImage; private final ContainerName containerName; private String hostName; private ContainerResources containerResources; - public StartContainerCommandMock(ContainerImage containerImage, ContainerName containerName) { - this.containerImage = containerImage; + public StartContainerCommandMock(DockerImage dockerImage, ContainerName containerName) { + this.dockerImage = dockerImage; this.containerName = containerName; } @@ -194,7 +194,7 @@ public class DockerMock implements ContainerEngine { public void create() { synchronized (monitor) { containersByContainerName.put( - containerName, new Container(hostName, containerImage, containerResources, containerName, Container.State.RUNNING, 2)); + containerName, new Container(hostName, dockerImage, containerResources, containerName, Container.State.RUNNING, 2)); } } } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java index 1c2bd86a00e..6f85703a4d5 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; @@ -20,9 +20,9 @@ public class MultiDockerTest { @Test public void test() { try (DockerTester tester = new DockerTester()) { - addAndWaitForNode(tester, "host1.test.yahoo.com", ContainerImage.fromString("image1")); + addAndWaitForNode(tester, "host1.test.yahoo.com", DockerImage.fromString("image1")); NodeSpec nodeSpec2 = addAndWaitForNode( - tester, "host2.test.yahoo.com", ContainerImage.fromString("image2")); + tester, "host2.test.yahoo.com", DockerImage.fromString("image2")); tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(nodeSpec2.hostname(), NodeState.dirty).build()); @@ -31,20 +31,20 @@ public class MultiDockerTest { argThat(context -> context.containerName().equals(new ContainerName("host2")))); tester.inOrder(tester.nodeRepository).setNodeState(eq(nodeSpec2.hostname()), eq(NodeState.ready)); - addAndWaitForNode(tester, "host3.test.yahoo.com", ContainerImage.fromString("image1")); + addAndWaitForNode(tester, "host3.test.yahoo.com", DockerImage.fromString("image1")); } } - private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, ContainerImage containerImage) { - NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(containerImage).build(); + private NodeSpec addAndWaitForNode(DockerTester tester, String hostName, DockerImage dockerImage) { + NodeSpec nodeSpec = NodeSpec.Builder.testSpec(hostName).wantedDockerImage(dockerImage).build(); tester.addChildNodeRepositoryNode(nodeSpec); ContainerName containerName = ContainerName.fromHostname(hostName); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(containerName)); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(containerName)); tester.inOrder(tester.containerEngine).executeInContainerAsUser( eq(containerName), eq("root"), any(), eq(DockerTester.NODE_PROGRAM), eq("resume")); tester.inOrder(tester.nodeRepository).updateNodeAttributes(eq(hostName), - eq(new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion()))); + eq(new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion()))); return nodeSpec; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java index 4fb1c578fac..6c69453ac71 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater; @@ -23,14 +23,14 @@ import static org.mockito.ArgumentMatchers.eq; public class RebootTest { private final String hostname = "host1.test.yahoo.com"; - private final ContainerImage containerImage = ContainerImage.fromString("containerImage"); + private final DockerImage dockerImage = DockerImage.fromString("dockerImage"); @Test public void test() { try (DockerTester tester = new DockerTester()) { - tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(containerImage).build()); + tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build()); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(new ContainerName("host1"))); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1"))); try { tester.setWantedState(NodeAdminStateUpdater.State.SUSPENDED); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java index caf7945d05b..6f887fb1179 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.integrationTests; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; @@ -22,13 +22,13 @@ public class RestartTest { public void test() { try (DockerTester tester = new DockerTester()) { String hostname = "host1.test.yahoo.com"; - ContainerImage containerImage = ContainerImage.fromString("containerImage:1.2.3"); + DockerImage dockerImage = DockerImage.fromString("dockerImage:1.2.3"); - tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(containerImage).build()); + tester.addChildNodeRepositoryNode(NodeSpec.Builder.testSpec(hostname).wantedDockerImage(dockerImage).build()); - tester.inOrder(tester.containerEngine).createContainerCommand(eq(containerImage), eq(new ContainerName("host1"))); + tester.inOrder(tester.containerEngine).createContainerCommand(eq(dockerImage), eq(new ContainerName("host1"))); tester.inOrder(tester.nodeRepository).updateNodeAttributes( - eq(hostname), eq(new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion()))); + eq(hostname), eq(new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion()))); // Increment wantedRestartGeneration to 2 in node-repo tester.addChildNodeRepositoryNode(new NodeSpec.Builder(tester.nodeRepository.getNode(hostname)) diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index 43bb73ae8d0..fdd950f7428 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.nodeagent; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.test.ManualClock; @@ -55,7 +55,7 @@ public class NodeAgentImplTest { private static final String hostName = "host1.test.yahoo.com"; private final NodeAgentContextSupplier contextSupplier = mock(NodeAgentContextSupplier.class); - private final ContainerImage containerImage = ContainerImage.fromString("containerImage"); + private final DockerImage dockerImage = DockerImage.fromString("dockerImage"); private final ContainerOperations containerOperations = mock(ContainerOperations.class); private final NodeRepository nodeRepository = mock(NodeRepository.class); private final Orchestrator orchestrator = mock(Orchestrator.class); @@ -70,13 +70,13 @@ public class NodeAgentImplTest { @Test public void upToDateContainerIsUntouched() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .allowedToBeDown(false) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); nodeAgent.doConverge(context); @@ -95,12 +95,12 @@ public class NodeAgentImplTest { @Test public void verifyRemoveOldFilesIfDiskFull() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); nodeAgent.doConverge(context); @@ -112,12 +112,12 @@ public class NodeAgentImplTest { public void startsAfterStoppingServices() { final InOrder inOrder = inOrder(containerOperations); final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); nodeAgent.doConverge(context); @@ -145,7 +145,7 @@ public class NodeAgentImplTest { @Test public void absentContainerCausesStart() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .build(); @@ -153,7 +153,7 @@ public class NodeAgentImplTest { NodeAgentImpl nodeAgent = makeNodeAgent(null, false); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); nodeAgent.doConverge(context); @@ -162,27 +162,27 @@ public class NodeAgentImplTest { verify(orchestrator, never()).suspend(any(String.class)); final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository, aclMaintainer, healthChecker); - inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(containerImage)); + inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage)); inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any()); inOrder.verify(containerOperations, times(1)).startContainer(eq(context)); inOrder.verify(aclMaintainer, times(1)).converge(eq(context)); inOrder.verify(containerOperations, times(1)).resumeNode(eq(context)); inOrder.verify(healthChecker, times(1)).verifyHealth(eq(context)); inOrder.verify(nodeRepository).updateNodeAttributes( - hostName, new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion())); + hostName, new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion())); inOrder.verify(orchestrator, never()).resume(hostName); } @Test public void containerIsNotStoppedIfNewImageMustBePulled() { - final ContainerImage newContainerImage = ContainerImage.fromString("new-image"); + final DockerImage newDockerImage = DockerImage.fromString("new-image"); final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(newContainerImage).currentDockerImage(containerImage) + .wantedDockerImage(newDockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); @@ -194,18 +194,18 @@ public class NodeAgentImplTest { verify(containerOperations, never()).removeContainer(eq(context), any()); final InOrder inOrder = inOrder(containerOperations); - inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(newContainerImage)); + inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(newDockerImage)); } @Test public void containerIsUpdatedIfCpuChanged() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .allowedToBeDown(false); NodeAgentContext firstContext = createContext(specBuilder.build()); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); @@ -221,7 +221,7 @@ public class NodeAgentImplTest { NodeAgentContext thirdContext = new NodeAgentContextImpl.Builder(specBuilder.vcpu(5).build()).cpuSpeedUp(1.25).build(); nodeAgent.doConverge(thirdContext); ContainerResources resourcesAfterThird = ContainerResources.from(0, 4, 16); - mockGetContainer(containerImage, resourcesAfterThird, true); + mockGetContainer(dockerImage, resourcesAfterThird, true); inOrder.verify(orchestrator).suspend(any(String.class)); inOrder.verify(containerOperations).updateContainer(eq(thirdContext), eq(resourcesAfterThird)); @@ -247,12 +247,12 @@ public class NodeAgentImplTest { @Test public void containerIsRecreatedIfMemoryChanged() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRestartGeneration(2).currentRestartGeneration(1); NodeAgentContext firstContext = createContext(specBuilder.build()); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(containerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true); @@ -260,7 +260,7 @@ public class NodeAgentImplTest { NodeAgentContext secondContext = createContext(specBuilder.memoryGb(20).build()); nodeAgent.doConverge(secondContext); ContainerResources resourcesAfterThird = ContainerResources.from(0, 2, 20); - mockGetContainer(containerImage, resourcesAfterThird, true); + mockGetContainer(dockerImage, resourcesAfterThird, true); InOrder inOrder = inOrder(orchestrator, containerOperations, nodeRepository); inOrder.verify(orchestrator).resume(any(String.class)); @@ -278,13 +278,13 @@ public class NodeAgentImplTest { @Test public void noRestartIfOrchestratorSuspendFails() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRestartGeneration(2).currentRestartGeneration(1) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); doThrow(new OrchestratorException("Denied")).when(orchestrator).suspend(eq(hostName)); try { @@ -305,16 +305,16 @@ public class NodeAgentImplTest { public void recreatesContainerIfRebootWanted() { final long wantedRebootGeneration = 2; final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRebootGeneration(wantedRebootGeneration).currentRebootGeneration(1) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); doThrow(new ConvergenceException("Connection refused")).doNothing() .when(healthChecker).verifyHealth(eq(context)); @@ -343,12 +343,12 @@ public class NodeAgentImplTest { @Test public void failedNodeRunningContainerShouldStillBeRunning() { final NodeSpec node = nodeBuilder(NodeState.failed) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); @@ -384,12 +384,12 @@ public class NodeAgentImplTest { @Test public void inactiveNodeRunningContainerShouldStillBeRunning() { final NodeSpec node = nodeBuilder(NodeState.inactive) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); @@ -405,7 +405,7 @@ public class NodeAgentImplTest { @Test public void reservedNodeDoesNotUpdateNodeRepoWithVersion() { final NodeSpec node = nodeBuilder(NodeState.reserved) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .build(); @@ -421,13 +421,13 @@ public class NodeAgentImplTest { private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState, Optional<Long> wantedRestartGeneration) { NodeSpec.Builder builder = nodeBuilder(nodeState) - .wantedDockerImage(containerImage).currentDockerImage(containerImage); + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage); wantedRestartGeneration.ifPresent(restartGeneration -> builder .wantedRestartGeneration(restartGeneration).currentRestartGeneration(restartGeneration)); NodeSpec node = builder.build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); @@ -448,7 +448,7 @@ public class NodeAgentImplTest { verify(orchestrator, never()).suspend(any(String.class)); // current Docker image and vespa version should be cleared verify(nodeRepository, times(1)).updateNodeAttributes( - eq(hostName), eq(new NodeAttributes().withDockerImage(ContainerImage.EMPTY).withVespaVersion(Version.emptyVersion))); + eq(hostName), eq(new NodeAttributes().withDockerImage(DockerImage.EMPTY).withVespaVersion(Version.emptyVersion))); } @Test @@ -464,7 +464,7 @@ public class NodeAgentImplTest { @Test public void provisionedNodeIsMarkedAsDirty() { final NodeSpec node = nodeBuilder(NodeState.provisioned) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .build(); NodeAgentContext context = createContext(node); @@ -478,12 +478,12 @@ public class NodeAgentImplTest { @Test public void testRestartDeadContainerAfterNodeAdminRestart() { final NodeSpec node = nodeBuilder(NodeState.active) - .currentDockerImage(containerImage).wantedDockerImage(containerImage) + .currentDockerImage(dockerImage).wantedDockerImage(dockerImage) .currentVespaVersion(vespaVersion) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, false); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, false); when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); @@ -497,14 +497,14 @@ public class NodeAgentImplTest { @Test public void resumeProgramRunsUntilSuccess() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .currentVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1) .allowedToBeDown(true) .build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); @@ -533,7 +533,7 @@ public class NodeAgentImplTest { @Test public void start_container_subtask_failure_leads_to_container_restart() { final NodeSpec node = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1) .build(); @@ -541,7 +541,7 @@ public class NodeAgentImplTest { NodeAgentContext context = createContext(node); NodeAgentImpl nodeAgent = spy(makeNodeAgent(null, false)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); doThrow(new DockerException("Failed to set up network")).doNothing().when(containerOperations).startContainer(eq(context)); try { @@ -556,7 +556,7 @@ public class NodeAgentImplTest { // The docker container was actually started and is running, but subsequent exec calls to set up // networking failed - mockGetContainer(containerImage, true); + mockGetContainer(dockerImage, true); nodeAgent.doConverge(context); verify(containerOperations, times(1)).removeContainer(eq(context), any()); @@ -569,7 +569,7 @@ public class NodeAgentImplTest { public void testRunningConfigServer() { final NodeSpec node = nodeBuilder(NodeState.active) .type(NodeType.config) - .wantedDockerImage(containerImage) + .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) .allowedToBeDown(true) .build(); @@ -578,7 +578,7 @@ public class NodeAgentImplTest { NodeAgentImpl nodeAgent = makeNodeAgent(null, false); when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node)); - when(containerOperations.pullImageAsyncIfNeeded(eq(containerImage))).thenReturn(false); + when(containerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false); nodeAgent.doConverge(context); @@ -586,13 +586,13 @@ public class NodeAgentImplTest { verify(orchestrator, never()).suspend(any(String.class)); final InOrder inOrder = inOrder(containerOperations, orchestrator, nodeRepository, aclMaintainer); - inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(containerImage)); + inOrder.verify(containerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage)); inOrder.verify(containerOperations, times(1)).createContainer(eq(context), any(), any()); inOrder.verify(containerOperations, times(1)).startContainer(eq(context)); inOrder.verify(aclMaintainer, times(1)).converge(eq(context)); inOrder.verify(containerOperations, times(1)).resumeNode(eq(context)); inOrder.verify(nodeRepository).updateNodeAttributes( - hostName, new NodeAttributes().withDockerImage(containerImage).withVespaVersion(containerImage.tagAsVersion())); + hostName, new NodeAttributes().withDockerImage(dockerImage).withVespaVersion(dockerImage.tagAsVersion())); inOrder.verify(orchestrator).resume(hostName); } @@ -610,7 +610,7 @@ public class NodeAgentImplTest { @Test public void initial_cpu_cap_test() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion); NodeAgentContext context = createContext(specBuilder.build()); @@ -662,13 +662,13 @@ public class NodeAgentImplTest { @Test public void resumes_normally_if_container_is_already_capped_on_start() { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1); NodeAgentContext context = createContext(specBuilder.build()); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true, Duration.ofSeconds(30)); - mockGetContainer(containerImage, ContainerResources.from(0, 2, 16), true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true, Duration.ofSeconds(30)); + mockGetContainer(dockerImage, ContainerResources.from(0, 2, 16), true); InOrder inOrder = inOrder(orchestrator, containerOperations); @@ -687,14 +687,14 @@ public class NodeAgentImplTest { .hostname(hostName) .type(NodeType.tenant) .flavor("docker") - .wantedDockerImage(containerImage).currentDockerImage(containerImage) + .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .state(nodeState); owner.ifPresent(nodeBuilder::owner); NodeSpec node = nodeBuilder.build(); NodeAgentContext context = createContext(node); - NodeAgentImpl nodeAgent = makeNodeAgent(containerImage, true); + NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node)); @@ -711,12 +711,12 @@ public class NodeAgentImplTest { } } - private NodeAgentImpl makeNodeAgent(ContainerImage containerImage, boolean isRunning) { - return makeNodeAgent(containerImage, isRunning, Duration.ofSeconds(-1)); + private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning) { + return makeNodeAgent(dockerImage, isRunning, Duration.ofSeconds(-1)); } - private NodeAgentImpl makeNodeAgent(ContainerImage containerImage, boolean isRunning, Duration warmUpDuration) { - mockGetContainer(containerImage, isRunning); + private NodeAgentImpl makeNodeAgent(DockerImage dockerImage, boolean isRunning, Duration warmUpDuration) { + mockGetContainer(dockerImage, isRunning); doAnswer(invoc -> { NodeAgentContext context = invoc.getArgument(0, NodeAgentContext.class); ContainerResources resources = invoc.getArgument(2, ContainerResources.class); @@ -736,19 +736,19 @@ public class NodeAgentImplTest { Optional.of(healthChecker), clock, warmUpDuration); } - private void mockGetContainer(ContainerImage containerImage, boolean isRunning) { - mockGetContainer(containerImage, ContainerResources.from(0, resources.vcpu(), resources.memoryGb()), isRunning); + private void mockGetContainer(DockerImage dockerImage, boolean isRunning) { + mockGetContainer(dockerImage, ContainerResources.from(0, resources.vcpu(), resources.memoryGb()), isRunning); } - private void mockGetContainer(ContainerImage containerImage, ContainerResources containerResources, boolean isRunning) { + private void mockGetContainer(DockerImage dockerImage, ContainerResources containerResources, boolean isRunning) { doAnswer(invoc -> { NodeAgentContext context = invoc.getArgument(0); if (!hostName.equals(context.hostname().value())) throw new IllegalArgumentException(); - return containerImage != null ? + return dockerImage != null ? Optional.of(new Container( hostName, - containerImage, + dockerImage, containerResources, ContainerName.fromHostname(hostName), isRunning ? Container.State.RUNNING : Container.State.EXITED, diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java index 0f721a87f11..983ba5165e3 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java @@ -7,7 +7,7 @@ import com.yahoo.component.AbstractComponent; import com.yahoo.component.Version; import com.yahoo.concurrent.maintenance.JobControl; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeType; @@ -131,7 +131,7 @@ public class NodeRepository extends AbstractComponent { Clock.systemUTC(), zone, new DnsNameResolver(), - ContainerImage.fromString(config.dockerImage()), + DockerImage.fromString(config.dockerImage()), flagSource, config.useCuratorClientCache(), provisionServiceProvider.getHostProvisioner().isPresent(), @@ -148,7 +148,7 @@ public class NodeRepository extends AbstractComponent { Clock clock, Zone zone, NameResolver nameResolver, - ContainerImage containerImage, + DockerImage dockerImage, FlagSource flagSource, boolean useCuratorClientCache, boolean canProvisionHosts, @@ -164,7 +164,7 @@ public class NodeRepository extends AbstractComponent { this.osVersions = new OsVersions(this); this.infrastructureVersions = new InfrastructureVersions(db); this.firmwareChecks = new FirmwareChecks(db, clock); - this.dockerImages = new DockerImages(db, containerImage); + this.dockerImages = new DockerImages(db, dockerImage); this.jobControl = new JobControl(new JobControlFlags(db, flagSource)); this.applications = new Applications(db); this.canProvisionHosts = canProvisionHosts; @@ -202,7 +202,7 @@ public class NodeRepository extends AbstractComponent { public CuratorDatabaseClient database() { return db; } /** Returns the Docker image to use for given node */ - public ContainerImage dockerImage(Node node) { return dockerImages.dockerImageFor(node.type()); } + public DockerImage dockerImage(Node node) { return dockerImages.dockerImageFor(node.type()); } /** @return The name resolver used to resolve hostname and ip addresses */ public NameResolver nameResolver() { return nameResolver; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java index 7630fe7dce3..3e5ef81e614 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.hosted.provision.node; import com.yahoo.component.Version; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import java.time.Instant; import java.util.Objects; @@ -17,7 +17,7 @@ public class Status { private final Generation reboot; private final Optional<Version> vespaVersion; - private final Optional<ContainerImage> dockerImage; + private final Optional<DockerImage> dockerImage; private final int failCount; private final boolean wantToRetire; private final boolean wantToDeprovision; @@ -26,7 +26,7 @@ public class Status { public Status(Generation generation, Optional<Version> vespaVersion, - Optional<ContainerImage> dockerImage, + Optional<DockerImage> dockerImage, int failCount, boolean wantToRetire, boolean wantToDeprovision, @@ -34,7 +34,7 @@ public class Status { Optional<Instant> firmwareVerifiedAt) { this.reboot = Objects.requireNonNull(generation, "Generation must be non-null"); this.vespaVersion = Objects.requireNonNull(vespaVersion, "Vespa version must be non-null").filter(v -> !Version.emptyVersion.equals(v)); - this.dockerImage = Objects.requireNonNull(dockerImage, "Docker image must be non-null").filter(d -> !ContainerImage.EMPTY.equals(d)); + this.dockerImage = Objects.requireNonNull(dockerImage, "Docker image must be non-null").filter(d -> !DockerImage.EMPTY.equals(d)); this.failCount = failCount; if (wantToDeprovision && !wantToRetire) { throw new IllegalArgumentException("Node cannot be marked wantToDeprovision unless it's also marked wantToRetire"); @@ -58,10 +58,10 @@ public class Status { public Optional<Version> vespaVersion() { return vespaVersion; } /** Returns a copy of this with the docker image changed */ - public Status withDockerImage(ContainerImage containerImage) { return new Status(reboot, vespaVersion, Optional.of(containerImage), failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } + public Status withDockerImage(DockerImage dockerImage) { return new Status(reboot, vespaVersion, Optional.of(dockerImage), failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** Returns the docker image the node is running, if known */ - public Optional<ContainerImage> dockerImage() { return dockerImage; } + public Optional<DockerImage> dockerImage() { return dockerImage; } public Status withIncreasedFailCount() { return new Status(reboot, vespaVersion, dockerImage, failCount + 1, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java index 5f31c8e9522..cc62ae67e84 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java @@ -5,7 +5,7 @@ import com.google.common.util.concurrent.UncheckedTimeoutException; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationLockException; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeType; @@ -492,11 +492,11 @@ public class CuratorDatabaseClient { // Docker images ----------------------------------------------------------- - public Map<NodeType, ContainerImage> readDockerImages() { + public Map<NodeType, DockerImage> readDockerImages() { return read(dockerImagesPath, NodeTypeDockerImagesSerializer::fromJson).orElseGet(TreeMap::new); } - public void writeDockerImages(Map<NodeType, ContainerImage> dockerImages) { + public void writeDockerImages(Map<NodeType, DockerImage> dockerImages) { NestedTransaction transaction = new NestedTransaction(); CuratorTransaction curatorTransaction = db.newCuratorTransactionIn(transaction); curatorTransaction.add(CuratorOperations.setData(dockerImagesPath.getAbsolute(), diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java index 98c35ec5464..37842115949 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java @@ -6,7 +6,7 @@ import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.ClusterMembership; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.NodeFlavors; @@ -291,14 +291,14 @@ public class NodeSerializer { return Optional.of(Version.fromString(object.asString())); } - private Optional<ContainerImage> dockerImageRepoFromSlime(Inspector object) { + private Optional<DockerImage> dockerImageRepoFromSlime(Inspector object) { if ( ! object.valid() || object.asString().isEmpty()) return Optional.empty(); - return Optional.of(ContainerImage.fromString(object.asString())); + return Optional.of(DockerImage.fromString(object.asString())); } - private Optional<ContainerImage> dockerImageFromSlime(Inspector object) { + private Optional<DockerImage> dockerImageFromSlime(Inspector object) { if ( ! object.valid()) return Optional.empty(); - return Optional.of(ContainerImage.fromString(object.asString())); + return Optional.of(DockerImage.fromString(object.asString())); } private Optional<Instant> instantFromSlime(Inspector object) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializer.java index 6621d48844e..6615dff24e5 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializer.java @@ -1,7 +1,7 @@ // Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.persistence; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeType; import com.yahoo.slime.Cursor; import com.yahoo.slime.Inspector; @@ -23,7 +23,7 @@ public class NodeTypeDockerImagesSerializer { private NodeTypeDockerImagesSerializer() {} - public static byte[] toJson(Map<NodeType, ContainerImage> dockerImages) { + public static byte[] toJson(Map<NodeType, DockerImage> dockerImages) { Slime slime = new Slime(); Cursor object = slime.setObject(); dockerImages.forEach((nodeType, dockerImage) -> @@ -35,11 +35,11 @@ public class NodeTypeDockerImagesSerializer { } } - public static Map<NodeType, ContainerImage> fromJson(byte[] data) { - Map<NodeType, ContainerImage> dockerImages = new TreeMap<>(); // Use TreeMap to sort by node type + public static Map<NodeType, DockerImage> fromJson(byte[] data) { + Map<NodeType, DockerImage> dockerImages = new TreeMap<>(); // Use TreeMap to sort by node type Inspector inspector = SlimeUtils.jsonToSlime(data).get(); inspector.traverse((ObjectTraverser) (key, value) -> - dockerImages.put(NodeSerializer.nodeTypeFromString(key), ContainerImage.fromString(value.asString()))); + dockerImages.put(NodeSerializer.nodeTypeFromString(key), DockerImage.fromString(value.asString()))); return dockerImages; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java index ee3ff22474f..3f55307d1f3 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImages.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.curator.Lock; import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient; @@ -26,7 +26,7 @@ public class DockerImages { private static final Logger log = Logger.getLogger(DockerImages.class.getName()); private final CuratorDatabaseClient db; - private final ContainerImage defaultImage; + private final DockerImage defaultImage; private final Duration cacheTtl; /** @@ -34,13 +34,13 @@ public class DockerImages { * unnecessary ZK reads. When getDockerImages change, some nodes may need to wait for TTL until they see the new target, * this is fine. */ - private volatile Supplier<Map<NodeType, ContainerImage>> dockerImages; + private volatile Supplier<Map<NodeType, DockerImage>> dockerImages; - public DockerImages(CuratorDatabaseClient db, ContainerImage defaultImage) { + public DockerImages(CuratorDatabaseClient db, DockerImage defaultImage) { this(db, defaultImage, defaultCacheTtl); } - DockerImages(CuratorDatabaseClient db, ContainerImage defaultImage, Duration cacheTtl) { + DockerImages(CuratorDatabaseClient db, DockerImage defaultImage, Duration cacheTtl) { this.db = db; this.defaultImage = defaultImage; this.cacheTtl = cacheTtl; @@ -53,29 +53,29 @@ public class DockerImages { } /** Returns the current docker images for each node type */ - public Map<NodeType, ContainerImage> getDockerImages() { + public Map<NodeType, DockerImage> getDockerImages() { return dockerImages.get(); } /** Returns the current docker image for given node type, or the type for corresponding child nodes * if it is a Docker host, or default */ - public ContainerImage dockerImageFor(NodeType type) { + public DockerImage dockerImageFor(NodeType type) { NodeType typeToUseForLookup = type.isHost() ? type.childNodeType() : type; return getDockerImages().getOrDefault(typeToUseForLookup, defaultImage); } /** Set the docker image for nodes of given type */ - public void setDockerImage(NodeType nodeType, Optional<ContainerImage> dockerImage) { + public void setDockerImage(NodeType nodeType, Optional<DockerImage> dockerImage) { if (nodeType.isHost()) { throw new IllegalArgumentException("Setting docker image for " + nodeType + " nodes is unsupported"); } try (Lock lock = db.lockDockerImages()) { - Map<NodeType, ContainerImage> dockerImages = db.readDockerImages(); + Map<NodeType, DockerImage> dockerImages = db.readDockerImages(); dockerImage.ifPresentOrElse(image -> dockerImages.put(nodeType, image), () -> dockerImages.remove(nodeType)); db.writeDockerImages(dockerImages); createCache(); // Throw away current cache - log.info("Set docker image for " + nodeType + " nodes to " + dockerImage.map(ContainerImage::asString).orElse(null)); + log.info("Set docker image for " + nodeType + " nodes to " + dockerImage.map(DockerImage::asString).orElse(null)); } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java index 3871ad6680a..19276a81ef8 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodePatcher.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.provision.restapi; import com.google.common.base.Suppliers; import com.yahoo.component.Version; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeResources; @@ -101,7 +101,7 @@ public class NodePatcher { case "currentDockerImage" : if (node.flavor().getType() != Flavor.Type.DOCKER_CONTAINER) throw new IllegalArgumentException("Docker image can only be set for docker containers"); - return node.with(node.status().withDockerImage(ContainerImage.fromString(asString(value)))); + return node.with(node.status().withDockerImage(DockerImage.fromString(asString(value)))); case "vespaVersion" : case "currentVespaVersion" : return node.with(node.status().withVespaVersion(Version.fromString(asString(value)))); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java index f469bd682f7..3efd6e417cb 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.provision.restapi; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.serialization.NetworkPortsSerializer; @@ -211,7 +211,7 @@ class NodesResponse extends HttpResponse { // Hack: For non-docker nodes, return current docker image as default prefix + current Vespa version // TODO: Remove current + wanted docker image from response for non-docker types - private Optional<ContainerImage> currentDockerImage(Node node) { + private Optional<DockerImage> currentDockerImage(Node node) { return node.status().dockerImage() .or(() -> Optional.of(node) .filter(n -> n.flavor().getType() != Flavor.Type.DOCKER_CONTAINER) diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java index a27b7d093fd..5080dafe2a5 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.provision.restapi; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.NodeFlavors; @@ -390,11 +390,11 @@ public class NodesV2ApiHandler extends LoggingRequestHandler { } if (dockerImageField.valid()) { - Optional<ContainerImage> dockerImage = Optional.of(dockerImageField.asString()) + Optional<DockerImage> dockerImage = Optional.of(dockerImageField.asString()) .filter(s -> !s.isEmpty()) - .map(ContainerImage::fromString); + .map(DockerImage::fromString); nodeRepository.dockerImages().setDockerImage(nodeType, dockerImage); - messageParts.add("docker image to " + dockerImage.map(ContainerImage::asString).orElse(null)); + messageParts.add("docker image to " + dockerImage.map(DockerImage::asString).orElse(null)); } if (messageParts.isEmpty()) { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java index bf993250253..f78560e3022 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java @@ -7,7 +7,7 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.InstanceName; @@ -63,7 +63,7 @@ public class MockNodeRepository extends NodeRepository { Clock.fixed(Instant.ofEpochMilli(123), ZoneId.of("Z")), Zone.defaultZone(), new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, @@ -92,14 +92,14 @@ public class MockNodeRepository extends NodeRepository { new Flavor(new NodeResources(1, 4, 100, 1, fast, local)), Optional.empty(), NodeType.tenant); node4 = node4.with(node4.status() .withVespaVersion(new Version("6.41.0")) - .withDockerImage(ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.41.0"))); + .withDockerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.41.0"))); nodes.add(node4); Node node5 = createNode("node5", "host5.yahoo.com", ipConfig(5), Optional.of("dockerhost2.yahoo.com"), new Flavor(new NodeResources(1, 8, 100, 1, slow, remote)), Optional.empty(), NodeType.tenant); nodes.add(node5.with(node5.status() .withVespaVersion(new Version("1.2.3")) - .withDockerImage(ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:1.2.3")))); + .withDockerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:1.2.3")))); nodes.add(createNode("node6", "host6.yahoo.com", ipConfig(6), Optional.empty(), @@ -114,7 +114,7 @@ public class MockNodeRepository extends NodeRepository { Status node10newStatus = node10.status(); node10newStatus = node10newStatus .withVespaVersion(Version.fromString("5.104.142")) - .withDockerImage(ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:5.104.142")); + .withDockerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:5.104.142")); node10 = node10.with(node10newStatus); nodes.add(node10); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java index 1a5a3995609..9b0500303d8 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTester.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeType; @@ -40,7 +40,7 @@ public class NodeRepositoryTester { clock, Zone.defaultZone(), new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java index 382b37332a1..59e0dad9720 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/CapacityCheckerTester.java @@ -11,7 +11,7 @@ import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; @@ -63,7 +63,7 @@ public class CapacityCheckerTester { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java index 3726e846103..f8e21ebbfce 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java @@ -6,7 +6,7 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; @@ -257,7 +257,7 @@ public class FailedExpirerTest { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-image"), + DockerImage.fromString("docker-image"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java index f339dc6732b..39e873ee110 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceTester.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.maintenance; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeType; @@ -40,7 +40,7 @@ public class MaintenanceTester { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java index 780e0a285ca..20c9d24d1b6 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/MetricsReporterTest.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.provision.maintenance; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; @@ -84,7 +84,7 @@ public class MetricsReporterTest { Clock.systemUTC(), Zone.defaultZone(), new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, @@ -153,7 +153,7 @@ public class MetricsReporterTest { Clock.systemUTC(), Zone.defaultZone(), new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java index c37eb58b501..435dcdf9223 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java @@ -5,7 +5,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; @@ -81,7 +81,7 @@ public class NodeFailTester { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java index af0bb1a6e2e..1ff00ff88a1 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java @@ -6,7 +6,7 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.InstanceName; @@ -60,7 +60,7 @@ public class OperatorChangeApplicationMaintainerTest { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java index 5095f21f0cd..099282205fe 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java @@ -6,7 +6,7 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Deployer; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; @@ -66,7 +66,7 @@ public class PeriodicApplicationMaintainerTest { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java index ee1328a1eea..bd92c2a9aa2 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java @@ -5,7 +5,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeResources; @@ -51,7 +51,7 @@ public class ReservationExpirerTest { clock, Zone.defaultZone(), new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java index e9a1808dcdb..4e675d6a3cc 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java @@ -7,7 +7,7 @@ import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Deployer; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostSpec; @@ -70,7 +70,7 @@ public class RetiredExpirerTest { clock, zone, new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java index 6641c5c94a0..6cd206cd5b9 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/SpareCapacityMaintainerTest.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.provision.maintenance; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; @@ -245,7 +245,7 @@ public class SpareCapacityMaintainerTest { new ManualClock(), new Zone(Environment.prod, RegionName.from("us-east-3")), new MockNameResolver().mockAnyLookup(), - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), new InMemoryFlagSource(), true, false, diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializerTest.java index 0633f70900e..9bfcf67324a 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeTypeDockerImagesSerializerTest.java @@ -1,7 +1,7 @@ // Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.persistence; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeType; import org.junit.Test; @@ -17,11 +17,11 @@ public class NodeTypeDockerImagesSerializerTest { @Test public void test_serialization() { - Map<NodeType, ContainerImage> images = new TreeMap<>(); - images.put(NodeType.host, ContainerImage.fromString("docker.domain.tld/my/repo:1.2.3")); - images.put(NodeType.confighost, ContainerImage.fromString("docker.domain.tld/my/image:2.1")); + Map<NodeType, DockerImage> images = new TreeMap<>(); + images.put(NodeType.host, DockerImage.fromString("docker.domain.tld/my/repo:1.2.3")); + images.put(NodeType.confighost, DockerImage.fromString("docker.domain.tld/my/image:2.1")); - Map<NodeType, ContainerImage> serialized = NodeTypeDockerImagesSerializer.fromJson(NodeTypeDockerImagesSerializer.toJson(images)); + Map<NodeType, DockerImage> serialized = NodeTypeDockerImagesSerializer.fromJson(NodeTypeDockerImagesSerializer.toJson(images)); assertEquals(images, serialized); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImagesTest.java index 47989baa162..cd6ae587b04 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ContainerImagesTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerImagesTest.java @@ -1,7 +1,7 @@ // Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.provisioning; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.flags.InMemoryFlagSource; @@ -14,18 +14,18 @@ import static org.junit.Assert.assertEquals; /** * @author mpolden */ -public class ContainerImagesTest { +public class DockerImagesTest { @Test public void image_selection() { var flagSource = new InMemoryFlagSource(); var tester = new ProvisioningTester.Builder().flagSource(flagSource).build(); - var proxyImage = ContainerImage.fromString("docker-registry.domain.tld:8080/dist/proxy"); + var proxyImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/proxy"); tester.nodeRepository().dockerImages().setDockerImage(NodeType.proxy, Optional.of(proxyImage)); // Host uses tenant default image (for preload purposes) - var defaultImage = ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"); + var defaultImage = DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"); var hosts = tester.makeReadyNodes(2, "default", NodeType.host); tester.deployZoneApp(); for (var host : hosts) { diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java index 0331ab7cf32..5c730912c49 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java @@ -7,7 +7,7 @@ import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostFilter; @@ -177,8 +177,8 @@ public class ProvisioningTest { HostSpec host1 = state1.container0.iterator().next(); Node node1 = tester.nodeRepository().getNode(host1.hostname()).get(); - ContainerImage containerImage = ContainerImage.fromString(dockerImageRepo).withTag(Version.fromString("1.2.3")); - tester.nodeRepository().write(node1.with(node1.status().withDockerImage(containerImage)), () -> {}); + DockerImage dockerImage = DockerImage.fromString(dockerImageRepo).withTag(Version.fromString("1.2.3")); + tester.nodeRepository().write(node1.with(node1.status().withDockerImage(dockerImage)), () -> {}); // redeploy SystemState state2 = prepare(application1, tester, 1, 1, 1 ,1 , false, defaultResources, "1.2.3", Optional.of(dockerImageRepo)); @@ -186,7 +186,7 @@ public class ProvisioningTest { host1 = state2.container0.iterator().next(); node1 = tester.nodeRepository().getNode(host1.hostname()).get(); - assertEquals(containerImage, node1.status().dockerImage().get()); + assertEquals(dockerImage, node1.status().dockerImage().get()); } @Test diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java index d41d79796f6..d56cae799b2 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java @@ -7,7 +7,7 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; -import com.yahoo.config.provision.ContainerImage; +import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.HostFilter; import com.yahoo.config.provision.HostSpec; @@ -103,7 +103,7 @@ public class ProvisioningTester { clock, zone, nameResolver, - ContainerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), + DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa"), flagSource, true, provisionServiceProvider.getHostProvisioner().isPresent(), |