summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2022-05-03 16:06:14 +0200
committerValerij Fredriksen <valerijf@yahooinc.com>2022-05-05 14:55:53 +0200
commit9624701b8f3fa93779aa6fb352aacebb6dd138ac (patch)
treec2f490284b52d9f76b8cc608714ee0ab752fae9a /controller-api
parent25e3c3a9ac64309593433e87ade9d608c4c2c2e4 (diff)
Generalize ContainerImageExpirer to ArtifactExpirer
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java4
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/Artifact.java (renamed from controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java)38
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/ArtifactRegistry.java20
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/package-info.java (renamed from controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java)2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java20
5 files changed, 46 insertions, 38 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
index be32b74591b..c258f088eeb 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/ServiceRegistry.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.controller.api.integration;
import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.controller.api.identifiers.ControllerVersion;
import com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveService;
+import com.yahoo.vespa.hosted.controller.api.integration.artifact.ArtifactRegistry;
import com.yahoo.vespa.hosted.controller.api.integration.athenz.AccessControlService;
import com.yahoo.vespa.hosted.controller.api.integration.aws.CloudEventFetcher;
import com.yahoo.vespa.hosted.controller.api.integration.aws.ResourceTagger;
@@ -14,7 +15,6 @@ import com.yahoo.vespa.hosted.controller.api.integration.billing.PlanRegistry;
import com.yahoo.vespa.hosted.controller.api.integration.certificates.EndpointCertificateProvider;
import com.yahoo.vespa.hosted.controller.api.integration.certificates.EndpointCertificateValidator;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServer;
-import com.yahoo.vespa.hosted.controller.api.integration.container.ContainerRegistry;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationStore;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ArtifactRepository;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterCloud;
@@ -99,7 +99,7 @@ public interface ServiceRegistry {
BillingDatabaseClient billingDatabase();
- ContainerRegistry containerRegistry();
+ ArtifactRegistry containerRegistry();
TenantSecretService tenantSecretService();
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/Artifact.java
index 9652eeef530..94997b7dbba 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerImage.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/Artifact.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.container;
+package com.yahoo.vespa.hosted.controller.api.integration.artifact;
import com.yahoo.component.Version;
@@ -8,23 +8,31 @@ import java.util.Objects;
import java.util.Optional;
/**
- * A container image.
+ * A registry artifact (e.g. container image or RPM)
*
* @author mpolden
*/
-public class ContainerImage {
+public class Artifact {
private final String id;
- private final String registry;
- private final String repository;
+ private final Optional<String> registry;
+ private final Optional<String> repository;
private final Instant createdAt;
private final Version version;
private final Optional<Architecture> architecture;
- public ContainerImage(String id, String registry, String repository, Instant createdAt, Version version, Optional<Architecture> architecture) {
+ public Artifact(String id, String registry, String repository, Instant createdAt, Version version, Optional<Architecture> architecture) {
this.id = Objects.requireNonNull(id);
- this.registry = Objects.requireNonNull(registry);
- this.repository = Objects.requireNonNull(repository);
+ this.registry = Optional.of(registry);
+ this.repository = Optional.of(repository);
+ this.createdAt = Objects.requireNonNull(createdAt);
+ this.version = Objects.requireNonNull(version);
+ }
+
+ public Artifact(String id, Instant createdAt, Version version) {
+ this.id = Objects.requireNonNull(id);
+ this.registry = Optional.empty();
+ this.repository = Optional.empty();
this.createdAt = Objects.requireNonNull(createdAt);
this.version = Objects.requireNonNull(version);
this.architecture = Objects.requireNonNull(architecture);
@@ -35,13 +43,13 @@ public class ContainerImage {
return id;
}
- /** The registry holding this image */
- public String registry() {
+ /** The registry holding this artifact */
+ public Optional<String> registry() {
return registry;
}
- /** Repository of this image */
- public String repository() {
+ /** Repository of this artifact */
+ public Optional<String> repository() {
return repository;
}
@@ -69,7 +77,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;
+ Artifact that = (Artifact) o;
return id.equals(that.id) &&
registry.equals(that.registry) &&
repository.equals(that.repository) &&
@@ -85,8 +93,8 @@ public class ContainerImage {
@Override
public String toString() {
- return "container image " + repository + " [registry=" + registry + ",version=" + version.toFullString() +
- ",createdAt=" + createdAt + ",architecture=" + architecture.map(Enum::name).orElse("<none>") + "]";
+ String name = repository.isPresent() ? registry.get() + "/" + repository.get() : id;
+ return "artifact " + name + " [version=" + version.toFullString() + ",createdAt=" + createdAt + ",architecture=" + architecture.map(Enum::name).orElse("<none>") + "]";
}
public enum Architecture {
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/ArtifactRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/ArtifactRegistry.java
new file mode 100644
index 00000000000..8d3c19083c9
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/ArtifactRegistry.java
@@ -0,0 +1,20 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.artifact;
+
+
+import java.util.List;
+
+/**
+ * A registry of artifacts (e.g. container image or RPM).
+ *
+ * @author mpolden
+ */
+public interface ArtifactRegistry {
+
+ /** Delete all given artifacts */
+ void deleteAll(List<Artifact> images);
+
+ /** Returns a list of all artifacts in this system */
+ List<Artifact> list();
+
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/package-info.java
index ca1f6afc5db..8e12be06583 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/package-info.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/artifact/package-info.java
@@ -3,6 +3,6 @@
* @author mpolden
*/
@ExportPackage
-package com.yahoo.vespa.hosted.controller.api.integration.container;
+package com.yahoo.vespa.hosted.controller.api.integration.artifact;
import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java
deleted file mode 100644
index 78757ad995a..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/container/ContainerRegistry.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.container;
-
-
-import java.util.List;
-
-/**
- * A registry of container images.
- *
- * @author mpolden
- */
-public interface ContainerRegistry {
-
- /** Delete all given images */
- void deleteAll(List<ContainerImage> images);
-
- /** Returns a list of all container images in this system */
- List<ContainerImage> list();
-
-}