From 6b24cd27aa5b81c7a4f57d255b9a1ed8a014129c Mon Sep 17 00:00:00 2001 From: Devashishbasu Date: Thu, 1 Feb 2024 10:28:10 +0530 Subject: [PATCH 1/2] parsing IPv6 literals support added 1.added IPv6 address 2.upated DOMAIN_REGEX for the IPv6 addresses 3.uncommented the related tests --- .../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..11f5a0647a 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", // 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 }) 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..d97c40e69b 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", // https://github.com/eclipse/jkube/issues/2541 //"registry.example.com/hello-world:@sha256:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9", // https://github.com/eclipse/jkube/issues/2545 }) void validImageNamesCompatibleWithAll(String name) { From bfd7c1275c1154b7c04c4605b49cece074a864de Mon Sep 17 00:00:00 2001 From: Devashishbasu Date: Thu, 1 Feb 2024 11:06:07 +0530 Subject: [PATCH 2/2] removing issue references --- .../ImageNameDistributionReferenceTest.java | 16 ++++++++-------- .../config/image/ImageNameORASReferenceTest.java | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) 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 11f5a0647a..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 d97c40e69b..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) {