From 0dd4ca664fb44f2640fe0f2f04f264f2e50530bf Mon Sep 17 00:00:00 2001 From: Devashishbasu Date: Thu, 1 Feb 2024 10:28:10 +0530 Subject: [PATCH] parsing IPv6 literals support added 1.added IPv6 address 2.upated DOMAIN_REGEX for the IPv6 addresses 3.uncommented the related tests removing issue references --- .../jkube/kit/config/image/ImageName.java | 4 +++- .../ImageNameDistributionReferenceTest.java | 16 ++++++++-------- .../config/image/ImageNameORASReferenceTest.java | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java b/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java index 05a143b6a9..4aeb44444c 100644 --- a/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java +++ b/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java @@ -342,6 +342,7 @@ private boolean isRegistryValidPathComponent() { // https://github.com/docker/docker/blob/04da4041757370fb6f85510c8977c5a18ddae380/vendor/github.com/docker/distribution/reference/regexp.go#L25 private static final String DOMAIN_COMPONENT_REGEXP = "(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])"; + private static final String IPV6_ADDRESS_REGEXP = "\\[(?:[a-fA-F0-9:]+)\\]"; // ========================================================== @@ -352,7 +353,8 @@ private boolean isRegistryValidPathComponent() { private static final Pattern IMAGE_NAME_REGEXP = Pattern.compile(NAME_COMPONENT_REGEXP + "(?:(?:/" + NAME_COMPONENT_REGEXP + ")+)?"); // https://github.com/docker/docker/blob/04da4041757370fb6f85510c8977c5a18ddae380/vendor/github.com/docker/distribution/reference/regexp.go#L31 - private static final Pattern DOMAIN_REGEXP = Pattern.compile("^" + DOMAIN_COMPONENT_REGEXP + "(?:\\." + DOMAIN_COMPONENT_REGEXP + ")*(?::[0-9]+)?$"); + private static final Pattern DOMAIN_REGEXP = Pattern.compile("^(" + IPV6_ADDRESS_REGEXP + "|" + DOMAIN_COMPONENT_REGEXP + "(?:\\." + DOMAIN_COMPONENT_REGEXP + ")*)" + + "(?::[0-9]+)?$"); // https://github.com/docker/docker/blob/04da4041757370fb6f85510c8977c5a18ddae380/vendor/github.com/docker/distribution/reference/regexp.go#L37 private static final Pattern TAG_REGEXP = Pattern.compile("^[\\w][\\w.-]{0,127}$"); diff --git a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java index 46ac1d89e1..1b2bf3d740 100644 --- a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java +++ b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java @@ -72,14 +72,14 @@ class ImageNameDistributionReferenceTest { "192.168.0.1:8/debian", "192.168.0.2:25000/debian", "docker.io/1a3f5e7d9c1b3a5f7e9d1c3b5a7f9e1d3c5b7a9f1e3d5d7c9b1a3f5e7d9c1b3a", - //"[2001:db8::1]/repo", // https://github.com/eclipse/jkube/issues/2541 - //"[2001:db8:1:2:3:4:5:6]/repo:tag", // https://github.com/eclipse/jkube/issues/2541 - //"[2001:db8::1]:5000/repo", // https://github.com/eclipse/jkube/issues/2541 - //"[2001:db8::1]:5000/repo:tag", // https://github.com/eclipse/jkube/issues/2541 - //"[2001:db8::1]:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", // https://github.com/eclipse/jkube/issues/2541 - //"[2001:db8::1]:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", // https://github.com/eclipse/jkube/issues/2541 - //"[2001:db8::]:5000/repo", // https://github.com/eclipse/jkube/issues/2541 - //"[::1]:5000/repo", // https://github.com/eclipse/jkube/issues/2541 + "[2001:db8::1]/repo", + "[2001:db8:1:2:3:4:5:6]/repo:tag", + "[2001:db8::1]:5000/repo", + "[2001:db8::1]:5000/repo:tag", + "[2001:db8::1]:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "[2001:db8::1]:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "[2001:db8::]:5000/repo", + "[::1]:5000/repo", }) void validNames(String name) { // Given diff --git a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameORASReferenceTest.java b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameORASReferenceTest.java index 7795afedd9..dc4c1fab17 100644 --- a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameORASReferenceTest.java +++ b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameORASReferenceTest.java @@ -42,7 +42,7 @@ class ImageNameORASReferenceTest { "registry.example.com/hello-world:v2@sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9", "localhost:5000/hello-world:v2@sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9", "127.0.0.1:5000/hello-world:v2@sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9", - //"[::1]:5000/hello-world:v1", // https://github.com/eclipse/jkube/issues/2541 + "[::1]:5000/hello-world:v1", //"registry.example.com/hello-world:@sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9", // https://github.com/eclipse/jkube/issues/2545 }) void validImageNamesCompatibleWithAll(String name) {