diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2022-05-12 10:45:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-12 10:45:37 +0200 |
commit | 32e26201ca86681150eb47661ae551a1c188c594 (patch) | |
tree | f9a0c4230f1bccb341312b1dc1e2dd648e140070 /config-provisioning | |
parent | 3ae64956b57ee364807e5258da331bc156771a9e (diff) | |
parent | b69809180d764619264e88cb16979fb60cc9a23c (diff) |
Merge pull request #22558 from vespa-engine/revert-22546-freva/docker-image-parse
Revert "Improve docker image validation" MERGEOK
Diffstat (limited to 'config-provisioning')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java | 18 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java | 10 |
2 files changed, 10 insertions, 18 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java b/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java index 1dce521b520..bbcf4b48c1d 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/DockerImage.java @@ -24,9 +24,6 @@ public class DockerImage { this.registry = Objects.requireNonNull(registry, "registry must be non-null"); this.repository = Objects.requireNonNull(repository, "repository must be non-null"); this.tag = Objects.requireNonNull(tag, "tag must be non-null"); - - if (tag.isPresent() && tag.get().isBlank()) - throw new IllegalArgumentException("Set tag cannot be empty"); } /** Returns the registry-part of this, i.e. the host/port of the registry. */ @@ -61,8 +58,6 @@ public class DockerImage { /** Returns a copy of this with registry set to given value */ public DockerImage withRegistry(String registry) { - if (registry.indexOf('/') >= 0) - throw new IllegalArgumentException("Registry cannot container '/'"); return new DockerImage(registry, repository, tag); } @@ -91,6 +86,10 @@ public class DockerImage { return Objects.hash(registry, repository, tag); } + public static DockerImage from(String registry, String repository) { + return new DockerImage(registry, repository, Optional.empty()); + } + public static DockerImage fromString(String s) { if (s.isEmpty()) return EMPTY; @@ -99,13 +98,14 @@ public class DockerImage { String registry = s.substring(0, firstPathSeparator); String repository = s.substring(firstPathSeparator + 1); + if (repository.isEmpty()) throw new IllegalArgumentException("Repository must be non-empty in '" + s + "'"); int tagStart = repository.indexOf(':'); - Optional<String> tag = tagStart < 0 ? Optional.empty() : Optional.of(repository.substring(tagStart + 1)); + if (tagStart < 0) return new DockerImage(registry, repository, Optional.empty()); - if (tagStart >= 0) repository = repository.substring(0, tagStart); - if (repository.isEmpty()) throw new IllegalArgumentException("Repository must be non-empty in '" + s + "'"); - return new DockerImage(registry, repository, tag); + String tag = repository.substring(tagStart + 1); + repository = repository.substring(0, tagStart); + return new DockerImage(registry, repository, Optional.of(tag)); } } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java index ad21c6dca3b..71fd453aa26 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/DockerImageTest.java @@ -8,7 +8,6 @@ import java.util.Map; import java.util.Optional; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThrows; import static org.junit.Assert.fail; /** @@ -37,24 +36,17 @@ public class DockerImageTest { } @Test - public void registry_cannot_contain_slash() { - DockerImage image = DockerImage.fromString("registry.example.com/vespa/vespa"); - assertThrows(IllegalArgumentException.class, () -> image.withRegistry("my-registry/path")); - } - - @Test public void parse_invalid() { List<String> tests = List.of( "registry.example.com", "registry.example.com/", - "registry.example.com/repository:", "foo", "foo:1.2.3" ); for (var value : tests) { try { DockerImage.fromString(value); - fail("Expected failure for: " + value); + fail("Expected failure"); } catch (IllegalArgumentException ignored) { } } |